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 |