private void InitializePriorityQueue(IList <IEnumerable <T> > inputList) { foreach (var list in inputList) { ComparableSortedSequenceEnumerator <T> enumerator = new ComparableSortedSequenceEnumerator <T>(list, this.keyComparer); bool enumeratorIsNotEmpty = this.PrepareEnumerator(enumerator); if (enumeratorIsNotEmpty == false) { // Since enumerator does not have any items that fit the filter, discard the enumerator. enumerator.Dispose(); continue; } this.InsertToPriortyQueueIfNecessary(enumerator); } }
private bool InsertToPriortyQueueIfNecessary(ComparableSortedSequenceEnumerator <T> enumerator) { Diagnostics.Assert(enumerator != null, ClassName, "Input enumerator must not be null."); while (true) { bool wasPushed = this.priorityQueue.TryPush(enumerator); if (wasPushed) { return(true); } var isNotEmpty = enumerator.MoveNext(); if (isNotEmpty == false) { enumerator.Dispose(); return(false); } } }