Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MoveNext() [2/2]

IteratorResult System.Xml.Xsl.Runtime.ContentMergeIterator.MoveNext ( XPathNavigator input,
bool isContent )
inlinepackage

Definition at line 41 of file ContentMergeIterator.cs.

42 {
43 switch (_state)
44 {
45 case IteratorState.NeedCurrent:
46 if (input == null)
47 {
48 return IteratorResult.NoMoreNodes;
49 }
50 _navCurrent = XmlQueryRuntime.SyncToNavigator(_navCurrent, input);
51 if (isContent ? _filter.MoveToContent(_navCurrent) : _filter.MoveToFollowingSibling(_navCurrent))
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 }
62 _navNext = XmlQueryRuntime.SyncToNavigator(_navNext, input);
63 if (isContent ? _filter.MoveToContent(_navNext) : _filter.MoveToFollowingSibling(_navNext))
64 {
65 _state = IteratorState.HaveCurrentHaveNext;
66 return DocOrderMerge();
67 }
68 return IteratorResult.NeedInputNode;
69 case IteratorState.HaveCurrentNoNext:
70 case IteratorState.HaveCurrentHaveNext:
71 if (isContent ? (!_filter.MoveToNextContent(_navCurrent)) : (!_filter.MoveToFollowingSibling(_navCurrent)))
72 {
74 {
75 if (_state == IteratorState.HaveCurrentNoNext)
76 {
77 return IteratorResult.NoMoreNodes;
78 }
79 _navCurrent = XmlQueryRuntime.SyncToNavigator(_navCurrent, _navNext);
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 }
bool MoveToContent(XPathNavigator navigator)
bool MoveToNextContent(XPathNavigator navigator)

References System.Xml.Xsl.Runtime.ContentMergeIterator._filter, System.Xml.Xsl.Runtime.ContentMergeIterator._navCurrent, System.Xml.Xsl.Runtime.ContentMergeIterator._navNext, System.Xml.Xsl.Runtime.ContentMergeIterator._navStack, System.Xml.Xsl.Runtime.ContentMergeIterator._state, System.Xml.Dictionary, System.Xml.Xsl.Runtime.ContentMergeIterator.DocOrderMerge(), System.input, System.Xml.Xsl.Runtime.XmlNavigatorStack.IsEmpty, System.Xml.Xsl.Runtime.XmlNavigatorFilter.MoveToContent(), System.Xml.Xsl.Runtime.XmlNavigatorFilter.MoveToFollowingSibling(), System.Xml.Xsl.Runtime.XmlNavigatorFilter.MoveToNextContent(), System.Xml.Xsl.Runtime.XmlNavigatorStack.Pop(), and System.Xml.Xsl.Runtime.XmlQueryRuntime.SyncToNavigator().