SubstitutionList.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 / QIL / SubstitutionList.cs / 1 / SubstitutionList.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
using System; 
using System.Collections; 
using System.Diagnostics;
 
namespace System.Xml.Xsl.Qil {

    /// 
    /// Data structure for use in CloneAndReplace 
    /// 
    /// Isolates the many QilNode classes from changes in 
    /// the underlying data structure. 
    internal sealed class SubstitutionList {
        // 
        private ArrayList s;

        public SubstitutionList() {
            this.s = new ArrayList(4); 
        }
 
        ///  
        /// Add a substituion pair
        ///  
        /// a node to be replaced
        /// its replacement
        public void AddSubstitutionPair(QilNode find, QilNode replace) {
            s.Add(find); 
            s.Add(replace);
        } 
 
        /// 
        /// Remove the last a substituion pair 
        /// 
        public void RemoveLastSubstitutionPair() {
            s.RemoveRange(s.Count - 2, 2);
        } 

        ///  
        /// Remove the last N substitution pairs 
        /// 
        public void RemoveLastNSubstitutionPairs(int n) { 
            Debug.Assert(n >= 0, "n must be nonnegative");
            if (n > 0) {
                n *= 2;
                s.RemoveRange(s.Count - n, n); 
            }
        } 
 
        /// 
        /// Find the replacement for a node 
        /// 
        /// the node to replace
        /// null if no replacement is found
        public QilNode FindReplacement(QilNode n) { 
            Debug.Assert(s.Count % 2 == 0);
            for (int i = s.Count-2; i >= 0; i-=2) 
                if (s[i] == n) 
                    return (QilNode)s[i+1];
            return null; 
        }
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
using System; 
using System.Collections; 
using System.Diagnostics;
 
namespace System.Xml.Xsl.Qil {

    /// 
    /// Data structure for use in CloneAndReplace 
    /// 
    /// Isolates the many QilNode classes from changes in 
    /// the underlying data structure. 
    internal sealed class SubstitutionList {
        // 
        private ArrayList s;

        public SubstitutionList() {
            this.s = new ArrayList(4); 
        }
 
        ///  
        /// Add a substituion pair
        ///  
        /// a node to be replaced
        /// its replacement
        public void AddSubstitutionPair(QilNode find, QilNode replace) {
            s.Add(find); 
            s.Add(replace);
        } 
 
        /// 
        /// Remove the last a substituion pair 
        /// 
        public void RemoveLastSubstitutionPair() {
            s.RemoveRange(s.Count - 2, 2);
        } 

        ///  
        /// Remove the last N substitution pairs 
        /// 
        public void RemoveLastNSubstitutionPairs(int n) { 
            Debug.Assert(n >= 0, "n must be nonnegative");
            if (n > 0) {
                n *= 2;
                s.RemoveRange(s.Count - n, n); 
            }
        } 
 
        /// 
        /// Find the replacement for a node 
        /// 
        /// the node to replace
        /// null if no replacement is found
        public QilNode FindReplacement(QilNode n) { 
            Debug.Assert(s.Count % 2 == 0);
            for (int i = s.Count-2; i >= 0; i-=2) 
                if (s[i] == n) 
                    return (QilNode)s[i+1];
            return null; 
        }
    }
}

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