| 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 part of dart.dom.html; | 5 part of dart.dom.html; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * A list which just wraps another list, for either intercepting list calls or | 8 * A list which just wraps another list, for either intercepting list calls or |
| 9 * retyping the list (for example, from List<A> to List<B> where B extends A). | 9 * retyping the list (for example, from List<A> to List<B> where B extends A). |
| 10 */ | 10 */ |
| 11 class _WrappedList<E extends Node> extends ListBase<E> | 11 class _WrappedList<E extends Node> extends ListBase<E> |
| 12 implements NodeListWrapper { | 12 implements NodeListWrapper { |
| 13 final List _list; | 13 final List<Node> _list; |
| 14 | 14 |
| 15 _WrappedList(this._list); | 15 _WrappedList(this._list); |
| 16 | 16 |
| 17 // Iterable APIs | 17 // Iterable APIs |
| 18 | 18 |
| 19 Iterator<E> get iterator => new _WrappedIterator(_list.iterator); | 19 Iterator<E> get iterator => new _WrappedIterator(_list.iterator); |
| 20 | 20 |
| 21 int get length => _list.length; | 21 int get length => _list.length; |
| 22 | 22 |
| 23 // Collection APIs | 23 // Collection APIs |
| 24 | 24 |
| 25 void add(E element) { _list.add(element); } | 25 void add(E element) { _list.add(element); } |
| 26 | 26 |
| 27 bool remove(Object element) => _list.remove(element); | 27 bool remove(Object element) => _list.remove(element); |
| 28 | 28 |
| 29 void clear() { _list.clear(); } | 29 void clear() { _list.clear(); } |
| 30 | 30 |
| 31 // List APIs | 31 // List APIs |
| 32 | 32 |
| 33 E operator [](int index) => _list[index]; | 33 E operator [](int index) => _list[index] as E; |
| 34 | 34 |
| 35 void operator []=(int index, E value) { _list[index] = value; } | 35 void operator []=(int index, E value) { _list[index] = value; } |
| 36 | 36 |
| 37 set length(int newLength) { _list.length = newLength; } | 37 set length(int newLength) { _list.length = newLength; } |
| 38 | 38 |
| 39 void sort([int compare(E a, E b)]) { _list.sort(compare); } | 39 void sort([int compare(E a, E b)]) { _list.sort((Node a, Node b) => compare(a
as E, b as E)); } |
| 40 | 40 |
| 41 int indexOf(Object element, [int start = 0]) => _list.indexOf(element, start); | 41 int indexOf(Object element, [int start = 0]) => _list.indexOf(element, start); |
| 42 | 42 |
| 43 int lastIndexOf(Object element, [int start]) => _list.lastIndexOf(element, sta
rt); | 43 int lastIndexOf(Object element, [int start]) => _list.lastIndexOf(element, sta
rt); |
| 44 | 44 |
| 45 void insert(int index, E element) => _list.insert(index, element); | 45 void insert(int index, E element) => _list.insert(index, element); |
| 46 | 46 |
| 47 E removeAt(int index) => _list.removeAt(index); | 47 E removeAt(int index) => _list.removeAt(index) as E; |
| 48 | 48 |
| 49 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { | 49 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) { |
| 50 _list.setRange(start, end, iterable, skipCount); | 50 _list.setRange(start, end, iterable, skipCount); |
| 51 } | 51 } |
| 52 | 52 |
| 53 void removeRange(int start, int end) { _list.removeRange(start, end); } | 53 void removeRange(int start, int end) { _list.removeRange(start, end); } |
| 54 | 54 |
| 55 void replaceRange(int start, int end, Iterable<E> iterable) { | 55 void replaceRange(int start, int end, Iterable<E> iterable) { |
| 56 _list.replaceRange(start, end, iterable); | 56 _list.replaceRange(start, end, iterable); |
| 57 } | 57 } |
| 58 | 58 |
| 59 void fillRange(int start, int end, [E fillValue]) { | 59 void fillRange(int start, int end, [E fillValue]) { |
| 60 _list.fillRange(start, end, fillValue); | 60 _list.fillRange(start, end, fillValue); |
| 61 } | 61 } |
| 62 | 62 |
| 63 List<Node> get rawList => _list; | 63 List<Node> get rawList => _list; |
| 64 } | 64 } |
| 65 | 65 |
| 66 /** | 66 /** |
| 67 * Iterator wrapper for _WrappedList. | 67 * Iterator wrapper for _WrappedList. |
| 68 */ | 68 */ |
| 69 class _WrappedIterator<E> implements Iterator<E> { | 69 class _WrappedIterator<E> implements Iterator<E> { |
| 70 Iterator _iterator; | 70 Iterator<Node> _iterator; |
| 71 | 71 |
| 72 _WrappedIterator(this._iterator); | 72 _WrappedIterator(this._iterator); |
| 73 | 73 |
| 74 bool moveNext() { | 74 bool moveNext() { |
| 75 return _iterator.moveNext(); | 75 return _iterator.moveNext(); |
| 76 } | 76 } |
| 77 | 77 |
| 78 E get current => _iterator.current; | 78 E get current => _iterator.current as E; |
| 79 } | 79 } |
| OLD | NEW |