Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ MoveNext() [2/2]

override bool System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.MoveNext ( ref Pair< TInputOutput, THashKey > currentElement,
[AllowNull] ref TOrderKey currentKey )
inlinepackage

Definition at line 57 of file OrderedHashRepartitionEnumerator.cs.

58 {
59 if (_partitionCount == 1)
60 {
61 TInputOutput currentElement2 = default(TInputOutput);
62 if (_source.MoveNext(ref currentElement2, ref currentKey))
63 {
64 currentElement = new Pair<TInputOutput, THashKey>(currentElement2, (_keySelector == null) ? default(THashKey) : _keySelector(currentElement2));
65 return true;
66 }
67 return false;
68 }
69 Mutables mutables = _mutables;
70 if (mutables == null)
71 {
72 mutables = (_mutables = new Mutables());
73 }
74 if (mutables._currentBufferIndex == -1)
75 {
77 }
78 while (mutables._currentBufferIndex < _partitionCount)
79 {
80 if (mutables._currentBuffer != null)
81 {
82 if (++mutables._currentIndex < mutables._currentBuffer.Count)
83 {
84 currentElement = mutables._currentBuffer._chunk[mutables._currentIndex];
85 currentKey = mutables._currentKeyBuffer._chunk[mutables._currentIndex];
86 return true;
87 }
88 mutables._currentIndex = -1;
89 mutables._currentBuffer = mutables._currentBuffer.Next;
90 mutables._currentKeyBuffer = mutables._currentKeyBuffer.Next;
91 continue;
92 }
93 if (mutables._currentBufferIndex == _partitionIndex)
94 {
96 mutables._currentBufferIndex = -1;
97 }
98 mutables._currentBufferIndex++;
99 mutables._currentIndex = -1;
100 if (mutables._currentBufferIndex == _partitionIndex)
101 {
102 mutables._currentBufferIndex++;
103 }
104 if (mutables._currentBufferIndex < _partitionCount)
105 {
106 mutables._currentBuffer = _valueExchangeMatrix[mutables._currentBufferIndex][_partitionIndex];
107 mutables._currentKeyBuffer = _keyExchangeMatrix[mutables._currentBufferIndex][_partitionIndex];
108 }
109 }
110 return false;
111 }
readonly QueryOperatorEnumerator< TInputOutput, TOrderKey > _source
readonly ListChunk< Pair< TInputOutput, THashKey > >[][] _valueExchangeMatrix
bool MoveNext([MaybeNullWhen(false)][AllowNull] ref TElement currentElement, [AllowNull] ref TKey currentKey)

References System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._barrier, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._cancellationToken, System.Linq.Parallel.ListChunk< TInputOutput >._chunk, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.Mutables._currentBuffer, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.Mutables._currentBufferIndex, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.Mutables._currentIndex, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.Mutables._currentKeyBuffer, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._keyExchangeMatrix, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._keySelector, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._mutables, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._partitionCount, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._partitionIndex, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._source, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >._valueExchangeMatrix, System.Linq.Parallel.OrderedHashRepartitionEnumerator< TInputOutput, THashKey, TOrderKey >.EnumerateAndRedistributeElements(), System.Linq.Parallel.QueryOperatorEnumerator< TElement, TKey >.MoveNext(), System.Linq.Parallel.ListChunk< TInputOutput >.Next, and System.Threading.CountdownEvent.Wait().