| 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 /** | 5 /** |
| 6 * Delegating wrappers for [Iterable], [List], [Set], [Queue] and [Map]. | 6 * Delegating wrappers for [Iterable], [List], [Set], [Queue] and [Map]. |
| 7 * | 7 * |
| 8 * Also adds unmodifiable views for `Set` and `Map`, and a fixed length | 8 * Also adds unmodifiable views for `Set` and `Map`, and a fixed length |
| 9 * view for `List`. The unmodifable list view from `dart:collection` is exported | 9 * view for `List`. The unmodifable list view from `dart:collection` is exported |
| 10 * as well, just for completeness. | 10 * as well, just for completeness. |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 * This class can be used hide non-`Iterable` methods of an iterable object, | 24 * This class can be used hide non-`Iterable` methods of an iterable object, |
| 25 * or it can be extended to add extra functionality on top of an existing | 25 * or it can be extended to add extra functionality on top of an existing |
| 26 * iterable object. | 26 * iterable object. |
| 27 */ | 27 */ |
| 28 class DelegatingIterable<E> implements Iterable<E> { | 28 class DelegatingIterable<E> implements Iterable<E> { |
| 29 final Iterable<E> _base; | 29 final Iterable<E> _base; |
| 30 | 30 |
| 31 /** | 31 /** |
| 32 * Create a wrapper that forwards operations to [base]. | 32 * Create a wrapper that forwards operations to [base]. |
| 33 */ | 33 */ |
| 34 DelegatingIterable(Iterable<E> base) : _base = base; | 34 const DelegatingIterable(Iterable<E> base) : _base = base; |
| 35 | 35 |
| 36 bool any(bool test(E element)) => _base.any(test); | 36 bool any(bool test(E element)) => _base.any(test); |
| 37 | 37 |
| 38 bool contains(Object element) => _base.contains(element); | 38 bool contains(Object element) => _base.contains(element); |
| 39 | 39 |
| 40 E elementAt(int index) => _base.elementAt(index); | 40 E elementAt(int index) => _base.elementAt(index); |
| 41 | 41 |
| 42 bool every(bool test(E element)) => _base.every(test); | 42 bool every(bool test(E element)) => _base.every(test); |
| 43 | 43 |
| 44 Iterable expand(Iterable f(E element)) => _base.expand(f); | 44 Iterable expand(Iterable f(E element)) => _base.expand(f); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 95 | 95 |
| 96 | 96 |
| 97 /** | 97 /** |
| 98 * Creates a [List] that delegates all operations to a base list. | 98 * Creates a [List] that delegates all operations to a base list. |
| 99 * | 99 * |
| 100 * This class can be used hide non-`List` methods of a list object, | 100 * This class can be used hide non-`List` methods of a list object, |
| 101 * or it can be extended to add extra functionality on top of an existing | 101 * or it can be extended to add extra functionality on top of an existing |
| 102 * list object. | 102 * list object. |
| 103 */ | 103 */ |
| 104 class DelegatingList<E> extends DelegatingIterable<E> implements List<E> { | 104 class DelegatingList<E> extends DelegatingIterable<E> implements List<E> { |
| 105 DelegatingList(List<E> base) : super(base); | 105 const DelegatingList(List<E> base) : super(base); |
| 106 | 106 |
| 107 List<E> get _listBase => _base; | 107 List<E> get _listBase => _base; |
| 108 | 108 |
| 109 E operator [](int index) => _listBase[index]; | 109 E operator [](int index) => _listBase[index]; |
| 110 | 110 |
| 111 void operator []=(int index, E value) { | 111 void operator []=(int index, E value) { |
| 112 _listBase[index] = value; | 112 _listBase[index] = value; |
| 113 } | 113 } |
| 114 | 114 |
| 115 void add(E value) { | 115 void add(E value) { |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 | 194 |
| 195 | 195 |
| 196 /** | 196 /** |
| 197 * Creates a [Set] that delegates all operations to a base set. | 197 * Creates a [Set] that delegates all operations to a base set. |
| 198 * | 198 * |
| 199 * This class can be used hide non-`Set` methods of a set object, | 199 * This class can be used hide non-`Set` methods of a set object, |
| 200 * or it can be extended to add extra functionality on top of an existing | 200 * or it can be extended to add extra functionality on top of an existing |
| 201 * set object. | 201 * set object. |
| 202 */ | 202 */ |
| 203 class DelegatingSet<E> extends DelegatingIterable<E> implements Set<E> { | 203 class DelegatingSet<E> extends DelegatingIterable<E> implements Set<E> { |
| 204 DelegatingSet(Set<E> base) : super(base); | 204 const DelegatingSet(Set<E> base) : super(base); |
| 205 | 205 |
| 206 Set<E> get _setBase => _base; | 206 Set<E> get _setBase => _base; |
| 207 | 207 |
| 208 bool add(E value) => _setBase.add(value); | 208 bool add(E value) => _setBase.add(value); |
| 209 | 209 |
| 210 void addAll(Iterable<E> elements) { | 210 void addAll(Iterable<E> elements) { |
| 211 _setBase.addAll(elements); | 211 _setBase.addAll(elements); |
| 212 } | 212 } |
| 213 | 213 |
| 214 void clear() { | 214 void clear() { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 245 } | 245 } |
| 246 | 246 |
| 247 /** | 247 /** |
| 248 * Creates a [Queue] that delegates all operations to a base queue. | 248 * Creates a [Queue] that delegates all operations to a base queue. |
| 249 * | 249 * |
| 250 * This class can be used hide non-`Queue` methods of a queue object, | 250 * This class can be used hide non-`Queue` methods of a queue object, |
| 251 * or it can be extended to add extra functionality on top of an existing | 251 * or it can be extended to add extra functionality on top of an existing |
| 252 * queue object. | 252 * queue object. |
| 253 */ | 253 */ |
| 254 class DelegatingQueue<E> extends DelegatingIterable<E> implements Queue<E> { | 254 class DelegatingQueue<E> extends DelegatingIterable<E> implements Queue<E> { |
| 255 DelegatingQueue(Queue<E> queue) : super(queue); | 255 const DelegatingQueue(Queue<E> queue) : super(queue); |
| 256 | 256 |
| 257 Queue<E> get _baseQueue => _base; | 257 Queue<E> get _baseQueue => _base; |
| 258 | 258 |
| 259 void add(E value) { | 259 void add(E value) { |
| 260 _baseQueue.add(value); | 260 _baseQueue.add(value); |
| 261 } | 261 } |
| 262 | 262 |
| 263 void addAll(Iterable<E> iterable) { | 263 void addAll(Iterable<E> iterable) { |
| 264 _baseQueue.addAll(iterable); | 264 _baseQueue.addAll(iterable); |
| 265 } | 265 } |
| (...skipping 24 matching lines...) Expand all Loading... |
| 290 /** | 290 /** |
| 291 * Creates a [Map] that delegates all operations to a base map. | 291 * Creates a [Map] that delegates all operations to a base map. |
| 292 * | 292 * |
| 293 * This class can be used hide non-`Map` methods of an object that extends | 293 * This class can be used hide non-`Map` methods of an object that extends |
| 294 * `Map`, or it can be extended to add extra functionality on top of an existing | 294 * `Map`, or it can be extended to add extra functionality on top of an existing |
| 295 * map object. | 295 * map object. |
| 296 */ | 296 */ |
| 297 class DelegatingMap<K, V> implements Map<K, V> { | 297 class DelegatingMap<K, V> implements Map<K, V> { |
| 298 final Map<K, V> _base; | 298 final Map<K, V> _base; |
| 299 | 299 |
| 300 DelegatingMap(Map<K, V> base) : _base = base; | 300 const DelegatingMap(Map<K, V> base) : _base = base; |
| 301 | 301 |
| 302 V operator [](Object key) => _base[key]; | 302 V operator [](Object key) => _base[key]; |
| 303 | 303 |
| 304 void operator []=(K key, V value) { | 304 void operator []=(K key, V value) { |
| 305 _base[key] = value; | 305 _base[key] = value; |
| 306 } | 306 } |
| 307 | 307 |
| 308 void addAll(Map<K, V> other) { | 308 void addAll(Map<K, V> other) { |
| 309 _base.addAll(other); | 309 _base.addAll(other); |
| 310 } | 310 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 330 int get length => _base.length; | 330 int get length => _base.length; |
| 331 | 331 |
| 332 V putIfAbsent(K key, V ifAbsent()) => _base.putIfAbsent(key, ifAbsent); | 332 V putIfAbsent(K key, V ifAbsent()) => _base.putIfAbsent(key, ifAbsent); |
| 333 | 333 |
| 334 V remove(Object key) => _base.remove(key); | 334 V remove(Object key) => _base.remove(key); |
| 335 | 335 |
| 336 Iterable<V> get values => _base.values; | 336 Iterable<V> get values => _base.values; |
| 337 | 337 |
| 338 String toString() => _base.toString(); | 338 String toString() => _base.toString(); |
| 339 } | 339 } |
| OLD | NEW |