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
- VirtualPath.cs
- PreservationFileReader.cs
- StrongBox.cs
- SafeProcessHandle.cs
- AuthenticationModulesSection.cs
- StringSource.cs
- NameGenerator.cs
- EventProviderWriter.cs
- Semaphore.cs
- M3DUtil.cs
- SamlConstants.cs
- GeneralTransform3DTo2DTo3D.cs
- AttributeUsageAttribute.cs
- Mouse.cs
- EventMappingSettingsCollection.cs
- ExtendedPropertyInfo.cs
- SafeTimerHandle.cs
- OutputCacheProfileCollection.cs
- PerformanceCounterManager.cs
- Point3DAnimationUsingKeyFrames.cs
- SqlDataSourceSelectingEventArgs.cs
- LineBreakRecord.cs
- CompoundFileStreamReference.cs
- CustomError.cs
- MethodSignatureGenerator.cs
- WebPartAddingEventArgs.cs
- QueryComponents.cs
- WebConfigurationHost.cs
- SystemPens.cs
- EditCommandColumn.cs
- CompensatableSequenceActivity.cs
- ProfileGroupSettings.cs
- KeyedCollection.cs
- ItemType.cs
- SelectionRangeConverter.cs
- SoapFault.cs
- ProjectionCamera.cs
- RightNameExpirationInfoPair.cs
- CommandBinding.cs
- PageContent.cs
- SystemIcmpV6Statistics.cs
- XmlEnumAttribute.cs
- TemplatePagerField.cs
- ZipIOLocalFileBlock.cs
- BitConverter.cs
- CompilerState.cs
- StringConverter.cs
- DefaultAssemblyResolver.cs
- InputBuffer.cs
- PersistChildrenAttribute.cs
- GeneralTransform3D.cs
- RangeExpression.cs
- Win32Native.cs
- FeatureManager.cs
- GridViewRowPresenterBase.cs
- ListViewSelectEventArgs.cs
- SessionEndingCancelEventArgs.cs
- VectorConverter.cs
- DbReferenceCollection.cs
- ToolStripPanelSelectionGlyph.cs
- DateTimeConstantAttribute.cs
- Int16Storage.cs
- BoolExpressionVisitors.cs
- HttpConfigurationSystem.cs
- Geometry3D.cs
- ComPlusTypeLoader.cs
- MultipleViewPatternIdentifiers.cs
- XmlCharType.cs
- MruCache.cs
- ExecutionContext.cs
- ChangesetResponse.cs
- CodeDomSerializerBase.cs
- TransformPattern.cs
- IImplicitResourceProvider.cs
- PropertyEmitter.cs
- MultiByteCodec.cs
- SafeTokenHandle.cs
- DtrList.cs
- ManualWorkflowSchedulerService.cs
- ToolStripGrip.cs
- DataGridTableCollection.cs
- SmiEventStream.cs
- LinqDataSourceHelper.cs
- XmlUtil.cs
- ListItem.cs
- DataGridViewCellStyleConverter.cs
- ThreadExceptionDialog.cs
- HwndProxyElementProvider.cs
- ProcessHostFactoryHelper.cs
- InlineUIContainer.cs
- JsonServiceDocumentSerializer.cs
- RestHandler.cs
- HttpResponseWrapper.cs
- PersistNameAttribute.cs
- DataObjectSettingDataEventArgs.cs
- ToolStripOverflow.cs
- StrokeFIndices.cs
- MimeMapping.cs
- ItemMap.cs
- FloaterParagraph.cs