Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MergeFilterQuery.cs
Go to the documentation of this file.
3
5
6internal sealed class MergeFilterQuery : CacheOutputQuery
7{
8 private readonly Query _child;
9
11 : base(input)
12 {
13 _child = child;
14 }
15
17 : base(other)
18 {
19 _child = Query.Clone(other._child);
20 }
21
22 public override void SetXsltContext(XsltContext xsltContext)
23 {
24 base.SetXsltContext(xsltContext);
25 _child.SetXsltContext(xsltContext);
26 }
27
28 public override object Evaluate(XPathNodeIterator nodeIterator)
29 {
30 base.Evaluate(nodeIterator);
31 while (input.Advance() != null)
32 {
35 while ((nav = _child.Advance()) != null)
36 {
38 }
39 }
40 return this;
41 }
42
43 public override XPathNavigator MatchNode(XPathNavigator current)
44 {
45 XPathNavigator xPathNavigator = _child.MatchNode(current);
46 if (xPathNavigator == null)
47 {
48 return null;
49 }
50 xPathNavigator = input.MatchNode(xPathNavigator);
51 if (xPathNavigator == null)
52 {
53 return null;
54 }
55 Evaluate(new XPathSingletonIterator(xPathNavigator.Clone(), moved: true));
56 for (XPathNavigator xPathNavigator2 = Advance(); xPathNavigator2 != null; xPathNavigator2 = Advance())
57 {
58 if (xPathNavigator2.IsSamePosition(current))
59 {
60 return xPathNavigator;
61 }
62 }
63 return null;
64 }
65
66 public override XPathNodeIterator Clone()
67 {
68 return new MergeFilterQuery(this);
69 }
70}
override XPathNodeIterator Clone()
override object Evaluate(XPathNodeIterator nodeIterator)
override XPathNavigator MatchNode(XPathNavigator current)
MergeFilterQuery(Query input, Query child)
override void SetXsltContext(XsltContext xsltContext)
object Evaluate(XPathNodeIterator nodeIterator)
virtual void SetXsltContext(XsltContext context)
Definition Query.cs:52
virtual XPathNavigator MatchNode(XPathNavigator current)
Definition Query.cs:60
XPathNavigator Advance()
static bool Insert(List< XPathNavigator > buffer, XPathNavigator nav)
Definition Query.cs:87
static Query Clone(Query input)
Definition Query.cs:66