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
- XmlWriter.cs
- SoapSchemaExporter.cs
- Empty.cs
- SerializationInfo.cs
- ComplexObject.cs
- SqlInternalConnectionTds.cs
- SemaphoreFullException.cs
- ObjectManager.cs
- SrgsGrammarCompiler.cs
- FrameworkElementAutomationPeer.cs
- PlainXmlWriter.cs
- RelationshipEntry.cs
- WindowsRichEditRange.cs
- StreamResourceInfo.cs
- OleStrCAMarshaler.cs
- DesignerAdapterUtil.cs
- InputMethod.cs
- XslException.cs
- CopyAttributesAction.cs
- SendingRequestEventArgs.cs
- Throw.cs
- NativeObjectSecurity.cs
- AssemblyNameProxy.cs
- IisTraceListener.cs
- WindowsGraphicsCacheManager.cs
- HtmlInputPassword.cs
- TextBoxAutoCompleteSourceConverter.cs
- _Win32.cs
- FlowDocumentPaginator.cs
- AsymmetricAlgorithm.cs
- QueryCursorEventArgs.cs
- Debug.cs
- TypeHelper.cs
- PersonalizationAdministration.cs
- StateItem.cs
- AppSettingsReader.cs
- cryptoapiTransform.cs
- SelectionRangeConverter.cs
- ImplicitInputBrush.cs
- Tokenizer.cs
- EffectiveValueEntry.cs
- BrowserCapabilitiesFactoryBase.cs
- InternalSafeNativeMethods.cs
- XmlElementAttribute.cs
- RecordBuilder.cs
- OpCodes.cs
- ResourceReferenceExpressionConverter.cs
- AutomationElement.cs
- TextBoxBase.cs
- HostExecutionContextManager.cs
- OracleEncoding.cs
- VisualBasicSettingsHandler.cs
- WorkflowMarkupSerializationException.cs
- JoinCqlBlock.cs
- OleDbReferenceCollection.cs
- SiteMapDataSource.cs
- TypeInfo.cs
- SignatureHelper.cs
- UnescapedXmlDiagnosticData.cs
- ObjectParameter.cs
- DataServiceQueryOfT.cs
- DynamicResourceExtensionConverter.cs
- WaitHandle.cs
- Types.cs
- WrappedOptions.cs
- RawStylusInputReport.cs
- ServiceChannelProxy.cs
- StorageAssociationSetMapping.cs
- InteropBitmapSource.cs
- PathFigureCollectionValueSerializer.cs
- XmlSchemaExternal.cs
- BrushConverter.cs
- CustomExpressionEventArgs.cs
- QueryOptionExpression.cs
- SourceChangedEventArgs.cs
- CTreeGenerator.cs
- ButtonBase.cs
- UserControlCodeDomTreeGenerator.cs
- SessionPageStateSection.cs
- TextServicesCompartmentContext.cs
- ExecutionScope.cs
- TemplateKey.cs
- StringUtil.cs
- OleDbReferenceCollection.cs
- XmlSerializer.cs
- AndCondition.cs
- storepermission.cs
- ProcessInfo.cs
- AssemblyHelper.cs
- InternalConfigRoot.cs
- ConnectionPoint.cs
- WithParamAction.cs
- GridProviderWrapper.cs
- TypeConverterHelper.cs
- WebPartZone.cs
- PagesSection.cs
- SafeNativeMethodsOther.cs
- TableItemStyle.cs
- DynamicDiscoSearcher.cs
- RouteCollection.cs