Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
UnionIterator.cs
Go to the documentation of this file.
1
using
System.ComponentModel
;
2
using
System.Xml.XPath
;
3
4
namespace
System.Xml.Xsl.Runtime
;
5
6
[
EditorBrowsable
(
EditorBrowsableState
.Never)]
7
public
struct
UnionIterator
8
{
9
private
enum
IteratorState
10
{
11
InitLeft
,
12
NeedLeft
,
13
NeedRight
,
14
LeftIsCurrent
,
15
RightIsCurrent
16
}
17
18
private
XmlQueryRuntime
_runtime
;
19
20
private
XPathNavigator
_navCurr
;
21
22
private
XPathNavigator
_navOther
;
23
24
private
IteratorState
_state
;
25
26
public
XPathNavigator
Current
=>
_navCurr
;
27
28
public
void
Create
(
XmlQueryRuntime
runtime
)
29
{
30
_runtime
=
runtime
;
31
_state
=
IteratorState
.InitLeft;
32
}
33
34
public
SetIteratorResult
MoveNext
(
XPathNavigator
nestedNavigator
)
35
{
36
switch
(
_state
)
37
{
38
case
IteratorState
.InitLeft:
39
_navOther
=
nestedNavigator
;
40
_state
=
IteratorState
.NeedRight;
41
return
SetIteratorResult
.InitRightIterator;
42
case
IteratorState
.NeedLeft:
43
_navCurr
=
nestedNavigator
;
44
_state
=
IteratorState
.LeftIsCurrent;
45
break
;
46
case
IteratorState
.NeedRight:
47
_navCurr
=
nestedNavigator
;
48
_state
=
IteratorState
.RightIsCurrent;
49
break
;
50
case
IteratorState
.LeftIsCurrent:
51
_state
=
IteratorState
.NeedLeft;
52
return
SetIteratorResult
.NeedLeftNode;
53
case
IteratorState
.RightIsCurrent:
54
_state
=
IteratorState
.NeedRight;
55
return
SetIteratorResult
.NeedRightNode;
56
}
57
if
(
_navCurr
==
null
)
58
{
59
if
(
_navOther
==
null
)
60
{
61
return
SetIteratorResult
.NoMoreNodes;
62
}
63
Swap
();
64
}
65
else
if
(
_navOther
!=
null
)
66
{
67
int
num =
_runtime
.
ComparePosition
(
_navOther
,
_navCurr
);
68
if
(num == 0)
69
{
70
if
(
_state
==
IteratorState
.LeftIsCurrent)
71
{
72
_state
=
IteratorState
.NeedLeft;
73
return
SetIteratorResult
.NeedLeftNode;
74
}
75
_state
=
IteratorState
.NeedRight;
76
return
SetIteratorResult
.NeedRightNode;
77
}
78
if
(num < 0)
79
{
80
Swap
();
81
}
82
}
83
return
SetIteratorResult
.HaveCurrentNode;
84
}
85
86
private
void
Swap
()
87
{
88
XPathNavigator
navCurr
=
_navCurr
;
89
_navCurr
=
_navOther
;
90
_navOther
=
navCurr
;
91
if
(
_state
==
IteratorState
.LeftIsCurrent)
92
{
93
_state
=
IteratorState
.RightIsCurrent;
94
}
95
else
96
{
97
_state
=
IteratorState
.LeftIsCurrent;
98
}
99
}
100
}
System.Xml.XPath.XPathNavigator
Definition
XPathNavigator.cs:15
System.Xml.Xsl.Runtime.XmlQueryRuntime.ComparePosition
int ComparePosition(XPathNavigator navigatorThis, XPathNavigator navigatorThat)
Definition
XmlQueryRuntime.cs:589
System.Xml.Xsl.Runtime.XmlQueryRuntime
Definition
XmlQueryRuntime.cs:16
System.ComponentModel.EditorBrowsableState
EditorBrowsableState
Definition
EditorBrowsableState.cs:4
System.ComponentModel
Definition
ColumnAttribute.cs:3
System.Xml.XPath
Definition
Extensions.cs:5
System.Xml.Xsl.Runtime.SetIteratorResult
SetIteratorResult
Definition
SetIteratorResult.cs:7
System.Xml.Xsl.Runtime
Definition
AncestorDocOrderIterator.cs:4
System.Xml.ValueHandleType.Dictionary
@ Dictionary
System.Xml.Xsl.Runtime.UnionIterator._navCurr
XPathNavigator _navCurr
Definition
UnionIterator.cs:20
System.Xml.Xsl.Runtime.UnionIterator._navOther
XPathNavigator _navOther
Definition
UnionIterator.cs:22
System.Xml.Xsl.Runtime.UnionIterator.Swap
void Swap()
Definition
UnionIterator.cs:86
System.Xml.Xsl.Runtime.UnionIterator.IteratorState
IteratorState
Definition
UnionIterator.cs:10
System.Xml.Xsl.Runtime.UnionIterator.IteratorState.RightIsCurrent
@ RightIsCurrent
System.Xml.Xsl.Runtime.UnionIterator.IteratorState.NeedLeft
@ NeedLeft
System.Xml.Xsl.Runtime.UnionIterator.IteratorState.InitLeft
@ InitLeft
System.Xml.Xsl.Runtime.UnionIterator.IteratorState.LeftIsCurrent
@ LeftIsCurrent
System.Xml.Xsl.Runtime.UnionIterator.IteratorState.NeedRight
@ NeedRight
System.Xml.Xsl.Runtime.UnionIterator.Create
void Create(XmlQueryRuntime runtime)
Definition
UnionIterator.cs:28
System.Xml.Xsl.Runtime.UnionIterator.Current
XPathNavigator Current
Definition
UnionIterator.cs:26
System.Xml.Xsl.Runtime.UnionIterator.MoveNext
SetIteratorResult MoveNext(XPathNavigator nestedNavigator)
Definition
UnionIterator.cs:34
System.Xml.Xsl.Runtime.UnionIterator._state
IteratorState _state
Definition
UnionIterator.cs:24
System.Xml.Xsl.Runtime.UnionIterator._runtime
XmlQueryRuntime _runtime
Definition
UnionIterator.cs:18
System.Xml.Xsl.Runtime.UnionIterator
Definition
UnionIterator.cs:8
source
System.Private.Xml
System.Xml.Xsl.Runtime
UnionIterator.cs
Generated by
1.10.0