| 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 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 693 assert(!_isFree(_table[offset])); | 693 assert(!_isFree(_table[offset])); |
| 694 _setKey(offset, _TOMBSTONE); | 694 _setKey(offset, _TOMBSTONE); |
| 695 _deletedCount++; | 695 _deletedCount++; |
| 696 _recordModification(); | 696 _recordModification(); |
| 697 } | 697 } |
| 698 } | 698 } |
| 699 | 699 |
| 700 /** | 700 /** |
| 701 * Generic iterable based on a [_HashTable]. | 701 * Generic iterable based on a [_HashTable]. |
| 702 */ | 702 */ |
| 703 abstract class _HashTableIterable<E> extends Iterable<E> { | 703 abstract class _HashTableIterable<E> extends IterableBase<E> { |
| 704 final _HashTable _hashTable; | 704 final _HashTable _hashTable; |
| 705 _HashTableIterable(this._hashTable); | 705 _HashTableIterable(this._hashTable); |
| 706 | 706 |
| 707 Iterator<E> get iterator; | 707 Iterator<E> get iterator; |
| 708 | 708 |
| 709 /** | 709 /** |
| 710 * Return the iterated value for a given entry. | 710 * Return the iterated value for a given entry. |
| 711 */ | 711 */ |
| 712 E _valueAt(int offset, Object key); | 712 E _valueAt(int offset, Object key); |
| 713 | 713 |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 917 } | 917 } |
| 918 | 918 |
| 919 void _deleteEntry(int offset) { | 919 void _deleteEntry(int offset) { |
| 920 _unlink(offset); | 920 _unlink(offset); |
| 921 _setKey(offset, _TOMBSTONE); | 921 _setKey(offset, _TOMBSTONE); |
| 922 _deletedCount++; | 922 _deletedCount++; |
| 923 _recordModification(); | 923 _recordModification(); |
| 924 } | 924 } |
| 925 } | 925 } |
| 926 | 926 |
| 927 class _LinkedHashTableKeyIterable<K> extends Iterable<K> { | 927 class _LinkedHashTableKeyIterable<K> extends IterableBase<K> { |
| 928 final _LinkedHashTable<K> _table; | 928 final _LinkedHashTable<K> _table; |
| 929 _LinkedHashTableKeyIterable(this._table); | 929 _LinkedHashTableKeyIterable(this._table); |
| 930 Iterator<K> get iterator => new _LinkedHashTableKeyIterator<K>(_table); | 930 Iterator<K> get iterator => new _LinkedHashTableKeyIterator<K>(_table); |
| 931 | 931 |
| 932 bool contains(Object value) => _table._get(value) >= 0; | 932 bool contains(Object value) => _table._get(value) >= 0; |
| 933 | 933 |
| 934 int get length => _table._elementCount; | 934 int get length => _table._elementCount; |
| 935 } | 935 } |
| 936 | 936 |
| 937 class _LinkedHashTableKeyIterator<K> extends _LinkedHashTableIterator<K> { | 937 class _LinkedHashTableKeyIterator<K> extends _LinkedHashTableIterator<K> { |
| 938 _LinkedHashTableKeyIterator(_LinkedHashTable<K> hashTable): super(hashTable); | 938 _LinkedHashTableKeyIterator(_LinkedHashTable<K> hashTable): super(hashTable); |
| 939 | 939 |
| 940 K _getCurrent(int offset) => _hashTable._key(offset); | 940 K _getCurrent(int offset) => _hashTable._key(offset); |
| 941 } | 941 } |
| 942 | 942 |
| 943 class _LinkedHashTableValueIterable<V> extends Iterable<V> { | 943 class _LinkedHashTableValueIterable<V> extends IterableBase<V> { |
| 944 final _LinkedHashTable _hashTable; | 944 final _LinkedHashTable _hashTable; |
| 945 final int _valueIndex; | 945 final int _valueIndex; |
| 946 _LinkedHashTableValueIterable(this._hashTable, this._valueIndex); | 946 _LinkedHashTableValueIterable(this._hashTable, this._valueIndex); |
| 947 Iterator<V> get iterator => | 947 Iterator<V> get iterator => |
| 948 new _LinkedHashTableValueIterator<V>(_hashTable, _valueIndex); | 948 new _LinkedHashTableValueIterator<V>(_hashTable, _valueIndex); |
| 949 int get length => _hashTable._elementCount; | 949 int get length => _hashTable._elementCount; |
| 950 } | 950 } |
| 951 | 951 |
| 952 class _LinkedHashTableValueIterator<V> extends _LinkedHashTableIterator<V> { | 952 class _LinkedHashTableValueIterator<V> extends _LinkedHashTableIterator<V> { |
| 953 final int _valueIndex; | 953 final int _valueIndex; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 | 993 |
| 994 _LinkedHashMapTable() : super(_INITIAL_CAPACITY); | 994 _LinkedHashMapTable() : super(_INITIAL_CAPACITY); |
| 995 | 995 |
| 996 V _value(int offset) => _table[offset + _VALUE_INDEX]; | 996 V _value(int offset) => _table[offset + _VALUE_INDEX]; |
| 997 void _setValue(int offset, V value) { _table[offset + _VALUE_INDEX] = value; } | 997 void _setValue(int offset, V value) { _table[offset + _VALUE_INDEX] = value; } |
| 998 | 998 |
| 999 _copyEntry(List oldTable, int fromOffset, int toOffset) { | 999 _copyEntry(List oldTable, int fromOffset, int toOffset) { |
| 1000 _table[toOffset + _VALUE_INDEX] = oldTable[fromOffset + _VALUE_INDEX]; | 1000 _table[toOffset + _VALUE_INDEX] = oldTable[fromOffset + _VALUE_INDEX]; |
| 1001 } | 1001 } |
| 1002 } | 1002 } |
| OLD | NEW |