Welcome to mirror list, hosted at ThFree Co, Russian Federation.

BaseTreeIterator.cs « NewXml « System « System.Data « referencesource « class « mcs - github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: c06feef60f4885b5a0cc479a44984338110bfdab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//------------------------------------------------------------------------------
// <copyright file="BaseTreeIterator.cs" company="Microsoft">
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// </copyright>                                                                
// <owner current="true" primary="true">[....]</owner>
// <owner current="true" primary="false">[....]</owner>
//------------------------------------------------------------------------------
namespace System.Xml {

    // Iterates over non-attribute nodes
    internal abstract class BaseTreeIterator {
        protected DataSetMapper   mapper;

        internal BaseTreeIterator( DataSetMapper mapper ) {
            this.mapper      = mapper;
        }

        internal abstract void Reset();

        internal abstract XmlNode CurrentNode { get; }

        internal abstract bool Next();
        internal abstract bool NextRight();

        internal bool NextRowElement() {
            while ( Next() ) {
                if ( OnRowElement() )
                    return true;
            }
            return false;
        }

        internal bool NextRightRowElement() {
            if ( NextRight() ) {
                if ( OnRowElement() )
                    return true;
                return NextRowElement();
            }
            return false;
        }

        // Returns true if the current node is on a row element (head of a region)
        internal bool OnRowElement() {
            XmlBoundElement be = CurrentNode as XmlBoundElement;
            return (be != null) && (be.Row != null);
        }
    }
}