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

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

Issue 13685004: Reduce usage of ItearbleMixinWorkaround. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 8 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 class LinkedHashSet<E> extends Collection<E> implements Set<E> { 7 class LinkedHashSet<E> extends Collection<E> with _SetMixin<E>
8 implements Set<E> {
8 static const int _INITIAL_CAPACITY = 8; 9 static const int _INITIAL_CAPACITY = 8;
9 _LinkedHashTable<E> _table; 10 _LinkedHashTable<E> _table;
10 11
11 LinkedHashSet() : _table = new _LinkedHashTable(_INITIAL_CAPACITY) { 12 LinkedHashSet() : _table = new _LinkedHashTable(_INITIAL_CAPACITY) {
12 _table._container = this; 13 _table._container = this;
13 } 14 }
14 15
15 factory LinkedHashSet.from(Iterable<E> iterable) { 16 factory LinkedHashSet.from(Iterable<E> iterable) {
16 return new LinkedHashSet<E>()..addAll(iterable); 17 return new LinkedHashSet<E>()..addAll(iterable);
17 } 18 }
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 return false; 87 return false;
87 } 88 }
88 89
89 void removeAll(Iterable objectsToRemove) { 90 void removeAll(Iterable objectsToRemove) {
90 for (Object object in objectsToRemove) { 91 for (Object object in objectsToRemove) {
91 _table._remove(object); 92 _table._remove(object);
92 _table._checkCapacity(); 93 _table._checkCapacity();
93 } 94 }
94 } 95 }
95 96
96 void retainAll(Iterable objectsToRemove) {
97 IterableMixinWorkaround.retainAll(this, objectsToRemove);
98 }
99
100 void _filterWhere(bool test(E element), bool removeMatching) { 97 void _filterWhere(bool test(E element), bool removeMatching) {
101 int entrySize = _table._entrySize; 98 int entrySize = _table._entrySize;
102 int length = _table._table.length; 99 int length = _table._table.length;
103 int offset = _table._next(_LinkedHashTable._HEAD_OFFSET); 100 int offset = _table._next(_LinkedHashTable._HEAD_OFFSET);
104 while (offset != _LinkedHashTable._HEAD_OFFSET) { 101 while (offset != _LinkedHashTable._HEAD_OFFSET) {
105 E key = _table._key(offset); 102 E key = _table._key(offset);
106 int nextOffset = _table._next(offset); 103 int nextOffset = _table._next(offset);
107 int modificationCount = _table._modificationCount; 104 int modificationCount = _table._modificationCount;
108 bool shouldRemove = (removeMatching == test(key)); 105 bool shouldRemove = (removeMatching == test(key));
109 _table._checkModification(modificationCount); 106 _table._checkModification(modificationCount);
(...skipping 10 matching lines...) Expand all
120 } 117 }
121 118
122 void retainWhere(bool test(E element)) { 119 void retainWhere(bool test(E element)) {
123 _filterWhere(test, false); 120 _filterWhere(test, false);
124 } 121 }
125 122
126 void clear() { 123 void clear() {
127 _table._clear(); 124 _table._clear();
128 } 125 }
129 126
130 // Set. 127 // Set interface from _SetMixin<E>.
131 bool isSubsetOf(Collection<E> other) { 128 Set<E> _newSet() => new LinkedHashSet<E>();
132 // Deprecated, and using old signature.
133 Set otherSet;
134 if (other is Set) {
135 otherSet = other;
136 } else {
137 otherSet = other.toSet();
138 }
139 return IterableMixinWorkaround.setContainsAll(otherSet, this);
140 }
141
142 bool containsAll(Iterable<E> other) {
143 return IterableMixinWorkaround.setContainsAll(this, other);
144 }
145
146 Set<E> intersection(Set<E> other) {
147 return IterableMixinWorkaround.setIntersection(
148 this, other, new LinkedHashSet<E>());
149 }
150
151 Set<E> union(Set<E> other) {
152 return IterableMixinWorkaround.setUnion(
153 this, other, new LinkedHashSet<E>());
154 }
155
156 Set<E> difference(Set<E> other) {
157 return IterableMixinWorkaround.setDifference(
158 this, other, new LinkedHashSet<E>());
159 }
160 129
161 String toString() => Collections.collectionToString(this); 130 String toString() => Collections.collectionToString(this);
162 } 131 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698