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

◆ MoveNext()

override bool System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator.MoveNext ( )
inline

Definition at line 56 of file OrderPreservingPipeliningMergeHelper.cs.

57 {
58 if (!_initialized)
59 {
60 _initialized = true;
61 for (int i = 0; i < _mergeHelper._partitions.PartitionCount; i++)
62 {
64 if (TryWaitForElement(i, ref element))
65 {
66 _producerHeap.Insert(new Producer<TKey>(element.First, i));
67 _producerNextElement[i] = element.Second;
68 }
69 else
70 {
72 }
73 }
74 }
75 else
76 {
77 if (_producerHeap.Count == 0)
78 {
79 return false;
80 }
81 int producerIndex = _producerHeap.MaxValue.ProducerIndex;
84 {
85 _producerHeap.ReplaceMax(new Producer<TKey>(element2.First, producerIndex));
87 }
88 else
89 {
91 _producerHeap.RemoveMax();
92 }
93 }
94 return _producerHeap.Count > 0;
95 }

References System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator._initialized, System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator._mergeHelper, System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator._producerHeap, System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator._producerNextElement, System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator.ThrowIfInTearDown(), System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator.TryGetPrivateElement(), and System.Linq.Parallel.OrderPreservingPipeliningMergeHelper< TOutput, TKey >.OrderedPipeliningMergeEnumerator.TryWaitForElement().