CopyNamespacesAction.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / CopyNamespacesAction.cs / 1305376 / CopyNamespacesAction.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml.Xsl.XsltOld { 
    using Res = System.Xml.Utils.Res;
    using System; 
    using System.Diagnostics;
    using System.Xml;
    using System.Xml.XPath;
 
    internal sealed class CopyNamespacesAction : Action {
        private const int BeginEvent    = 2; 
        private const int TextEvent     = 3; 
        private const int EndEvent      = 4;
        private const int Advance       = 5; 

        private static CopyNamespacesAction s_Action = new CopyNamespacesAction();

        internal static CopyNamespacesAction GetAction() { 
            Debug.Assert(s_Action != null);
            return s_Action; 
        } 

        internal override void Execute(Processor processor, ActionFrame frame) { 
            Debug.Assert(processor != null && frame != null);

            while (processor.CanContinue) {
                switch (frame.State) { 
                case Initialized:
                    if (frame.Node.MoveToFirstNamespace(XPathNamespaceScope.ExcludeXml) == false) { 
                        frame.Finished(); 
                        break;
                    } 

                    frame.State   = BeginEvent;
                    goto case BeginEvent;
 
                case BeginEvent:
                    Debug.Assert(frame.State == BeginEvent); 
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace); 

                    if (processor.BeginEvent(XPathNodeType.Namespace, null, frame.Node.LocalName, frame.Node.Value, false) == false) { 
                        // This one wasn't output
                        break;
                    }
                    frame.State = EndEvent; 
                    continue;
 
                case EndEvent: 
                    Debug.Assert(frame.State == EndEvent);
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace); 

                    if (processor.EndEvent(XPathNodeType.Namespace) == false) {
                        // This one wasn't output
                        break; 
                    }
                    frame.State = Advance; 
                    continue; 

                case Advance: 
                    Debug.Assert(frame.State == Advance);
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace);

                    if (frame.Node.MoveToNextNamespace(XPathNamespaceScope.ExcludeXml)) { 
                        frame.State = BeginEvent;
                        continue; 
                    } 
                    else {
                        frame.Node.MoveToParent(); 
                        frame.Finished();
                        break;
                    }
                } 
                break;
            }// while 
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml.Xsl.XsltOld { 
    using Res = System.Xml.Utils.Res;
    using System; 
    using System.Diagnostics;
    using System.Xml;
    using System.Xml.XPath;
 
    internal sealed class CopyNamespacesAction : Action {
        private const int BeginEvent    = 2; 
        private const int TextEvent     = 3; 
        private const int EndEvent      = 4;
        private const int Advance       = 5; 

        private static CopyNamespacesAction s_Action = new CopyNamespacesAction();

        internal static CopyNamespacesAction GetAction() { 
            Debug.Assert(s_Action != null);
            return s_Action; 
        } 

        internal override void Execute(Processor processor, ActionFrame frame) { 
            Debug.Assert(processor != null && frame != null);

            while (processor.CanContinue) {
                switch (frame.State) { 
                case Initialized:
                    if (frame.Node.MoveToFirstNamespace(XPathNamespaceScope.ExcludeXml) == false) { 
                        frame.Finished(); 
                        break;
                    } 

                    frame.State   = BeginEvent;
                    goto case BeginEvent;
 
                case BeginEvent:
                    Debug.Assert(frame.State == BeginEvent); 
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace); 

                    if (processor.BeginEvent(XPathNodeType.Namespace, null, frame.Node.LocalName, frame.Node.Value, false) == false) { 
                        // This one wasn't output
                        break;
                    }
                    frame.State = EndEvent; 
                    continue;
 
                case EndEvent: 
                    Debug.Assert(frame.State == EndEvent);
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace); 

                    if (processor.EndEvent(XPathNodeType.Namespace) == false) {
                        // This one wasn't output
                        break; 
                    }
                    frame.State = Advance; 
                    continue; 

                case Advance: 
                    Debug.Assert(frame.State == Advance);
                    Debug.Assert(frame.Node.NodeType == XPathNodeType.Namespace);

                    if (frame.Node.MoveToNextNamespace(XPathNamespaceScope.ExcludeXml)) { 
                        frame.State = BeginEvent;
                        continue; 
                    } 
                    else {
                        frame.Node.MoveToParent(); 
                        frame.Finished();
                        break;
                    }
                } 
                break;
            }// while 
        } 
    }
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

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