BamlRecordHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Markup / BamlRecordHelper.cs / 1305600 / BamlRecordHelper.cs

                            /****************************************************************************\ 
*
* File: BamlRecordHelper.cs
*
* Copyright (C) 2006 by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 
 
using System;
using System.Diagnostics; 


#if PBTCOMPILER
namespace MS.Internal.Markup 
#else
using System.Windows; 
namespace System.Windows.Markup 
#endif
{ 
    // Helper functions for baml records

    static internal class BamlRecordHelper
    { 
#if !PBTCOMPILER
        // 
        // This method checks to see if the baml record type is one of the records used 
        // to build up the map table, e.g. type information.
        // 
        static internal bool IsMapTableRecordType( BamlRecordType bamlRecordType )
        {
            switch( bamlRecordType )
            { 
                case BamlRecordType.PIMapping:
                case BamlRecordType.AssemblyInfo: 
                case BamlRecordType.TypeInfo: 
                case BamlRecordType.TypeSerializerInfo:
                case BamlRecordType.AttributeInfo: 
                case BamlRecordType.StringInfo:
                    return true;

                default: 
                    return false;
            } 
        } 

        internal static bool IsDebugBamlRecordType(BamlRecordType recordType) 
        {
            if (   recordType == BamlRecordType.LineNumberAndPosition
                || recordType == BamlRecordType.LinePosition )
            { 
                return true;
            } 
            return false; 
        }
 
        // Does the given Baml Record have a Debug Baml Record in its Next link.
        internal static bool HasDebugExtensionRecord(bool isDebugBamlStream, BamlRecord bamlRecord)
        {
            if (isDebugBamlStream && (bamlRecord.Next != null)) 
            {
                if (IsDebugBamlRecordType(bamlRecord.Next.RecordType)) 
                { 
                    return true;
                } 
            }
            return false;
        }
#endif 

        internal static bool DoesRecordTypeHaveDebugExtension(BamlRecordType recordType) 
        { 
            switch(recordType)
            { 
                case BamlRecordType.ElementStart:
                case BamlRecordType.ElementEnd:
                case BamlRecordType.Property:
                case BamlRecordType.PropertyComplexStart: 
                case BamlRecordType.PropertyArrayStart:
                case BamlRecordType.PropertyIListStart: 
                case BamlRecordType.PropertyIDictionaryStart: 
                case BamlRecordType.XmlnsProperty:
                case BamlRecordType.PIMapping: 
                case BamlRecordType.PropertyTypeReference:
                case BamlRecordType.PropertyWithExtension:
                case BamlRecordType.PropertyWithConverter:
                case BamlRecordType.KeyElementStart: 
                case BamlRecordType.ConnectionId:
                case BamlRecordType.ContentProperty: 
                case BamlRecordType.StaticResourceStart: 
                case BamlRecordType.PresentationOptionsAttribute:
                    return true; 

                case BamlRecordType.DocumentStart:
                case BamlRecordType.DocumentEnd:                // End record
                case BamlRecordType.PropertyCustom:             // The "custom" size of this is a problem 
                case BamlRecordType.PropertyComplexEnd:         // End record
                case BamlRecordType.PropertyArrayEnd:           // End record 
                case BamlRecordType.PropertyIListEnd:           // End record 
                case BamlRecordType.PropertyIDictionaryEnd:     // End record
                case BamlRecordType.LiteralContent:             // Not needed 
                case BamlRecordType.Text:                       // Not needed
                case BamlRecordType.TextWithConverter:          // Not common enough
                case BamlRecordType.RoutedEvent:                // Not common enough
                case BamlRecordType.ClrEvent:                   // Not common enough 
                case BamlRecordType.XmlAttribute:               // Not common enough
                case BamlRecordType.ProcessingInstruction:      // Not common enough 
                case BamlRecordType.Comment:                    // Not common enough 
                case BamlRecordType.DefTag:                     // Not common enough
                case BamlRecordType.DefAttribute:               // Not common enough 
                case BamlRecordType.EndAttributes:              // Not common enough
                case BamlRecordType.AssemblyInfo:               // Info records (in general) don't advance file position
                case BamlRecordType.TypeInfo:                   // Info records (in general) don't advance file position
                case BamlRecordType.TypeSerializerInfo:         // Not common enough 
                case BamlRecordType.AttributeInfo:              // Info records (in general) don't advance file position
                case BamlRecordType.StringInfo:                 // Info records (in general) don't advance file position 
                case BamlRecordType.PropertyStringReference:    // Not common enough 
                case BamlRecordType.DeferableContentStart:      // This would complicate Deferable Content Size
                case BamlRecordType.ConstructorParametersStart: // Not Needed 
                case BamlRecordType.ConstructorParametersEnd:   // End record
                case BamlRecordType.ConstructorParameterType:   // Not Needed
                case BamlRecordType.NamedElementStart:          // Not common enough
                case BamlRecordType.TextWithId:                 // Not Needed 
                case BamlRecordType.LineNumberAndPosition:      // This would become recursive
                case BamlRecordType.LinePosition:               // This would become recursive 
                case BamlRecordType.DefAttributeKeyString: 
                case BamlRecordType.DefAttributeKeyType:
                case BamlRecordType.KeyElementEnd: 
                case BamlRecordType.StaticResourceEnd:
                case BamlRecordType.StaticResourceId:
                case BamlRecordType.OptimizedStaticResource:
                case BamlRecordType.PropertyWithStaticResourceId: 
                    return false;
 
                default: 
                    Debug.Assert(false, "Unhandled case in DoesRecordTypeHaveDebugExtension");
                    return false; 
            }
        }
    }
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
/****************************************************************************\ 
*
* File: BamlRecordHelper.cs
*
* Copyright (C) 2006 by Microsoft Corporation.  All rights reserved. 
*
\***************************************************************************/ 
 
using System;
using System.Diagnostics; 


#if PBTCOMPILER
namespace MS.Internal.Markup 
#else
using System.Windows; 
namespace System.Windows.Markup 
#endif
{ 
    // Helper functions for baml records

    static internal class BamlRecordHelper
    { 
#if !PBTCOMPILER
        // 
        // This method checks to see if the baml record type is one of the records used 
        // to build up the map table, e.g. type information.
        // 
        static internal bool IsMapTableRecordType( BamlRecordType bamlRecordType )
        {
            switch( bamlRecordType )
            { 
                case BamlRecordType.PIMapping:
                case BamlRecordType.AssemblyInfo: 
                case BamlRecordType.TypeInfo: 
                case BamlRecordType.TypeSerializerInfo:
                case BamlRecordType.AttributeInfo: 
                case BamlRecordType.StringInfo:
                    return true;

                default: 
                    return false;
            } 
        } 

        internal static bool IsDebugBamlRecordType(BamlRecordType recordType) 
        {
            if (   recordType == BamlRecordType.LineNumberAndPosition
                || recordType == BamlRecordType.LinePosition )
            { 
                return true;
            } 
            return false; 
        }
 
        // Does the given Baml Record have a Debug Baml Record in its Next link.
        internal static bool HasDebugExtensionRecord(bool isDebugBamlStream, BamlRecord bamlRecord)
        {
            if (isDebugBamlStream && (bamlRecord.Next != null)) 
            {
                if (IsDebugBamlRecordType(bamlRecord.Next.RecordType)) 
                { 
                    return true;
                } 
            }
            return false;
        }
#endif 

        internal static bool DoesRecordTypeHaveDebugExtension(BamlRecordType recordType) 
        { 
            switch(recordType)
            { 
                case BamlRecordType.ElementStart:
                case BamlRecordType.ElementEnd:
                case BamlRecordType.Property:
                case BamlRecordType.PropertyComplexStart: 
                case BamlRecordType.PropertyArrayStart:
                case BamlRecordType.PropertyIListStart: 
                case BamlRecordType.PropertyIDictionaryStart: 
                case BamlRecordType.XmlnsProperty:
                case BamlRecordType.PIMapping: 
                case BamlRecordType.PropertyTypeReference:
                case BamlRecordType.PropertyWithExtension:
                case BamlRecordType.PropertyWithConverter:
                case BamlRecordType.KeyElementStart: 
                case BamlRecordType.ConnectionId:
                case BamlRecordType.ContentProperty: 
                case BamlRecordType.StaticResourceStart: 
                case BamlRecordType.PresentationOptionsAttribute:
                    return true; 

                case BamlRecordType.DocumentStart:
                case BamlRecordType.DocumentEnd:                // End record
                case BamlRecordType.PropertyCustom:             // The "custom" size of this is a problem 
                case BamlRecordType.PropertyComplexEnd:         // End record
                case BamlRecordType.PropertyArrayEnd:           // End record 
                case BamlRecordType.PropertyIListEnd:           // End record 
                case BamlRecordType.PropertyIDictionaryEnd:     // End record
                case BamlRecordType.LiteralContent:             // Not needed 
                case BamlRecordType.Text:                       // Not needed
                case BamlRecordType.TextWithConverter:          // Not common enough
                case BamlRecordType.RoutedEvent:                // Not common enough
                case BamlRecordType.ClrEvent:                   // Not common enough 
                case BamlRecordType.XmlAttribute:               // Not common enough
                case BamlRecordType.ProcessingInstruction:      // Not common enough 
                case BamlRecordType.Comment:                    // Not common enough 
                case BamlRecordType.DefTag:                     // Not common enough
                case BamlRecordType.DefAttribute:               // Not common enough 
                case BamlRecordType.EndAttributes:              // Not common enough
                case BamlRecordType.AssemblyInfo:               // Info records (in general) don't advance file position
                case BamlRecordType.TypeInfo:                   // Info records (in general) don't advance file position
                case BamlRecordType.TypeSerializerInfo:         // Not common enough 
                case BamlRecordType.AttributeInfo:              // Info records (in general) don't advance file position
                case BamlRecordType.StringInfo:                 // Info records (in general) don't advance file position 
                case BamlRecordType.PropertyStringReference:    // Not common enough 
                case BamlRecordType.DeferableContentStart:      // This would complicate Deferable Content Size
                case BamlRecordType.ConstructorParametersStart: // Not Needed 
                case BamlRecordType.ConstructorParametersEnd:   // End record
                case BamlRecordType.ConstructorParameterType:   // Not Needed
                case BamlRecordType.NamedElementStart:          // Not common enough
                case BamlRecordType.TextWithId:                 // Not Needed 
                case BamlRecordType.LineNumberAndPosition:      // This would become recursive
                case BamlRecordType.LinePosition:               // This would become recursive 
                case BamlRecordType.DefAttributeKeyString: 
                case BamlRecordType.DefAttributeKeyType:
                case BamlRecordType.KeyElementEnd: 
                case BamlRecordType.StaticResourceEnd:
                case BamlRecordType.StaticResourceId:
                case BamlRecordType.OptimizedStaticResource:
                case BamlRecordType.PropertyWithStaticResourceId: 
                    return false;
 
                default: 
                    Debug.Assert(false, "Unhandled case in DoesRecordTypeHaveDebugExtension");
                    return false; 
            }
        }
    }
} 


// 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