Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XPathSortComparer.cs
Go to the documentation of this file.
1
using
System.Collections
;
2
using
System.Collections.Generic
;
3
using
System.Xml.XPath
;
4
5
namespace
MS.Internal.Xml.XPath
;
6
7
internal
sealed
class
XPathSortComparer
:
IComparer
<SortKey>
8
{
9
private
Query
[]
_expressions
;
10
11
private
IComparer
[]
_comparers
;
12
13
private
int
_numSorts
;
14
15
public
int
NumSorts
=>
_numSorts
;
16
17
public
XPathSortComparer
(
int
size)
18
{
19
if
(size <= 0)
20
{
21
size = 3;
22
}
23
_expressions
=
new
Query
[size];
24
_comparers
=
new
IComparer
[size];
25
}
26
27
public
XPathSortComparer
()
28
:
this
(3)
29
{
30
}
31
32
public
void
AddSort
(
Query
evalQuery
,
IComparer
comparer)
33
{
34
if
(
_numSorts
==
_expressions
.Length)
35
{
36
Query
[] array =
new
Query
[
_numSorts
* 2];
37
IComparer
[]
array2
=
new
IComparer
[
_numSorts
* 2];
38
for
(
int
i = 0; i <
_numSorts
; i++)
39
{
40
array[i] =
_expressions
[i];
41
array2
[i] =
_comparers
[i];
42
}
43
_expressions
= array;
44
_comparers
=
array2
;
45
}
46
if
(
evalQuery
.StaticType ==
XPathResultType
.NodeSet ||
evalQuery
.StaticType ==
XPathResultType
.Any)
47
{
48
evalQuery
=
new
StringFunctions
(
Function
.
FunctionType
.FuncString,
new
Query
[1] { evalQuery });
49
}
50
_expressions
[
_numSorts
] =
evalQuery
;
51
_comparers
[
_numSorts
] = comparer;
52
_numSorts
++;
53
}
54
55
public
Query
Expression
(
int
i)
56
{
57
return
_expressions
[i];
58
}
59
60
int
IComparer<SortKey>
.Compare(
SortKey
x,
SortKey
y)
61
{
62
int
num = 0;
63
for
(
int
i = 0; i < x.
NumKeys
; i++)
64
{
65
num =
_comparers
[i].
Compare
(x[i], y[i]);
66
if
(num != 0)
67
{
68
return
num;
69
}
70
}
71
return
x.OriginalPosition - y.
OriginalPosition
;
72
}
73
74
internal
XPathSortComparer
Clone
()
75
{
76
XPathSortComparer
xPathSortComparer
=
new
XPathSortComparer
(
_numSorts
);
77
for
(
int
i = 0; i <
_numSorts
; i++)
78
{
79
xPathSortComparer
._comparers[i] =
_comparers
[i];
80
xPathSortComparer
._expressions[i] = (
Query
)
_expressions
[i].
Clone
();
81
}
82
xPathSortComparer._numSorts =
_numSorts
;
83
return
xPathSortComparer
;
84
}
85
}
MS.Internal.Xml.XPath.Function.FunctionType
FunctionType
Definition
Function.cs:9
MS.Internal.Xml.XPath.Function
Definition
Function.cs:7
MS.Internal.Xml.XPath.Query
Definition
Query.cs:13
MS.Internal.Xml.XPath.SortKey.OriginalPosition
int OriginalPosition
Definition
SortKey.cs:29
MS.Internal.Xml.XPath.SortKey.NumKeys
int NumKeys
Definition
SortKey.cs:27
MS.Internal.Xml.XPath.SortKey
Definition
SortKey.cs:6
MS.Internal.Xml.XPath.StringFunctions
Definition
StringFunctions.cs:11
MS.Internal.Xml.XPath.XPathSortComparer.Expression
Query Expression(int i)
Definition
XPathSortComparer.cs:55
MS.Internal.Xml.XPath.XPathSortComparer.XPathSortComparer
XPathSortComparer(int size)
Definition
XPathSortComparer.cs:17
MS.Internal.Xml.XPath.XPathSortComparer._comparers
IComparer[] _comparers
Definition
XPathSortComparer.cs:11
MS.Internal.Xml.XPath.XPathSortComparer.NumSorts
int NumSorts
Definition
XPathSortComparer.cs:15
MS.Internal.Xml.XPath.XPathSortComparer.Clone
XPathSortComparer Clone()
Definition
XPathSortComparer.cs:74
MS.Internal.Xml.XPath.XPathSortComparer.XPathSortComparer
XPathSortComparer()
Definition
XPathSortComparer.cs:27
MS.Internal.Xml.XPath.XPathSortComparer.AddSort
void AddSort(Query evalQuery, IComparer comparer)
Definition
XPathSortComparer.cs:32
MS.Internal.Xml.XPath.XPathSortComparer._numSorts
int _numSorts
Definition
XPathSortComparer.cs:13
MS.Internal.Xml.XPath.XPathSortComparer._expressions
Query[] _expressions
Definition
XPathSortComparer.cs:9
MS.Internal.Xml.XPath.XPathSortComparer
Definition
XPathSortComparer.cs:8
System.Collections.Generic.Dictionary
Definition
Dictionary.cs:14
System.Collections.Generic.IComparer.Compare
int Compare(T? x, T? y)
System.Collections.Generic.IComparer
Definition
IComparer.cs:4
MS.Internal.Xml.XPath
Definition
AbsoluteQuery.cs:3
System.Collections.Generic
Definition
IHashKeyCollection.cs:1
System.Collections
Definition
BlockingCollection.cs:8
System.Xml.XPath.XPathResultType
XPathResultType
Definition
XPathResultType.cs:4
System.Xml.XPath
Definition
Extensions.cs:5
source
System.Private.Xml
MS.Internal.Xml.XPath
XPathSortComparer.cs
Generated by
1.10.0