Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XPathFollowingMergeIterator.cs
Go to the documentation of this file.
3
5
8{
17
19
21
23
25
27
29 {
31 _state = IteratorState.NeedCandidateCurrent;
32 }
33
35 {
36 switch (_state)
37 {
38 case IteratorState.NeedCandidateCurrent:
39 if (input == null)
40 {
41 return IteratorResult.NoMoreNodes;
42 }
44 _state = IteratorState.HaveCandidateCurrent;
45 return IteratorResult.NeedInputNode;
46 case IteratorState.HaveCandidateCurrent:
47 if (input == null)
48 {
49 _state = IteratorState.HaveCurrentNoNext;
50 return MoveFirst();
51 }
53 {
54 goto case IteratorState.NeedCandidateCurrent;
55 }
56 _state = IteratorState.HaveCurrentNeedNext;
57 goto case IteratorState.HaveCurrentNeedNext;
58 case IteratorState.HaveCurrentNeedNext:
59 if (input == null)
60 {
61 _state = IteratorState.HaveCurrentNoNext;
62 return MoveFirst();
63 }
65 {
66 return IteratorResult.NeedInputNode;
67 }
69 _state = IteratorState.HaveCurrentHaveNext;
70 return MoveFirst();
71 default:
73 {
74 return MoveFailed();
75 }
76 return IteratorResult.HaveCurrentNode;
77 }
78 }
79
81 {
82 if (_state == IteratorState.HaveCurrentNoNext)
83 {
84 _state = IteratorState.NeedCandidateCurrent;
85 return IteratorResult.NoMoreNodes;
86 }
87 _state = IteratorState.HaveCandidateCurrent;
91 return IteratorResult.NeedInputNode;
92 }
93
95 {
97 {
98 return MoveFailed();
99 }
100 return IteratorResult.HaveCurrentNode;
101 }
102}
virtual XmlNodeOrder ComparePosition(XPathNavigator? nav)
virtual bool IsDescendant([NotNullWhen(true)] XPathNavigator? nav)
bool MoveToFollowing(XPathNavigator navigator, XPathNavigator navigatorEnd)
static XPathNavigator SyncToNavigator(XPathNavigator navigatorThis, XPathNavigator navigatorThat)
static bool MoveFirst(XmlNavigatorFilter filter, XPathNavigator nav)