Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
UnionExpr.cs
Go to the documentation of this file.
1using System;
2using System.Xml;
5
7
8internal sealed class UnionExpr : Query
9{
10 internal Query qy1;
11
12 internal Query qy2;
13
14 private bool _advance1;
15
16 private bool _advance2;
17
19
21
22 public override XPathResultType StaticType => XPathResultType.NodeSet;
23
25
26 public override int CurrentPosition
27 {
28 get
29 {
30 throw new InvalidOperationException();
31 }
32 }
33
35 {
36 qy1 = query1;
37 qy2 = query2;
38 _advance1 = true;
39 _advance2 = true;
40 }
41
43 : base(other)
44 {
45 qy1 = Query.Clone(other.qy1);
46 qy2 = Query.Clone(other.qy2);
47 _advance1 = other._advance1;
48 _advance2 = other._advance2;
49 _currentNode = Query.Clone(other._currentNode);
50 _nextNode = Query.Clone(other._nextNode);
51 }
52
53 public override void Reset()
54 {
55 qy1.Reset();
56 qy2.Reset();
57 _advance1 = true;
58 _advance2 = true;
59 _nextNode = null;
60 }
61
62 public override void SetXsltContext(XsltContext xsltContext)
63 {
64 qy1.SetXsltContext(xsltContext);
65 qy2.SetXsltContext(xsltContext);
66 }
67
68 public override object Evaluate(XPathNodeIterator context)
69 {
70 qy1.Evaluate(context);
71 qy2.Evaluate(context);
72 _advance1 = true;
73 _advance2 = true;
74 _nextNode = null;
75 ResetCount();
76 return this;
77 }
78
80 {
81 _currentNode = result;
82 _advance1 = (_advance2 = true);
83 return result;
84 }
85
94
96 {
98 _advance1 = false;
99 _advance2 = true;
101 return res2;
102 }
103
132
133 public override XPathNavigator MatchNode(XPathNavigator xsltContext)
134 {
135 if (xsltContext != null)
136 {
138 if (xPathNavigator != null)
139 {
140 return xPathNavigator;
141 }
142 return qy2.MatchNode(xsltContext);
143 }
144 return null;
145 }
146
147 public override XPathNodeIterator Clone()
148 {
149 return new UnionExpr(this);
150 }
151}
object Evaluate(XPathNodeIterator nodeIterator)
virtual void SetXsltContext(XsltContext context)
Definition Query.cs:52
virtual XPathNavigator MatchNode(XPathNavigator current)
Definition Query.cs:60
static XmlNodeOrder CompareNodes(XPathNavigator l, XPathNavigator r)
Definition Query.cs:127
XPathNavigator Advance()
static Query Clone(Query input)
Definition Query.cs:66
override XPathNodeIterator Clone()
Definition UnionExpr.cs:147
UnionExpr(Query query1, Query query2)
Definition UnionExpr.cs:34
override object Evaluate(XPathNodeIterator context)
Definition UnionExpr.cs:68
override void SetXsltContext(XsltContext xsltContext)
Definition UnionExpr.cs:62
XPathNavigator ProcessAfterPosition(XPathNavigator res1, XPathNavigator res2)
Definition UnionExpr.cs:95
override XPathNavigator Advance()
Definition UnionExpr.cs:104
override XPathNavigator Current
Definition UnionExpr.cs:24
override XPathNavigator MatchNode(XPathNavigator xsltContext)
Definition UnionExpr.cs:133
override XPathResultType StaticType
Definition UnionExpr.cs:22
XPathNavigator ProcessSamePosition(XPathNavigator result)
Definition UnionExpr.cs:79
XPathNavigator ProcessBeforePosition(XPathNavigator res1, XPathNavigator res2)
Definition UnionExpr.cs:86