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

Unified Diff: corelib/src/implementation/linked_hash_map.dart

Issue 10890030: Move core and coreimpl from corelib/ to lib/core and lib/coreimpl. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebase. Created 8 years, 4 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
« no previous file with comments | « corelib/src/implementation/hash_map_set.dart ('k') | corelib/src/implementation/list.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: corelib/src/implementation/linked_hash_map.dart
diff --git a/corelib/src/implementation/linked_hash_map.dart b/corelib/src/implementation/linked_hash_map.dart
deleted file mode 100644
index daa2062d20c4bb2d7441b71233d86b1ed878f5bc..0000000000000000000000000000000000000000
--- a/corelib/src/implementation/linked_hash_map.dart
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-/**
- * This class represents a pair of two objects, used by LinkedHashMap
- * to store a {key, value} in a list.
- */
-class KeyValuePair<K, V> {
- KeyValuePair(this.key, this.value) {}
-
- final K key;
- V value;
-}
-
-/**
- * A LinkedHashMap is a hash map that preserves the insertion order
- * when iterating over the keys or the values. Updating the value of a
- * key does not change the order.
- */
-class LinkedHashMapImplementation<K extends Hashable, V>
- implements LinkedHashMap<K, V> {
- DoubleLinkedQueue<KeyValuePair<K, V>> _list;
- HashMap<K, DoubleLinkedQueueEntry<KeyValuePair<K, V>>> _map;
-
- LinkedHashMapImplementation() {
- _map = new HashMap<K, DoubleLinkedQueueEntry<KeyValuePair<K, V>>>();
- _list = new DoubleLinkedQueue<KeyValuePair<K, V>>();
- }
-
- factory LinkedHashMapImplementation.from(Map<K, V> other) {
- Map<K, V> result = new LinkedHashMapImplementation<K, V>();
- other.forEach((K key, V value) { result[key] = value; });
- return result;
- }
-
- void operator []=(K key, V value) {
- if (_map.containsKey(key)) {
- _map[key].element.value = value;
- } else {
- _list.addLast(new KeyValuePair<K, V>(key, value));
- _map[key] = _list.lastEntry();
- }
- }
-
- V operator [](K key) {
- DoubleLinkedQueueEntry<KeyValuePair<K, V>> entry = _map[key];
- if (entry === null) return null;
- return entry.element.value;
- }
-
- V remove(K key) {
- DoubleLinkedQueueEntry<KeyValuePair<K, V>> entry = _map.remove(key);
- if (entry === null) return null;
- entry.remove();
- return entry.element.value;
- }
-
- V putIfAbsent(K key, V ifAbsent()) {
- V value = this[key];
- if ((this[key] === null) && !(containsKey(key))) {
- value = ifAbsent();
- this[key] = value;
- }
- return value;
- }
-
- Collection<K> getKeys() {
- List<K> list = new List<K>(length);
- int index = 0;
- _list.forEach(void _(KeyValuePair<K, V> entry) {
- list[index++] = entry.key;
- });
- assert(index == length);
- return list;
- }
-
-
- Collection<V> getValues() {
- List<V> list = new List<V>(length);
- int index = 0;
- _list.forEach(void _(KeyValuePair<K, V> entry) {
- list[index++] = entry.value;
- });
- assert(index == length);
- return list;
- }
-
- void forEach(void f(K key, V value)) {
- _list.forEach(void _(KeyValuePair<K, V> entry) {
- f(entry.key, entry.value);
- });
- }
-
- bool containsKey(K key) {
- return _map.containsKey(key);
- }
-
- bool containsValue(V value) {
- return _list.some(bool _(KeyValuePair<K, V> entry) {
- return (entry.value == value);
- });
- }
-
- int get length() {
- return _map.length;
- }
-
- bool isEmpty() {
- return length == 0;
- }
-
- void clear() {
- _map.clear();
- _list.clear();
- }
-
- String toString() {
- return Maps.mapToString(this);
- }
-}
« no previous file with comments | « corelib/src/implementation/hash_map_set.dart ('k') | corelib/src/implementation/list.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698