Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
SortExpressionBuilder.cs
Go to the documentation of this file.
2
3namespace System.Data;
4
5internal sealed class SortExpressionBuilder<T> : IComparer<List<object>>
6{
8
10
12
14
15 internal int Count => _selectors.Count;
16
30
32 {
34 foreach (Func<T, object> selector in _selectors)
35 {
36 list.Add(selector(row));
37 }
38 return list;
39 }
40
42 {
43 int num = 0;
45 {
46 int num2 = comparer(a[num], b[num]);
47 if (num2 != 0)
48 {
49 return num2;
50 }
51 num++;
52 }
53 return 0;
54 }
55
57 {
58 SortExpressionBuilder<T> sortExpressionBuilder = new SortExpressionBuilder<T>();
59 foreach (Func<T, object> selector in _selectors)
60 {
61 if (selector == _currentSelector.Value)
62 {
63 sortExpressionBuilder._currentSelector = sortExpressionBuilder._selectors.AddLast(selector);
64 }
65 else
66 {
67 sortExpressionBuilder._selectors.AddLast(selector);
68 }
69 }
71 {
73 {
74 sortExpressionBuilder._currentComparer = sortExpressionBuilder._comparers.AddLast(comparer);
75 }
76 else
77 {
78 sortExpressionBuilder._comparers.AddLast(comparer);
79 }
80 }
81 return sortExpressionBuilder;
82 }
83
85 {
87 foreach (Func<T, object> selector in _selectors)
88 {
89 if (selector == _currentSelector.Value)
90 {
91 sortExpressionBuilder._currentSelector = sortExpressionBuilder._selectors.AddLast((TResult r) => selector((T)(object)r));
92 }
93 else
94 {
95 sortExpressionBuilder._selectors.AddLast((TResult r) => selector((T)(object)r));
96 }
97 }
99 {
101 {
102 sortExpressionBuilder._currentComparer = sortExpressionBuilder._comparers.AddLast(comparer);
103 }
104 else
105 {
106 sortExpressionBuilder._comparers.AddLast(comparer);
107 }
108 }
109 return sortExpressionBuilder;
110 }
111}
LinkedListNode< T > AddFirst(T value)
LinkedListNode< T > AddAfter(LinkedListNode< T > node, T value)
LinkedListNode< Func< T, object > > _currentSelector
void Add(Func< T, object > keySelector, Comparison< object > compare, bool isOrderBy)
LinkedListNode< Comparison< object > > _currentComparer
SortExpressionBuilder< TResult > CloneCast< TResult >()
readonly LinkedList< Comparison< object > > _comparers
int Compare(List< object > a, List< object > b)
readonly LinkedList< Func< T, object > > _selectors
SortExpressionBuilder< T > Clone()