Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
ContentMergeIterator.cs
Go to the documentation of this file.
3
5
8{
16
18
20
22
24
26
28
30 {
33 _state = IteratorState.NeedCurrent;
34 }
35
37 {
38 return MoveNext(input, isContent: true);
39 }
40
42 {
43 switch (_state)
44 {
45 case IteratorState.NeedCurrent:
46 if (input == null)
47 {
48 return IteratorResult.NoMoreNodes;
49 }
52 {
53 _state = IteratorState.HaveCurrentNeedNext;
54 }
55 return IteratorResult.NeedInputNode;
56 case IteratorState.HaveCurrentNeedNext:
57 if (input == null)
58 {
59 _state = IteratorState.HaveCurrentNoNext;
60 return IteratorResult.HaveCurrentNode;
61 }
64 {
65 _state = IteratorState.HaveCurrentHaveNext;
66 return DocOrderMerge();
67 }
68 return IteratorResult.NeedInputNode;
69 case IteratorState.HaveCurrentNoNext:
70 case IteratorState.HaveCurrentHaveNext:
72 {
74 {
75 if (_state == IteratorState.HaveCurrentNoNext)
76 {
77 return IteratorResult.NoMoreNodes;
78 }
80 _state = IteratorState.HaveCurrentNeedNext;
81 return IteratorResult.NeedInputNode;
82 }
84 }
85 if (_state == IteratorState.HaveCurrentNoNext)
86 {
87 return IteratorResult.HaveCurrentNode;
88 }
89 return DocOrderMerge();
90 default:
91 return IteratorResult.NoMoreNodes;
92 }
93 }
94
96 {
98 {
99 case XmlNodeOrder.Before:
100 case XmlNodeOrder.Unknown:
101 return IteratorResult.HaveCurrentNode;
102 case XmlNodeOrder.After:
105 _navNext = null;
106 break;
107 }
108 _state = IteratorState.HaveCurrentNeedNext;
109 return IteratorResult.NeedInputNode;
110 }
111}
virtual XmlNodeOrder ComparePosition(XPathNavigator? nav)
bool MoveToFollowingSibling(XPathNavigator navigator)
bool MoveToContent(XPathNavigator navigator)
bool MoveToNextContent(XPathNavigator navigator)
static XPathNavigator SyncToNavigator(XPathNavigator navigatorThis, XPathNavigator navigatorThat)
IteratorResult MoveNext(XPathNavigator input, bool isContent)
IteratorResult MoveNext(XPathNavigator input)