Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SortQuery.cs
Go to the documentation of this file.
1using System;
6
8
9internal sealed class SortQuery : Query
10{
11 private readonly List<SortKey> _results;
12
13 private readonly XPathSortComparer _comparer;
14
15 private readonly Query _qyInput;
16
17 public override XPathNavigator Current
18 {
19 get
20 {
21 if (count == 0)
22 {
23 return null;
24 }
25 return _results[count - 1].Node;
26 }
27 }
28
29 public override XPathResultType StaticType => XPathResultType.NodeSet;
30
31 public override int CurrentPosition => count;
32
33 public override int Count => _results.Count;
34
35 public override QueryProps Properties => (QueryProps)7;
36
37 public SortQuery(Query qyInput)
38 {
39 _results = new List<SortKey>();
41 _qyInput = qyInput;
42 count = 0;
43 }
44
46 : base(other)
47 {
48 _results = new List<SortKey>(other._results);
49 _comparer = other._comparer.Clone();
50 _qyInput = Query.Clone(other._qyInput);
51 count = 0;
52 }
53
54 public override void Reset()
55 {
56 count = 0;
57 }
58
59 public override void SetXsltContext(XsltContext xsltContext)
60 {
61 _qyInput.SetXsltContext(xsltContext);
63 {
65 }
66 }
67
68 private void BuildResultsList()
69 {
72 while ((xPathNavigator = _qyInput.Advance()) != null)
73 {
75 for (int i = 0; i < numSorts; i++)
76 {
78 }
80 }
81 _results.Sort(_comparer);
82 }
83
84 public override object Evaluate(XPathNodeIterator context)
85 {
86 _qyInput.Evaluate(context);
89 count = 0;
90 return this;
91 }
92
93 public override XPathNavigator Advance()
94 {
95 if (count < _results.Count)
96 {
97 return _results[count++].Node;
98 }
99 return null;
100 }
101
106
107 public override XPathNodeIterator Clone()
108 {
109 return new SortQuery(this);
110 }
111}
object Evaluate(XPathNodeIterator nodeIterator)
virtual void SetXsltContext(XsltContext context)
Definition Query.cs:52
XPathNavigator Advance()
XPathResultType StaticType
Definition Query.cs:34
static Query Clone(Query input)
Definition Query.cs:66
override object Evaluate(XPathNodeIterator context)
Definition SortQuery.cs:84
override XPathNodeIterator Clone()
Definition SortQuery.cs:107
override QueryProps Properties
Definition SortQuery.cs:35
override XPathNavigator Advance()
Definition SortQuery.cs:93
readonly List< SortKey > _results
Definition SortQuery.cs:11
void AddSort(Query evalQuery, IComparer comparer)
Definition SortQuery.cs:102
override XPathNavigator Current
Definition SortQuery.cs:18
override XPathResultType StaticType
Definition SortQuery.cs:29
override void SetXsltContext(XsltContext xsltContext)
Definition SortQuery.cs:59
readonly XPathSortComparer _comparer
Definition SortQuery.cs:13
void AddSort(Query evalQuery, IComparer comparer)
void Add(TKey key, TValue value)
static string Xp_NodeSetExpected
Definition SR.cs:1244
Definition SR.cs:7
static XPathException Create(string res)