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
- EditorAttributeInfo.cs
- XmlChoiceIdentifierAttribute.cs
- ReturnValue.cs
- MailDefinition.cs
- DrawingContextWalker.cs
- Point.cs
- ImageUrlEditor.cs
- Compilation.cs
- EdmProperty.cs
- LogSwitch.cs
- TemplateBindingExtensionConverter.cs
- SimplePropertyEntry.cs
- RtfControls.cs
- ObjectDataSource.cs
- ValueExpressions.cs
- SqlDataSource.cs
- NonBatchDirectoryCompiler.cs
- DecimalAnimationBase.cs
- TypeReference.cs
- HtmlContainerControl.cs
- DataObjectFieldAttribute.cs
- ActivityFunc.cs
- _NetworkingPerfCounters.cs
- TagMapCollection.cs
- InternalSafeNativeMethods.cs
- SecurityPolicySection.cs
- CommandBinding.cs
- Lookup.cs
- FieldToken.cs
- Button.cs
- CacheVirtualItemsEvent.cs
- RichTextBoxConstants.cs
- SmtpMail.cs
- CircleHotSpot.cs
- ParseNumbers.cs
- SiteMapSection.cs
- CryptoStream.cs
- MenuItemStyle.cs
- Point3DKeyFrameCollection.cs
- mda.cs
- ObjectQuery_EntitySqlExtensions.cs
- ServerProtocol.cs
- StaticFileHandler.cs
- Tag.cs
- InkPresenter.cs
- _CookieModule.cs
- AvtEvent.cs
- ClassDataContract.cs
- InputProcessorProfiles.cs
- RuntimeCompatibilityAttribute.cs
- Visual.cs
- QilInvokeEarlyBound.cs
- CreatingCookieEventArgs.cs
- Int16KeyFrameCollection.cs
- DbQueryCommandTree.cs
- MessageEncoder.cs
- URL.cs
- EntityWrapper.cs
- UIElementAutomationPeer.cs
- RuleInfoComparer.cs
- ToolStripRenderEventArgs.cs
- DataSourceCache.cs
- WebPartMenuStyle.cs
- InstallerTypeAttribute.cs
- Regex.cs
- FileDialog_Vista_Interop.cs
- TraceContextRecord.cs
- Vector3DConverter.cs
- UnknownWrapper.cs
- MsdtcWrapper.cs
- EdmError.cs
- SizeAnimationBase.cs
- XmlSchemaSimpleType.cs
- DiagnosticTraceSource.cs
- BindingMAnagerBase.cs
- AdapterUtil.cs
- WebZone.cs
- SqlCacheDependencyDatabase.cs
- BrowserDefinition.cs
- Triangle.cs
- DispatchChannelSink.cs
- DoubleLinkListEnumerator.cs
- MouseOverProperty.cs
- SocketException.cs
- UTF7Encoding.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- DataGridViewColumnTypePicker.cs
- ApplicationCommands.cs
- Marshal.cs
- PageContent.cs
- XmlSecureResolver.cs
- URI.cs
- SqlParameterizer.cs
- ZipIOEndOfCentralDirectoryBlock.cs
- ApplicationInfo.cs
- SecurityManager.cs
- FilterEventArgs.cs
- XhtmlBasicCalendarAdapter.cs
- ListViewDataItem.cs
- ASCIIEncoding.cs