ReaderContextStackData.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Markup / ReaderContextStackData.cs / 1 / ReaderContextStackData.cs

                            /****************************************************************************\ 
*
* File: ReaderContextStackData.cs
*
* Copyright (C) 2003 by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 
 
using System;
using System.Collections; 
using System.Reflection;
using System.Diagnostics;

namespace System.Windows.Markup 
{
    // Data maintained on the reader's context stack.  The root of the tree is at the bottom 
    // of the stack. 
    internal class ReaderContextStackData
    { 

        //
        // NOTE:  If you add a field here, be sure to update ClearData
        // 
        ReaderFlags  _contextFlags;
        object       _contextData; 
        object       _contextKey; 
        string        _uid;
        string        _name; 
        object       _contentProperty;
        Type         _expectedType;
        short        _expectedTypeId;
        bool         _createUsingTypeConverter; 
        //
        // NOTE:  If you add a field here, be sure to update ClearData 
        // 

 


        // Returns just the part of the flags field corresponding to the context type
        internal ReaderFlags ContextType 
        {
            get { return (ReaderFlags)(_contextFlags & ReaderFlags.ContextTypeMask); } 
        } 

        // The data object for this point in the stack.  Typically the element at 
        // this scoping level
        internal object ObjectData
        {
            get { return _contextData; } 
            set { _contextData = value; }
        } 
 
        // The key attribute defined for the current context, whose parent context is expected
        // to be an IDictionary 
        internal object Key
        {
            get { return _contextKey; }
            set { _contextKey = value; } 
        }
 
        // The x:Uid of this object, if it has one and has been read yet. 
        internal string Uid
        { 
            get { return _uid; }
            set { _uid = value; }
        }
 
        // The x:Name (or Name) of this object, if it has one and has been read yet.
        // Alternatively if this context object represents a property this member 
        // gives you the name of the property. This is used to find a fallback value 
        // for this property in the event of an exception during property parsing.
        internal string ElementNameOrPropertyName 
        {
            get { return _name; }
            set { _name = value; }
        } 

        internal object ContentProperty 
        { 
            get { return _contentProperty; }
            set { _contentProperty = value; } 
        }

        // If an object has not yet been created at this point, this is the type of
        // element to created 
        internal Type ExpectedType
        { 
            get { return _expectedType; } 
            set { _expectedType = value; }
        } 

        // If an object has not yet been created at this point, this is the Baml type id
        // of the element.  This is used for faster creation of known types.
        internal short ExpectedTypeId 
        {
            get { return _expectedTypeId; } 
            set { _expectedTypeId = value; } 
        }
 
        // This object is expected to be created using a TypeConverter.  If this
        //  is true, the following are also expected to be true:
        // -ObjectData is null
        // -ExpectedType is non-null 
        // -ExpectedTypeId is non-null
        internal bool CreateUsingTypeConverter 
        { 
            get { return _createUsingTypeConverter; }
            set { _createUsingTypeConverter = value; } 
        }

        // Context identifying what this reader stack item represents
        internal ReaderFlags ContextFlags 
        {
            get { return _contextFlags; } 
            set { _contextFlags = value; } 
        }
 
        // True if this element has not yet been added to the tree, but needs to be.
        internal bool NeedToAddToTree
        {
            get { return CheckFlag(ReaderFlags.NeedToAddToTree); } 
        }
 
        // simple helper method to remove the NeedToAddToTree flag and add the AddedToTree flag 
        internal void MarkAddedToTree()
        { 
            ContextFlags = ((ContextFlags | ReaderFlags.AddedToTree) & ~ReaderFlags.NeedToAddToTree);
        }

        // simple helper method that returns true if the context contains the given flag or flags. 
        // If multiple flags are passed in, the context must contain all the flags.
        internal bool CheckFlag(ReaderFlags flag) 
        { 
            return (ContextFlags & flag) == flag;
        } 

        // simple helper method adds the flag to the context
        internal void SetFlag(ReaderFlags flag)
        { 
            ContextFlags |= flag;
        } 
 
        // simple helper method that removes the flag from the context
        internal void ClearFlag(ReaderFlags flag) 
        {
            ContextFlags &= ~flag;
        }
 
        // Helper to determine if this represents an object element.
        internal bool IsObjectElement 
        { 
            get
            { 
                return ContextType == ReaderFlags.DependencyObject
                       ||
                       ContextType == ReaderFlags.ClrObject;
            } 
        }
 
        // Clear all the fields on this instance before it put into the factory cache 
        internal void ClearData()
        { 
            _contextFlags = 0;
            _contextData = null;
            _contextKey = null;
            _contentProperty = null; 
            _expectedType = null;
            _expectedTypeId = 0; 
            _createUsingTypeConverter = false; 
            _uid = null;
            _name = null; 
        }

    }
 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK