ValueOfAction.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / ValueOfAction.cs / 1 / ValueOfAction.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 class ValueOfAction : CompiledAction {
        private const int ResultStored = 2; 
 
        private int    selectKey = Compiler.InvalidQueryKey;
        private bool   disableOutputEscaping; 

        private static Action s_BuiltInRule = new BuiltInRuleTextAction();

        internal static Action BuiltInRule() { 
            Debug.Assert(s_BuiltInRule != null);
            return s_BuiltInRule; 
        } 

        internal override void Compile(Compiler compiler) { 
            CompileAttributes(compiler);
            CheckRequiredAttribute(compiler, selectKey != Compiler.InvalidQueryKey, Keywords.s_Select);
            CheckEmpty(compiler);
        } 

        internal override bool CompileAttribute(Compiler compiler) { 
            string name   = compiler.Input.LocalName; 
            string value  = compiler.Input.Value;
 
            if (Keywords.Equals(name, compiler.Atoms.Select)) {
                this.selectKey = compiler.AddQuery(value);
            }
            else if (Keywords.Equals(name, compiler.Atoms.DisableOutputEscaping)) { 
                this.disableOutputEscaping = compiler.GetYesNo(value);
            } 
            else { 
                return false;
            } 

            return true;
        }
 
        internal override void Execute(Processor processor, ActionFrame frame) {
            Debug.Assert(processor != null && frame != null); 
 
            switch (frame.State) {
            case Initialized: 
                Debug.Assert(frame != null);
                Debug.Assert(frame.NodeSet != null);

                string value = processor.ValueOf(frame, this.selectKey); 

                if (processor.TextEvent(value, disableOutputEscaping)) { 
                    frame.Finished(); 
                }
                else { 
                    frame.StoredOutput = value;
                    frame.State        = ResultStored;
                }
                break; 

            case ResultStored: 
                Debug.Assert(frame.StoredOutput != null); 
                processor.TextEvent(frame.StoredOutput);
                frame.Finished(); 
                break;

            default:
                Debug.Fail("Invalid ValueOfAction execution state"); 
                break;
            } 
        } 
    }
 
    internal class BuiltInRuleTextAction : Action {
        private const int ResultStored = 2;
        internal override void Execute(Processor processor, ActionFrame frame) {
            Debug.Assert(processor != null && frame != null); 

            switch (frame.State) { 
            case Initialized: 
                Debug.Assert(frame != null);
                Debug.Assert(frame.NodeSet != null); 

                string value = processor.ValueOf(frame.NodeSet.Current);

                if (processor.TextEvent(value, /*disableOutputEscaping:*/false)) { 
                    frame.Finished();
                } 
                else { 
                    frame.StoredOutput = value;
                    frame.State        = ResultStored; 
                }
                break;

            case ResultStored: 
                Debug.Assert(frame.StoredOutput != null);
                processor.TextEvent(frame.StoredOutput); 
                frame.Finished(); 
                break;
 
            default:
                Debug.Fail("Invalid BuiltInRuleTextAction execution state");
                break;
            } 
        }
    } 
} 

// 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 class ValueOfAction : CompiledAction {
        private const int ResultStored = 2; 
 
        private int    selectKey = Compiler.InvalidQueryKey;
        private bool   disableOutputEscaping; 

        private static Action s_BuiltInRule = new BuiltInRuleTextAction();

        internal static Action BuiltInRule() { 
            Debug.Assert(s_BuiltInRule != null);
            return s_BuiltInRule; 
        } 

        internal override void Compile(Compiler compiler) { 
            CompileAttributes(compiler);
            CheckRequiredAttribute(compiler, selectKey != Compiler.InvalidQueryKey, Keywords.s_Select);
            CheckEmpty(compiler);
        } 

        internal override bool CompileAttribute(Compiler compiler) { 
            string name   = compiler.Input.LocalName; 
            string value  = compiler.Input.Value;
 
            if (Keywords.Equals(name, compiler.Atoms.Select)) {
                this.selectKey = compiler.AddQuery(value);
            }
            else if (Keywords.Equals(name, compiler.Atoms.DisableOutputEscaping)) { 
                this.disableOutputEscaping = compiler.GetYesNo(value);
            } 
            else { 
                return false;
            } 

            return true;
        }
 
        internal override void Execute(Processor processor, ActionFrame frame) {
            Debug.Assert(processor != null && frame != null); 
 
            switch (frame.State) {
            case Initialized: 
                Debug.Assert(frame != null);
                Debug.Assert(frame.NodeSet != null);

                string value = processor.ValueOf(frame, this.selectKey); 

                if (processor.TextEvent(value, disableOutputEscaping)) { 
                    frame.Finished(); 
                }
                else { 
                    frame.StoredOutput = value;
                    frame.State        = ResultStored;
                }
                break; 

            case ResultStored: 
                Debug.Assert(frame.StoredOutput != null); 
                processor.TextEvent(frame.StoredOutput);
                frame.Finished(); 
                break;

            default:
                Debug.Fail("Invalid ValueOfAction execution state"); 
                break;
            } 
        } 
    }
 
    internal class BuiltInRuleTextAction : Action {
        private const int ResultStored = 2;
        internal override void Execute(Processor processor, ActionFrame frame) {
            Debug.Assert(processor != null && frame != null); 

            switch (frame.State) { 
            case Initialized: 
                Debug.Assert(frame != null);
                Debug.Assert(frame.NodeSet != null); 

                string value = processor.ValueOf(frame.NodeSet.Current);

                if (processor.TextEvent(value, /*disableOutputEscaping:*/false)) { 
                    frame.Finished();
                } 
                else { 
                    frame.StoredOutput = value;
                    frame.State        = ResultStored; 
                }
                break;

            case ResultStored: 
                Debug.Assert(frame.StoredOutput != null);
                processor.TextEvent(frame.StoredOutput); 
                frame.Finished(); 
                break;
 
            default:
                Debug.Fail("Invalid BuiltInRuleTextAction execution state");
                break;
            } 
        }
    } 
} 

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