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

Side by Side Diff: sdk/lib/collection/splay_tree.dart

Issue 26681002: Add EfficientLength marker interface to some iterabels. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of dart.collection; 5 part of dart.collection;
6 6
7 typedef bool _Predicate<T>(T value); 7 typedef bool _Predicate<T>(T value);
8 8
9 /** 9 /**
10 * A node in a splay tree. It holds the sorting key and the left 10 * A node in a splay tree. It holds the sorting key and the left
(...skipping 553 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 _rebuildWorkList(_currentNode); 564 _rebuildWorkList(_currentNode);
565 } 565 }
566 _currentNode = _workList.removeLast(); 566 _currentNode = _workList.removeLast();
567 _findLeftMostDescendent(_currentNode.right); 567 _findLeftMostDescendent(_currentNode.right);
568 return true; 568 return true;
569 } 569 }
570 570
571 T _getValue(_SplayTreeNode node); 571 T _getValue(_SplayTreeNode node);
572 } 572 }
573 573
574 class _SplayTreeKeyIterable<K> extends IterableBase<K> { 574 class _SplayTreeKeyIterable<K> extends IterableBase<K>
575 implements EfficientLength {
575 _SplayTree<K> _tree; 576 _SplayTree<K> _tree;
576 _SplayTreeKeyIterable(this._tree); 577 _SplayTreeKeyIterable(this._tree);
577 int get length => _tree._count; 578 int get length => _tree._count;
578 bool get isEmpty => _tree._count == 0; 579 bool get isEmpty => _tree._count == 0;
579 Iterator<K> get iterator => new _SplayTreeKeyIterator<K>(_tree); 580 Iterator<K> get iterator => new _SplayTreeKeyIterator<K>(_tree);
580 } 581 }
581 582
582 class _SplayTreeValueIterable<K, V> extends IterableBase<V> { 583 class _SplayTreeValueIterable<K, V> extends IterableBase<V>
584 implements EfficientLength {
583 SplayTreeMap<K, V> _map; 585 SplayTreeMap<K, V> _map;
584 _SplayTreeValueIterable(this._map); 586 _SplayTreeValueIterable(this._map);
585 int get length => _map._count; 587 int get length => _map._count;
586 bool get isEmpty => _map._count == 0; 588 bool get isEmpty => _map._count == 0;
587 Iterator<V> get iterator => new _SplayTreeValueIterator<K, V>(_map); 589 Iterator<V> get iterator => new _SplayTreeValueIterator<K, V>(_map);
588 } 590 }
589 591
590 class _SplayTreeKeyIterator<K> extends _SplayTreeIterator<K> { 592 class _SplayTreeKeyIterator<K> extends _SplayTreeIterator<K> {
591 _SplayTreeKeyIterator(_SplayTree<K> map): super(map); 593 _SplayTreeKeyIterator(_SplayTree<K> map): super(map);
592 K _getValue(_SplayTreeNode node) => node.key; 594 K _getValue(_SplayTreeNode node) => node.key;
593 } 595 }
594 596
595 class _SplayTreeValueIterator<K, V> extends _SplayTreeIterator<V> { 597 class _SplayTreeValueIterator<K, V> extends _SplayTreeIterator<V> {
596 _SplayTreeValueIterator(SplayTreeMap<K, V> map): super(map); 598 _SplayTreeValueIterator(SplayTreeMap<K, V> map): super(map);
597 V _getValue(_SplayTreeMapNode node) => node.value; 599 V _getValue(_SplayTreeMapNode node) => node.value;
598 } 600 }
599 601
600 class _SplayTreeNodeIterator<K> 602 class _SplayTreeNodeIterator<K>
601 extends _SplayTreeIterator<_SplayTreeNode<K>> { 603 extends _SplayTreeIterator<_SplayTreeNode<K>> {
602 _SplayTreeNodeIterator(_SplayTree<K> map): super(map); 604 _SplayTreeNodeIterator(_SplayTree<K> map): super(map);
603 _SplayTreeNode<K> _getValue(_SplayTreeNode node) => node; 605 _SplayTreeNode<K> _getValue(_SplayTreeNode node) => node;
604 } 606 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698