Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / ParserStack.cs / 1305600 / ParserStack.cs
/****************************************************************************\ * * File: ParserStack.cs * * Purpose: ParserStack...once was in XamlReaderHelper.cs * * History: * 11/21/08: [....] Moved from XamlReaderHelper.cs as we were replacing the parser. * * Copyright (C) 2008 by Microsoft Corporation. All rights reserved. * \***************************************************************************/ using System; using System.Xml; using System.Xml.Serialization; using System.IO; using System.Text; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Reflection; using System.Globalization; using MS.Utility; using System.Collections.Specialized; using Microsoft.Win32; using System.Runtime.InteropServices; using MS.Internal; using System.Windows.Markup; #if !PBTCOMPILER using System.Windows; using System.Windows.Documents; using System.Windows.Media; using System.Windows.Shapes; #endif #if PBTCOMPILER namespace MS.Internal.Markup #else namespace System.Windows.Markup #endif { ////// Parser Context stack /// The built-in Stack class doesn't let you do things like look at nodes beyond the top of the stack... /// so we'll use this instead. Note that this is not a complete stack implementation -- if you try to /// convert to array or some such, you'll be missing a couple elements. But this is plenty for our purposes. /// Main goal is to track current/parent context with a minimum of overhead. /// This class is internal so it can be shared with the BamlRecordReader /// internal class ParserStack : ArrayList { ////// Creates a default ParserStack /// internal ParserStack() : base() { } ////// Creates a clone. /// private ParserStack(ICollection collection) : base(collection) { } #region StackOverrides public void Push(object o) { Add(o); } public object Pop() { object o = this[Count - 1]; RemoveAt(Count - 1); return o; } #if !PBTCOMPILER public object Peek() { // Die if peeking on empty stack return this[Count - 1]; } #endif public override object Clone() { return new ParserStack(this); } #endregion // StackOverrides #region Properties ////// Returns the Current Context on the stack /// internal object CurrentContext { get { return Count > 0 ? this[Count - 1] : null; } } ////// Returns the Parent of the Current Context /// internal object ParentContext { get { return Count > 1 ? this[Count - 2] : null; } } ////// Returns the GrandParent of the Current Context /// internal object GrandParentContext { get { return Count > 2 ? this[Count - 3] : null; } } #if !PBTCOMPILER ////// Returns the GreatGrandParent of the Current Context /// internal object GreatGrandParentContext { get { return Count > 3 ? this[Count - 4] : null; } } #endif #endregion // Properties } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- OleDbErrorCollection.cs
- EditorBrowsableAttribute.cs
- TextParentUndoUnit.cs
- TableLayoutPanelCellPosition.cs
- XmlILIndex.cs
- ByeMessageCD1.cs
- Version.cs
- HtmlTableCellCollection.cs
- SqlCrossApplyToCrossJoin.cs
- WebPartVerbCollection.cs
- MatrixStack.cs
- TextEffect.cs
- DesignerExtenders.cs
- Application.cs
- FileUtil.cs
- WebBrowserUriTypeConverter.cs
- linebase.cs
- SHA384CryptoServiceProvider.cs
- InheritanceRules.cs
- DirectoryObjectSecurity.cs
- ListMarkerSourceInfo.cs
- NamespaceCollection.cs
- DictionaryEntry.cs
- ResolveCriteria11.cs
- ItemMap.cs
- ResourceSet.cs
- ToolBarOverflowPanel.cs
- WindowsHyperlink.cs
- ConfigXmlSignificantWhitespace.cs
- util.cs
- Listbox.cs
- BrowserTree.cs
- CodeTypeParameterCollection.cs
- InputManager.cs
- wgx_sdk_version.cs
- EditorBrowsableAttribute.cs
- XmlSchemaChoice.cs
- httpstaticobjectscollection.cs
- CachedPathData.cs
- LinkButton.cs
- HtmlTableCellCollection.cs
- RequestCachePolicyConverter.cs
- DataGridViewDataConnection.cs
- DrawingContextWalker.cs
- ReliabilityContractAttribute.cs
- BindingContext.cs
- CustomError.cs
- HtmlLabelAdapter.cs
- OracleDataAdapter.cs
- ExclusiveCanonicalizationTransform.cs
- RelationshipWrapper.cs
- WebPartsSection.cs
- EventManager.cs
- StylusTip.cs
- MenuTracker.cs
- EntityClassGenerator.cs
- UserValidatedEventArgs.cs
- StreamWithDictionary.cs
- IncrementalCompileAnalyzer.cs
- XPathNodeIterator.cs
- AuthenticationException.cs
- ProfileServiceManager.cs
- LifetimeServices.cs
- ExpressionBindingCollection.cs
- Schema.cs
- WsatServiceCertificate.cs
- RegexStringValidatorAttribute.cs
- IconConverter.cs
- ProcessModelInfo.cs
- MenuStrip.cs
- AsnEncodedData.cs
- DiscoveryViaBehavior.cs
- IncrementalHitTester.cs
- TextEndOfLine.cs
- BindingList.cs
- RemoteAsymmetricSignatureFormatter.cs
- HttpClientCertificate.cs
- CodeLinePragma.cs
- LoginView.cs
- Button.cs
- WebResourceUtil.cs
- metadatamappinghashervisitor.cs
- ListViewItemSelectionChangedEvent.cs
- CounterSetInstance.cs
- BitmapEffectInput.cs
- HtmlSelect.cs
- HtmlToClrEventProxy.cs
- GroupedContextMenuStrip.cs
- InvalidFilterCriteriaException.cs
- MembershipSection.cs
- BasicExpressionVisitor.cs
- IgnoreFlushAndCloseStream.cs
- WebAdminConfigurationHelper.cs
- DoubleCollection.cs
- DataContractJsonSerializer.cs
- LogicalExpr.cs
- FormClosingEvent.cs
- PagerStyle.cs
- XmlChildNodes.cs
- IncrementalReadDecoders.cs