| OLD | NEW |
| 1 // TODO(jmesserly): remove this once we have a subclassable growable list | 1 // TODO(jmesserly): remove this once we have a subclassable growable list |
| 2 // in our libraries. | 2 // in our libraries. |
| 3 | 3 |
| 4 /** A [List] proxy that you can subclass. */ | 4 /// A [List] proxy that you can subclass. |
| 5 library list_proxy; | 5 library list_proxy; |
| 6 | 6 |
| 7 import 'dart:collection'; | 7 import 'dart:collection'; |
| 8 import 'dart:math' show Random; | 8 import 'dart:math' show Random; |
| 9 | 9 |
| 10 // TOOD(jmesserly): this needs to be removed, but fixing NodeList is tricky. | 10 // TOOD(jmesserly): this needs to be removed, but fixing NodeList is tricky. |
| 11 class ListProxy<E> extends IterableBase<E> implements List<E> { | 11 class ListProxy<E> extends IterableBase<E> implements List<E> { |
| 12 | 12 |
| 13 /** The inner [List<T>] with the actual storage. */ | 13 /// The inner [List<T>] with the actual storage. |
| 14 final List<E> _list; | 14 final List<E> _list; |
| 15 | 15 |
| 16 /** | 16 /// Creates a list proxy. |
| 17 * Creates a list proxy. | 17 /// You can optionally specify the list to use for [storage] of the items, |
| 18 * You can optionally specify the list to use for [storage] of the items, | 18 /// otherwise this will create a [List<E>]. |
| 19 * otherwise this will create a [List<E>]. | |
| 20 */ | |
| 21 ListProxy([List<E> storage]) | 19 ListProxy([List<E> storage]) |
| 22 : _list = storage != null ? storage : <E>[]; | 20 : _list = storage != null ? storage : <E>[]; |
| 23 | 21 |
| 24 // TODO(jmesserly): This should be on List. | 22 // TODO(jmesserly): This should be on List. |
| 25 // See http://code.google.com/p/dart/issues/detail?id=947 | 23 // See http://code.google.com/p/dart/issues/detail?id=947 |
| 26 bool remove(E item) { | 24 bool remove(E item) { |
| 27 int i = indexOf(item); | 25 int i = indexOf(item); |
| 28 if (i == -1) return false; | 26 if (i == -1) return false; |
| 29 removeAt(i); | 27 removeAt(i); |
| 30 return true; | 28 return true; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 Map<int, E> asMap() => _list.asMap(); | 79 Map<int, E> asMap() => _list.asMap(); |
| 82 | 80 |
| 83 void replaceRange(int start, int end, Iterable<E> newContents) => | 81 void replaceRange(int start, int end, Iterable<E> newContents) => |
| 84 _list.replaceRange(start, end, newContents); | 82 _list.replaceRange(start, end, newContents); |
| 85 | 83 |
| 86 void setAll(int index, Iterable<E> iterable) => _list.setAll(index, iterable); | 84 void setAll(int index, Iterable<E> iterable) => _list.setAll(index, iterable); |
| 87 | 85 |
| 88 void fillRange(int start, int end, [E fillValue]) | 86 void fillRange(int start, int end, [E fillValue]) |
| 89 => _list.fillRange(start, end, fillValue); | 87 => _list.fillRange(start, end, fillValue); |
| 90 } | 88 } |
| OLD | NEW |