OLD | NEW |
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 patch class HashMap<K, V> { | 5 patch class HashMap<K, V> { |
6 final _HashMapTable<K, V> _hashTable = new _HashMapTable<K, V>(); | 6 final _HashMapTable<K, V> _hashTable = new _HashMapTable<K, V>(); |
7 | 7 |
8 /* patch */ HashMap() { | 8 /* patch */ HashMap() { |
9 _hashTable._container = this; | 9 _hashTable._container = this; |
10 } | 10 } |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 } | 102 } |
103 } | 103 } |
104 | 104 |
105 /* patch */ Iterable<K> get keys => new _HashTableKeyIterable<K>(_hashTable); | 105 /* patch */ Iterable<K> get keys => new _HashTableKeyIterable<K>(_hashTable); |
106 /* patch */ Iterable<V> get values => | 106 /* patch */ Iterable<V> get values => |
107 new _HashTableValueIterable<V>(_hashTable, _HashMapTable._VALUE_INDEX); | 107 new _HashTableValueIterable<V>(_hashTable, _HashMapTable._VALUE_INDEX); |
108 | 108 |
109 /* patch */ int get length => _hashTable._elementCount; | 109 /* patch */ int get length => _hashTable._elementCount; |
110 | 110 |
111 /* patch */ bool get isEmpty => _hashTable._elementCount == 0; | 111 /* patch */ bool get isEmpty => _hashTable._elementCount == 0; |
| 112 |
| 113 /* patch */ bool get isNotEmpty => !isEmpty; |
112 } | 114 } |
113 | 115 |
114 patch class HashSet<E> { | 116 patch class HashSet<E> { |
115 static const int _INITIAL_CAPACITY = 8; | 117 static const int _INITIAL_CAPACITY = 8; |
116 final _HashTable<E> _table; | 118 final _HashTable<E> _table; |
117 | 119 |
118 /* patch */ HashSet() : _table = new _HashTable(_INITIAL_CAPACITY) { | 120 /* patch */ HashSet() : _table = new _HashTable(_INITIAL_CAPACITY) { |
119 _table._container = this; | 121 _table._container = this; |
120 } | 122 } |
121 | 123 |
122 factory HashSet.from(Iterable<E> iterable) { | 124 factory HashSet.from(Iterable<E> iterable) { |
123 return new HashSet<E>()..addAll(iterable); | 125 return new HashSet<E>()..addAll(iterable); |
124 } | 126 } |
125 | 127 |
126 // Iterable. | 128 // Iterable. |
127 /* patch */ Iterator<E> get iterator => new _HashTableKeyIterator<E>(_table); | 129 /* patch */ Iterator<E> get iterator => new _HashTableKeyIterator<E>(_table); |
128 | 130 |
129 /* patch */ int get length => _table._elementCount; | 131 /* patch */ int get length => _table._elementCount; |
130 | 132 |
131 /* patch */ bool get isEmpty => _table._elementCount == 0; | 133 /* patch */ bool get isEmpty => _table._elementCount == 0; |
132 | 134 |
| 135 /* patch */ bool get isNotEmpty => !isEmpty; |
| 136 |
133 /* patch */ bool contains(Object object) => _table._get(object) >= 0; | 137 /* patch */ bool contains(Object object) => _table._get(object) >= 0; |
134 | 138 |
135 // Collection. | 139 // Collection. |
136 /* patch */ void add(E element) { | 140 /* patch */ void add(E element) { |
137 _table._put(element); | 141 _table._put(element); |
138 _table._checkCapacity(); | 142 _table._checkCapacity(); |
139 } | 143 } |
140 | 144 |
141 /* patch */ void addAll(Iterable<E> objects) { | 145 /* patch */ void addAll(Iterable<E> objects) { |
142 for (E object in objects) { | 146 for (E object in objects) { |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 /* patch */ Iterable<K> get keys => | 297 /* patch */ Iterable<K> get keys => |
294 new _LinkedHashTableKeyIterable<K>(_hashTable); | 298 new _LinkedHashTableKeyIterable<K>(_hashTable); |
295 | 299 |
296 /* patch */ Iterable<V> get values => | 300 /* patch */ Iterable<V> get values => |
297 new _LinkedHashTableValueIterable<V>(_hashTable, | 301 new _LinkedHashTableValueIterable<V>(_hashTable, |
298 _LinkedHashMapTable._VALUE_INDEX); | 302 _LinkedHashMapTable._VALUE_INDEX); |
299 | 303 |
300 /* patch */ int get length => _hashTable._elementCount; | 304 /* patch */ int get length => _hashTable._elementCount; |
301 | 305 |
302 /* patch */ bool get isEmpty => _hashTable._elementCount == 0; | 306 /* patch */ bool get isEmpty => _hashTable._elementCount == 0; |
| 307 |
| 308 /* patch */ bool get isNotEmpty => !isEmpty; |
303 } | 309 } |
304 | 310 |
305 patch class LinkedHashSet<E> extends _HashSetBase<E> { | 311 patch class LinkedHashSet<E> extends _HashSetBase<E> { |
306 static const int _INITIAL_CAPACITY = 8; | 312 static const int _INITIAL_CAPACITY = 8; |
307 _LinkedHashTable<E> _table; | 313 _LinkedHashTable<E> _table; |
308 | 314 |
309 /* patch */ LinkedHashSet() { | 315 /* patch */ LinkedHashSet() { |
310 _table = new _LinkedHashTable(_INITIAL_CAPACITY); | 316 _table = new _LinkedHashTable(_INITIAL_CAPACITY); |
311 _table._container = this; | 317 _table._container = this; |
312 } | 318 } |
313 | 319 |
314 // Iterable. | 320 // Iterable. |
315 /* patch */ Iterator<E> get iterator { | 321 /* patch */ Iterator<E> get iterator { |
316 return new _LinkedHashTableKeyIterator<E>(_table); | 322 return new _LinkedHashTableKeyIterator<E>(_table); |
317 } | 323 } |
318 | 324 |
319 /* patch */ int get length => _table._elementCount; | 325 /* patch */ int get length => _table._elementCount; |
320 | 326 |
321 /* patch */ bool get isEmpty => _table._elementCount == 0; | 327 /* patch */ bool get isEmpty => _table._elementCount == 0; |
322 | 328 |
| 329 /* patch */ bool get isNotEmpty => !isEmpty; |
| 330 |
323 /* patch */ bool contains(Object object) => _table._get(object) >= 0; | 331 /* patch */ bool contains(Object object) => _table._get(object) >= 0; |
324 | 332 |
325 /* patch */ void forEach(void action(E element)) { | 333 /* patch */ void forEach(void action(E element)) { |
326 int offset = _table._next(_LinkedHashTable._HEAD_OFFSET); | 334 int offset = _table._next(_LinkedHashTable._HEAD_OFFSET); |
327 int modificationCount = _table._modificationCount; | 335 int modificationCount = _table._modificationCount; |
328 while (offset != _LinkedHashTable._HEAD_OFFSET) { | 336 while (offset != _LinkedHashTable._HEAD_OFFSET) { |
329 E key = _table._key(offset); | 337 E key = _table._key(offset); |
330 action(key); | 338 action(key); |
331 _table._checkModification(modificationCount); | 339 _table._checkModification(modificationCount); |
332 offset = _table._next(offset); | 340 offset = _table._next(offset); |
(...skipping 660 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
993 | 1001 |
994 _LinkedHashMapTable() : super(_INITIAL_CAPACITY); | 1002 _LinkedHashMapTable() : super(_INITIAL_CAPACITY); |
995 | 1003 |
996 V _value(int offset) => _table[offset + _VALUE_INDEX]; | 1004 V _value(int offset) => _table[offset + _VALUE_INDEX]; |
997 void _setValue(int offset, V value) { _table[offset + _VALUE_INDEX] = value; } | 1005 void _setValue(int offset, V value) { _table[offset + _VALUE_INDEX] = value; } |
998 | 1006 |
999 _copyEntry(List oldTable, int fromOffset, int toOffset) { | 1007 _copyEntry(List oldTable, int fromOffset, int toOffset) { |
1000 _table[toOffset + _VALUE_INDEX] = oldTable[fromOffset + _VALUE_INDEX]; | 1008 _table[toOffset + _VALUE_INDEX] = oldTable[fromOffset + _VALUE_INDEX]; |
1001 } | 1009 } |
1002 } | 1010 } |
OLD | NEW |