Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DoubleMinMaxAggregationOperator.cs
Go to the documentation of this file.
3
5
6internal sealed class DoubleMinMaxAggregationOperator : InlinedAggregationOperator<double, double, double>
7{
9 {
11
12 private readonly int _sign;
13
20
21 protected override bool MoveNextCore(ref double currentElement)
22 {
24 TKey currentKey = default(TKey);
25 if (source.MoveNext(ref currentElement, ref currentKey))
26 {
27 int num = 0;
28 if (_sign == -1)
29 {
30 double currentElement2 = 0.0;
31 while (source.MoveNext(ref currentElement2, ref currentKey))
32 {
33 if ((num++ & 0x3F) == 0)
34 {
36 }
37 if (currentElement2 < currentElement || double.IsNaN(currentElement2))
38 {
40 }
41 }
42 }
43 else
44 {
45 double currentElement3 = 0.0;
46 while (source.MoveNext(ref currentElement3, ref currentKey))
47 {
48 if ((num++ & 0x3F) == 0)
49 {
51 }
52 if (currentElement3 > currentElement || double.IsNaN(currentElement))
53 {
55 }
56 }
57 }
58 return true;
59 }
60 return false;
61 }
62
63 protected override void Dispose(bool disposing)
64 {
66 }
67 }
68
69 private readonly int _sign;
70
72 : base(child)
73 {
74 _sign = sign;
75 }
76
78 {
79 using IEnumerator<double> enumerator = GetEnumerator(ParallelMergeOptions.FullyBuffered, suppressOrderPreservation: true);
80 if (!enumerator.MoveNext())
81 {
83 return 0.0;
84 }
85 double num = enumerator.Current;
86 if (_sign == -1)
87 {
88 while (enumerator.MoveNext())
89 {
90 double current = enumerator.Current;
91 if (current < num || double.IsNaN(current))
92 {
93 num = current;
94 }
95 }
96 }
97 else
98 {
99 while (enumerator.MoveNext())
100 {
101 double current2 = enumerator.Current;
102 if (current2 > num || double.IsNaN(num))
103 {
104 num = current2;
105 }
106 }
107 }
108 return num;
109 }
110
115}
DoubleMinMaxAggregationOperatorEnumerator(QueryOperatorEnumerator< double, TKey > source, int partitionIndex, int sign, CancellationToken cancellationToken)
override QueryOperatorEnumerator< double, int > CreateEnumerator< TKey >(int index, int count, QueryOperatorEnumerator< double, TKey > source, object sharedData, CancellationToken cancellationToken)
override double InternalAggregate(ref Exception singularExceptionToThrow)
DoubleMinMaxAggregationOperator(IEnumerable< double > child, int sign)
static string NoElements
Definition SR.cs:16
Definition SR.cs:7