Code:
/ 4.0 / 4.0 / 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. /****************************************************************************\ * * 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
- Item.cs
- IgnoreSectionHandler.cs
- StronglyTypedResourceBuilder.cs
- WorkItem.cs
- CodeExporter.cs
- PanelStyle.cs
- DbExpressionVisitor_TResultType.cs
- RepeaterItemEventArgs.cs
- Bidi.cs
- BaseUriWithWildcard.cs
- ToolStripContentPanel.cs
- EditorZoneBase.cs
- CustomWebEventKey.cs
- ArglessEventHandlerProxy.cs
- AutoResetEvent.cs
- NavigationEventArgs.cs
- SamlAttribute.cs
- BreakRecordTable.cs
- GroupStyle.cs
- TextMessageEncoder.cs
- WaitHandleCannotBeOpenedException.cs
- RecommendedAsConfigurableAttribute.cs
- FormsAuthentication.cs
- WebContext.cs
- latinshape.cs
- ClientUrlResolverWrapper.cs
- SamlAssertion.cs
- SiteMembershipCondition.cs
- SecurityTokenRequirement.cs
- DataGridTextColumn.cs
- TextEffectCollection.cs
- SafeProcessHandle.cs
- WSIdentityFaultException.cs
- SecurityDescriptor.cs
- Single.cs
- TextTreeUndo.cs
- PropertyInformation.cs
- UniformGrid.cs
- SqlInfoMessageEvent.cs
- TypeConverter.cs
- Events.cs
- ComplexTypeEmitter.cs
- ItemCheckedEvent.cs
- UnsafeNativeMethodsPenimc.cs
- DataControlCommands.cs
- DataGridViewCellCollection.cs
- Timeline.cs
- BitmapEffectvisualstate.cs
- DPCustomTypeDescriptor.cs
- DefaultEventAttribute.cs
- MouseEvent.cs
- DbConnectionClosed.cs
- TreeBuilder.cs
- oledbconnectionstring.cs
- RegexReplacement.cs
- Single.cs
- XmlAttribute.cs
- _SpnDictionary.cs
- DataQuery.cs
- SingleTagSectionHandler.cs
- TypedTableGenerator.cs
- HttpRequestWrapper.cs
- IsolatedStorageFileStream.cs
- DbConnectionHelper.cs
- InputMethod.cs
- FileBasedResourceGroveler.cs
- BackStopAuthenticationModule.cs
- SchemaType.cs
- BufferedStream.cs
- WorkflowRuntimeServiceElement.cs
- Span.cs
- CornerRadiusConverter.cs
- MailWebEventProvider.cs
- InstanceDataCollectionCollection.cs
- ListView.cs
- TableTextElementCollectionInternal.cs
- TableSectionStyle.cs
- SendParametersContent.cs
- BinaryFormatter.cs
- TableRowCollection.cs
- ComponentDispatcher.cs
- XmlResolver.cs
- _CacheStreams.cs
- HuffmanTree.cs
- ApplicationActivator.cs
- SimpleBitVector32.cs
- InvalidCastException.cs
- SelectionRange.cs
- GroupAggregateExpr.cs
- DocumentGridContextMenu.cs
- MultipleViewProviderWrapper.cs
- DataGridItemEventArgs.cs
- DuplicateWaitObjectException.cs
- TextBoxDesigner.cs
- BuilderPropertyEntry.cs
- UnwrappedTypesXmlSerializerManager.cs
- SByteConverter.cs
- DataGridViewCellMouseEventArgs.cs
- WebPartAddingEventArgs.cs
- TextInfo.cs