Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(264)

Unified Diff: packages/quiver_iterables/lib/src/merge.dart

Issue 2989763002: Update charted to 0.4.8 and roll (Closed)
Patch Set: Removed Cutch from list of reviewers Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: packages/quiver_iterables/lib/src/merge.dart
diff --git a/packages/quiver_iterables/lib/src/merge.dart b/packages/quiver_iterables/lib/src/merge.dart
deleted file mode 100644
index 99466e3df9bbd8f10eb06efdd93832b47391d13c..0000000000000000000000000000000000000000
--- a/packages/quiver_iterables/lib/src/merge.dart
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2013 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-part of quiver.iterables;
-
-/// Returns the result of merging an [Iterable] of [Iterable]s, according to
-/// the order specified by the [compare] function. This function assumes the
-/// provided iterables are already sorted according to the provided [compare]
-/// function. It will not check for this condition or sort the iterables.
-///
-/// The compare function must act as a [Comparator]. If [compare] is omitted,
-/// [Comparable.compare] is used.
-///
-/// If any of the [iterables] contain null elements, an exception will be
-/// thrown.
-Iterable merge(Iterable<Iterable> iterables,
- [Comparator compare = Comparable.compare]) =>
- (iterables.isEmpty) ? const [] : new _Merge(iterables, compare);
-
-class _Merge extends IterableBase {
- final Iterable<Iterable> _iterables;
- final Comparator _compare;
-
- _Merge(this._iterables, this._compare);
-
- Iterator get iterator => new _MergeIterator(
- _iterables.map((i) => i.iterator).toList(growable: false), _compare);
-
- String toString() => this.toList().toString();
-}
-
-/// Like [Iterator] but one element ahead.
-class _IteratorPeeker {
- final Iterator _iterator;
- bool _hasCurrent;
-
- _IteratorPeeker(Iterator iterator)
- : _iterator = iterator,
- _hasCurrent = iterator.moveNext();
-
- moveNext() {
- _hasCurrent = _iterator.moveNext();
- }
-
- get current => _iterator.current;
-}
-
-class _MergeIterator implements Iterator {
- final List<_IteratorPeeker> _peekers;
- final Comparator _compare;
- var _current;
-
- _MergeIterator(List<Iterator> iterators, this._compare)
- : _peekers = iterators.map((i) => new _IteratorPeeker(i)).toList();
-
- bool moveNext() {
- // Pick the peeker that's peeking at the puniest piece
- _IteratorPeeker minIter = null;
- for (var p in _peekers) {
- if (p._hasCurrent) {
- if (minIter == null || _compare(p.current, minIter.current) < 0) {
- minIter = p;
- }
- }
- }
-
- if (minIter == null) {
- return false;
- }
- _current = minIter.current;
- minIter.moveNext();
- return true;
- }
-
- get current => _current;
-}
« no previous file with comments | « packages/quiver_iterables/lib/src/infinite_iterable.dart ('k') | packages/quiver_iterables/lib/src/min_max.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698