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

Side by Side Diff: pkg/collection_helpers/lib/wrappers.dart

Issue 113883002: Create associated packages for the dart:collection and dart:async libs. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update SDK dependency to 1.0.0 Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 @deprecated
6 * Delegating wrappers for [Iterable], [List], [Set], [Queue] and [Map].
7 *
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
10 * as well, just for completeness.
11 */
12 library dart.collection_helpers.wrappers; 6 library dart.collection_helpers.wrappers;
13 7
14 import "dart:collection"; 8 export "package:collection/wrappers.dart";
15 import "dart:math" show Random;
16
17 export "dart:collection" show UnmodifiableListView;
18
19 part "unmodifiable_wrappers.dart";
20
21 /**
22 * Creates an [Iterable] that delegates all operations to a base iterable.
23 *
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
26 * iterable object.
27 */
28 class DelegatingIterable<E> implements Iterable<E> {
29 Iterable<E> _base;
30
31 /**
32 * Create a wrapper that forwards operations to [base].
33 */
34 DelegatingIterable(Iterable<E> base) : _base = base;
35
36 bool any(bool test(E element)) => _base.any(test);
37
38 bool contains(Object element) => _base.contains(element);
39
40 E elementAt(int index) => _base.elementAt(index);
41
42 bool every(bool test(E element)) => _base.every(test);
43
44 Iterable expand(Iterable f(E element)) => _base.expand(f);
45
46 E get first => _base.first;
47
48 E firstWhere(bool test(E element), {E orElse()}) =>
49 _base.firstWhere(test, orElse: orElse);
50
51 fold(initialValue, combine(previousValue, E element)) =>
52 _base.fold(initialValue, combine);
53
54 void forEach(void f(E element)) => _base.forEach(f);
55
56 bool get isEmpty => _base.isEmpty;
57
58 bool get isNotEmpty => _base.isNotEmpty;
59
60 Iterator<E> get iterator => _base.iterator;
61
62 String join([String separator = ""]) => _base.join(separator);
63
64 E get last => _base.last;
65
66 E lastWhere(bool test(E element), {E orElse()}) =>
67 _base.lastWhere(test, orElse: orElse);
68
69 int get length => _base.length;
70
71 Iterable map(f(E element)) => _base.map(f);
72
73 E reduce(E combine(E value, E element)) => _base.reduce(combine);
74
75 E get single => _base.single;
76
77 E singleWhere(bool test(E element)) => _base.singleWhere(test);
78
79 Iterable<E> skip(int n) => _base.skip(n);
80
81 Iterable<E> skipWhile(bool test(E value)) => _base.skipWhile(test);
82
83 Iterable<E> take(int n) => _base.take(n);
84
85 Iterable<E> takeWhile(bool test(E value)) => _base.takeWhile(test);
86
87 List<E> toList({bool growable: true}) => _base.toList(growable: growable);
88
89 Set<E> toSet() => _base.toSet();
90
91 Iterable<E> where(bool test(E element)) => _base.where(test);
92 }
93
94
95 /**
96 * Creates a [List] that delegates all operations to a base list.
97 *
98 * This class can be used hide non-`List` methods of a list object,
99 * or it can be extended to add extra functionality on top of an existing
100 * list object.
101 */
102 class DelegatingList<E> extends DelegatingIterable<E> implements List<E> {
103 DelegatingList(List<E> base) : super(base);
104
105 List<E> get _listBase => _base;
106
107 E operator [](int index) => _listBase[index];
108
109 void operator []=(int index, E value) {
110 _listBase[index] = value;
111 }
112
113 void add(E value) {
114 _listBase.add(value);
115 }
116
117 void addAll(Iterable<E> iterable) {
118 _listBase.addAll(iterable);
119 }
120
121 Map<int, E> asMap() => _listBase.asMap();
122
123 void clear() {
124 _listBase.clear();
125 }
126
127 void fillRange(int start, int end, [E fillValue]) {
128 _listBase.fillRange(start, end, fillValue);
129 }
130
131 Iterable<E> getRange(int start, int end) => _listBase.getRange(start, end);
132
133 int indexOf(E element, [int start = 0]) => _listBase.indexOf(element, start);
134
135 void insert(int index, E element) {
136 _listBase.insert(index, element);
137 }
138
139 void insertAll(int index, Iterable<E> iterable) {
140 _listBase.insertAll(index, iterable);
141 }
142
143 int lastIndexOf(E element, [int start]) =>
144 _listBase.lastIndexOf(element, start);
145
146 void set length(int newLength) {
147 _listBase.length = newLength;
148 }
149
150 bool remove(Object value) => _listBase.remove(value);
151
152 E removeAt(int index) => _listBase.removeAt(index);
153
154 E removeLast() => _listBase.removeLast();
155
156 void removeRange(int start, int end) {
157 _listBase.removeRange(start, end);
158 }
159
160 void removeWhere(bool test(E element)) {
161 _listBase.removeWhere(test);
162 }
163
164 void replaceRange(int start, int end, Iterable<E> iterable) {
165 _listBase.replaceRange(start, end, iterable);
166 }
167
168 void retainWhere(bool test(E element)) {
169 _listBase.retainWhere(test);
170 }
171
172 Iterable<E> get reversed => _listBase.reversed;
173
174 void setAll(int index, Iterable<E> iterable) {
175 _listBase.setAll(index, iterable);
176 }
177
178 void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]) {
179 _listBase.setRange(start, end, iterable, skipCount);
180 }
181
182 void shuffle([Random random]) {
183 _listBase.shuffle(random);
184 }
185
186 void sort([int compare(E a, E b)]) {
187 _listBase.sort(compare);
188 }
189
190 List<E> sublist(int start, [int end]) => _listBase.sublist(start, end);
191 }
192
193
194 /**
195 * Creates a [Set] that delegates all operations to a base set.
196 *
197 * This class can be used hide non-`Set` methods of a set object,
198 * or it can be extended to add extra functionality on top of an existing
199 * set object.
200 */
201 class DelegatingSet<E> extends DelegatingIterable<E> implements Set<E> {
202 DelegatingSet(Set<E> base) : super(base);
203
204 Set<E> get _setBase => _base;
205
206 bool add(E value) => _setBase.add(value);
207
208 void addAll(Iterable<E> elements) {
209 _setBase.addAll(elements);
210 }
211
212 void clear() {
213 _setBase.clear();
214 }
215
216 bool containsAll(Iterable<Object> other) => _setBase.containsAll(other);
217
218 Set<E> difference(Set<E> other) => _setBase.difference(other);
219
220 Set<E> intersection(Set<Object> other) => _setBase.intersection(other);
221
222 E lookup(E element) => _setBase.lookup(element);
223
224 bool remove(Object value) => _setBase.remove(value);
225
226 void removeAll(Iterable<Object> elements) {
227 _setBase.removeAll(elements);
228 }
229
230 void removeWhere(bool test(E element)) {
231 _setBase.removeWhere(test);
232 }
233
234 void retainAll(Iterable<Object> elements) {
235 _setBase.retainAll(elements);
236 }
237
238 void retainWhere(bool test(E element)) {
239 _setBase.retainWhere(test);
240 }
241
242 Set<E> union(Set<E> other) => _setBase.union(other);
243 }
244
245 /**
246 * Creates a [Queue] that delegates all operations to a base queue.
247 *
248 * This class can be used hide non-`Queue` methods of a queue object,
249 * or it can be extended to add extra functionality on top of an existing
250 * queue object.
251 */
252 class DelegatingQueue<E> extends DelegatingIterable<E> implements Queue<E> {
253 DelegatingQueue(Queue<E> queue) : super(queue);
254
255 Queue<E> get _baseQueue => _base;
256
257 void add(E value) {
258 _baseQueue.add(value);
259 }
260
261 void addAll(Iterable<E> iterable) {
262 _baseQueue.addAll(iterable);
263 }
264
265 void addFirst(E value) {
266 _baseQueue.addFirst(value);
267 }
268
269 void addLast(E value) {
270 _baseQueue.addLast(value);
271 }
272
273 void clear() {
274 _baseQueue.clear();
275 }
276
277 bool remove(Object object) => _baseQueue.remove(object);
278
279 void removeWhere(bool test(E element)) { _baseQueue.removeWhere(test); }
280
281 void retainWhere(bool test(E element)) { _baseQueue.retainWhere(test); }
282
283 E removeFirst() => _baseQueue.removeFirst();
284
285 E removeLast() => _baseQueue.removeLast();
286 }
287
288 /**
289 * Creates a [Map] that delegates all operations to a base map.
290 *
291 * This class can be used hide non-`Map` methods of an object that extends
292 * `Map`, or it can be extended to add extra functionality on top of an existing
293 * map object.
294 */
295 class DelegatingMap<K, V> implements Map<K, V> {
296 Map<K, V> _base;
297 DelegatingMap(Map<K, V> base) : _base = base;
298
299 V operator [](Object key) => _base[key];
300
301 void operator []=(K key, V value) {
302 _base[key] = value;
303 }
304
305 void addAll(Map<K, V> other) {
306 _base.addAll(other);
307 }
308
309 void clear() {
310 _base.clear();
311 }
312
313 bool containsKey(Object key) => _base.containsKey(key);
314
315 bool containsValue(Object value) => _base.containsValue(value);
316
317 void forEach(void f(K key, V value)) {
318 _base.forEach(f);
319 }
320
321 bool get isEmpty => _base.isEmpty;
322
323 bool get isNotEmpty => _base.isNotEmpty;
324
325 Iterable<K> get keys => _base.keys;
326
327 int get length => _base.length;
328
329 V putIfAbsent(K key, V ifAbsent()) => _base.putIfAbsent(key, ifAbsent);
330
331 V remove(Object key) => _base.remove(key);
332
333 Iterable<V> get values => _base.values;
334 }
OLDNEW
« no previous file with comments | « pkg/collection_helpers/lib/unmodifiable_wrappers.dart ('k') | pkg/collection_helpers/pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698