TemplateXamlTreeBuilder.cs source code in C# .NET

Source code for the .NET framework in C#



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

* File: TemplateXamlTreeBuilder.cs
* Purpose: Class that builds a template object from XAML 
* History: 
*    11/22/04:    [....]      Created 
* Copyright (C) 2004 by Microsoft Corporation.  All rights reserved. 

using System; 
using System.Xml;
using System.IO; 
using System.Windows; 
using System.Text;
using System.Collections; 
using System.ComponentModel;

using System.Diagnostics;
using System.Reflection; 
using System.Windows.Threading;
using MS.Utility; 

namespace System.Windows.Markup 
    /// XamlTree builder is the TreeBuilder implementation that loads a Tree
    /// from XAML. 
    internal class TemplateXamlTreeBuilder : XamlTreeBuilder 

#region Constructors 

        /// Constructor.  Set up associated baml writer and xaml parser to
        /// create the triumvarate needed for parsing a template block.  This is 
        /// the main method to call to create the needed object graph for
        /// parsing. 
        public TemplateXamlTreeBuilder(
            ParserContext                parserContext, 
            XamlReaderHelper             tokenReader,
            ReadWriteStreamManager       streamManager,
            ParserStack                  bamlReaderStack,
            ArrayList                    rootList) 
            Debug.Assert(null != parserContext, "ParserContext is null"); 
            Debug.Assert(null != tokenReader, "TokenReader is null"); 
            Debug.Assert(null != parserContext.XamlTypeMapper, "ParserContext.XamlTypeMapper is null");
            Debug.Assert(null != streamManager, "StreamManager is null"); 

            // Fetch the previous BamlRecordReader
            XamlTreeBuilderBamlRecordWriter previousBamlRecordWriter =
            BamlRecordReader previousBamlRecordReader = previousBamlRecordWriter.TreeBuilder.RecordReader;
            XamlParseMode = tokenReader.XamlParseMode; 

            Parser = new TemplateXamlParser(this, tokenReader, 
            Parser.StreamManager = streamManager;
            Parser.XamlParseMode = XamlParseMode;
            RecordWriter = new XamlTreeBuilderBamlRecordWriter(this,
                             streamManager.WriterStream, parserContext, true /*isSerializer*/ ); 
            // Give Writer to the Parser, since it can't be passed in constructor due to
            // circular dependency. 
            Parser.BamlRecordWriter = RecordWriter;

            // The BamlRecordReader needs its own parser context
            ParserContext readerParserContext = previousBamlRecordReader.ParserContext; 

            RecordReader = new TemplateBamlRecordReader(streamManager.ReaderStream, 
                                                     null, null, 
                                                     bamlReaderStack, rootList); 


#endregion Constructors
#region Overrides 

        ///  Forward parsing directive onto xaml parser.
        ///  An array containing the root objects in the XAML stream 
        public override object ParseFragment() 
            // Tell the parser the starting depth

            // its okay for root to be null if its an empty file or the parse
            // was stopped.
            return GetRoot(); 
#endregion Overrides 

        /// Forward the processing of a xaml node to the parser.  This is done when there is
        /// an out-of-band record that needs to be added to the baml stream, such as the
        /// start of a Template tag.
        internal void ProcessXamlNode(XamlNode xamlNode)
            bool cleanup = false; 
            bool done = false;
            Parser.ProcessXamlNode(xamlNode, ref cleanup, ref done); 


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