XPathSelectionIterator.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 / Xml / System / Xml / XPath / Internal / XPathSelectionIterator.cs / 1305376 / XPathSelectionIterator.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace MS.Internal.Xml.XPath { 
    using System;
    using System.Xml; 
    using System.Xml.XPath;
    using System.Diagnostics;
    using System.Globalization;
 
    // We need this wrapper object to:
    //      1. Calculate position 
    //      2. Protect internal query.Current from user who may call MoveNext(). 
    internal class XPathSelectionIterator : ResetableIterator {
        private XPathNavigator nav; 
        private Query          query;
        private int            position;

        internal XPathSelectionIterator(XPathNavigator nav, Query query) { 
            this.nav = nav.Clone();
            this.query = query; 
        } 

        protected XPathSelectionIterator(XPathSelectionIterator it) { 
            this.nav   = it.nav.Clone();
            this.query = (Query) it.query.Clone();
            this.position = it.position;
        } 

        public override void Reset() { 
            this.query.Reset(); 
        }
 
        public override bool MoveNext() {
            XPathNavigator n = query.Advance();
 	        if( n != null ) {
                position++; 
                if (!nav.MoveTo(n)) {
		            nav = n.Clone(); 
                } 
                return true;
            } 
            return false;
        }

        public override int            Count      { get { return query.Count; } } 
        public override XPathNavigator Current    { get { return nav; } }
        public override int CurrentPosition       { get { return position;  } } 
        public override XPathNodeIterator Clone() { return new XPathSelectionIterator(this); } 
    }
} 

// 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;
    using System.Xml; 
    using System.Xml.XPath;
    using System.Diagnostics;
    using System.Globalization;
 
    // We need this wrapper object to:
    //      1. Calculate position 
    //      2. Protect internal query.Current from user who may call MoveNext(). 
    internal class XPathSelectionIterator : ResetableIterator {
        private XPathNavigator nav; 
        private Query          query;
        private int            position;

        internal XPathSelectionIterator(XPathNavigator nav, Query query) { 
            this.nav = nav.Clone();
            this.query = query; 
        } 

        protected XPathSelectionIterator(XPathSelectionIterator it) { 
            this.nav   = it.nav.Clone();
            this.query = (Query) it.query.Clone();
            this.position = it.position;
        } 

        public override void Reset() { 
            this.query.Reset(); 
        }
 
        public override bool MoveNext() {
            XPathNavigator n = query.Advance();
 	        if( n != null ) {
                position++; 
                if (!nav.MoveTo(n)) {
		            nav = n.Clone(); 
                } 
                return true;
            } 
            return false;
        }

        public override int            Count      { get { return query.Count; } } 
        public override XPathNavigator Current    { get { return nav; } }
        public override int CurrentPosition       { get { return position;  } } 
        public override XPathNodeIterator Clone() { return new XPathSelectionIterator(this); } 
    }
} 

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