XPathDescendantIterator.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathDescendantIterator.cs / 1 / XPathDescendantIterator.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace MS.Internal.Xml.XPath { 
    using System.Xml.XPath;
 
    internal class XPathDescendantIterator: XPathAxisIterator {
        private int level = 0;

        public XPathDescendantIterator(XPathNavigator nav, XPathNodeType type, bool matchSelf) : base(nav, type, matchSelf) {} 
        public XPathDescendantIterator(XPathNavigator nav, string name, string namespaceURI, bool matchSelf) : base(nav, name, namespaceURI, matchSelf) {}
 
        public XPathDescendantIterator(XPathDescendantIterator it) : base(it) { 
            this.level = it.level;
        } 

        public override XPathNodeIterator Clone() {
            return new XPathDescendantIterator(this);
        } 

        public override bool MoveNext() { 
            if (first) { 
                first = false;
                if (matchSelf && Matches) { 
                    position = 1;
                    return true;
                }
            } 

            while (true) { 
                if (nav.MoveToFirstChild()) { 
                    level++;
                } else { 
                    while (true) {
                        if (level == 0) {
                            return false;
                        } 
                        if (nav.MoveToNext()) {
                            break; 
                        } 
                        nav.MoveToParent();
                        level--; 
                    }
                }

                if (Matches) { 
                    position++;
                    return true; 
                } 
            }
        } 
    }
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace MS.Internal.Xml.XPath { 
    using System.Xml.XPath;
 
    internal class XPathDescendantIterator: XPathAxisIterator {
        private int level = 0;

        public XPathDescendantIterator(XPathNavigator nav, XPathNodeType type, bool matchSelf) : base(nav, type, matchSelf) {} 
        public XPathDescendantIterator(XPathNavigator nav, string name, string namespaceURI, bool matchSelf) : base(nav, name, namespaceURI, matchSelf) {}
 
        public XPathDescendantIterator(XPathDescendantIterator it) : base(it) { 
            this.level = it.level;
        } 

        public override XPathNodeIterator Clone() {
            return new XPathDescendantIterator(this);
        } 

        public override bool MoveNext() { 
            if (first) { 
                first = false;
                if (matchSelf && Matches) { 
                    position = 1;
                    return true;
                }
            } 

            while (true) { 
                if (nav.MoveToFirstChild()) { 
                    level++;
                } else { 
                    while (true) {
                        if (level == 0) {
                            return false;
                        } 
                        if (nav.MoveToNext()) {
                            break; 
                        } 
                        nav.MoveToParent();
                        level--; 
                    }
                }

                if (Matches) { 
                    position++;
                    return true; 
                } 
            }
        } 
    }
}

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