Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DescendantQuery.cs
Go to the documentation of this file.
2
4
5internal sealed class DescendantQuery : DescendantBaseQuery
6{
8
9 internal DescendantQuery(Query qyParent, string Name, string Prefix, XPathNodeType Type, bool matchSelf, bool abbrAxis)
10 : base(qyParent, Name, Prefix, Type, matchSelf, abbrAxis)
11 {
12 }
13
15 : base(other)
16 {
17 _nodeIterator = Query.Clone(other._nodeIterator);
18 }
19
20 public override void Reset()
21 {
22 _nodeIterator = null;
23 base.Reset();
24 }
25
26 public override XPathNavigator Advance()
27 {
28 while (true)
29 {
30 if (_nodeIterator == null)
31 {
32 position = 0;
33 XPathNavigator xPathNavigator = qyInput.Advance();
34 if (xPathNavigator == null)
35 {
36 return null;
37 }
38 if (base.NameTest)
39 {
40 if (base.TypeTest == XPathNodeType.ProcessingInstruction)
41 {
42 _nodeIterator = new IteratorFilter(xPathNavigator.SelectDescendants(base.TypeTest, matchSelf), base.Name);
43 }
44 else
45 {
46 _nodeIterator = xPathNavigator.SelectDescendants(base.Name, base.Namespace, matchSelf);
47 }
48 }
49 else
50 {
51 _nodeIterator = xPathNavigator.SelectDescendants(base.TypeTest, matchSelf);
52 }
53 }
55 {
56 break;
57 }
58 _nodeIterator = null;
59 }
60 position++;
62 return currentNode;
63 }
64
65 public override XPathNodeIterator Clone()
66 {
67 return new DescendantQuery(this);
68 }
69}
override XPathNavigator Advance()
override XPathNodeIterator Clone()
DescendantQuery(Query qyParent, string Name, string Prefix, XPathNodeType Type, bool matchSelf, bool abbrAxis)
XPathNavigator Advance()
static Query Clone(Query input)
Definition Query.cs:66
virtual XPathNodeIterator SelectDescendants(XPathNodeType type, bool matchSelf)