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

Side by Side Diff: sdk/lib/_collection_dev/list.dart

Issue 12207205: Revert "Remove deprecated mappedBy." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 months 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 part of dart._collection.dev; 5 part of dart._collection.dev;
6 6
7 /** 7 /**
8 * Class implementing the read-operations on [List]. 8 * Class implementing the read-operations on [List].
9 * 9 *
10 * Implements all read-only operations, except [:operator[]:] and [:length:], 10 * Implements all read-only operations, except [:operator[]:] and [:length:],
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 for (int i = 0; i < length; i++) { 90 for (int i = 0; i < length; i++) {
91 result.add(this[start + i]); 91 result.add(this[start + i]);
92 } 92 }
93 return result; 93 return result;
94 } 94 }
95 95
96 Iterable map(f(E element)) { 96 Iterable map(f(E element)) {
97 return new MappedIterable(this, f); 97 return new MappedIterable(this, f);
98 } 98 }
99 99
100 List mappedBy(f(E element)) {
101 return new MappedList(this, f);
102 }
103
100 Iterable<E> take(int n) { 104 Iterable<E> take(int n) {
101 return new SubListIterable(this, 0, n); 105 return new SubListIterable(this, 0, n);
102 } 106 }
103 107
104 Iterable<E> skip(int n) { 108 Iterable<E> skip(int n) {
105 return new SubListIterable(this, n, null); 109 return new SubListIterable(this, n, null);
106 } 110 }
107 111
108 Iterable<E> get reversed => new ReversedListIterable(this); 112 Iterable<E> get reversed => new ReversedListIterable(this);
109 113
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
275 throw new UnsupportedError( 279 throw new UnsupportedError(
276 "Cannot remove from an unmodifiable list"); 280 "Cannot remove from an unmodifiable list");
277 } 281 }
278 282
279 void insertRange(int start, int length, [E initialValue]) { 283 void insertRange(int start, int length, [E initialValue]) {
280 throw new UnsupportedError( 284 throw new UnsupportedError(
281 "Cannot insert range in an unmodifiable list"); 285 "Cannot insert range in an unmodifiable list");
282 } 286 }
283 } 287 }
284 288
289 class MappedList<S, T> extends UnmodifiableListBase<T> {
290 final List<S> _list;
291 // TODO(ahe): Restore type when feature is implemented in dart2js
292 // checked mode. http://dartbug.com/7733
293 final /* _Transformation<S, T> */ _f;
294
295 MappedList(this._list, T this._f(S element));
296
297 T operator[](int index) => _f(_list[index]);
298 int get length => _list.length;
285 } 299 }
286 300
287 /** An empty fixed-length list. */ 301 /** An empty fixed-length list. */
288 class EmptyList<E> extends FixedLengthListBase<E> { 302 class EmptyList<E> extends FixedLengthListBase<E> {
289 int get length => 0; 303 int get length => 0;
290 E operator[](int index) { throw new RangeError.value(index); } 304 E operator[](int index) { throw new RangeError.value(index); }
291 void operator []=(int index, E value) { throw new RangeError.value(index); } 305 void operator []=(int index, E value) { throw new RangeError.value(index); }
292 Iterable<E> skip(int count) => const EmptyIterable(); 306 Iterable<E> skip(int count) => const EmptyIterable();
293 Iterable<E> take(int count) => const EmptyIterable(); 307 Iterable<E> take(int count) => const EmptyIterable();
294 Iterable<E> get reversed => const EmptyIterable(); 308 Iterable<E> get reversed => const EmptyIterable();
295 void sort([int compare(E a, E b)]) {} 309 void sort([int compare(E a, E b)]) {}
296 } 310 }
297 311
298 class ReversedListIterable<E> extends ListIterable<E> { 312 class ReversedListIterable<E> extends ListIterable<E> {
299 Iterable<E> _source; 313 Iterable<E> _source;
300 ReversedListIterable(this._source); 314 ReversedListIterable(this._source);
301 315
302 int get length => _source.length; 316 int get length => _source.length;
303 317
304 E elementAt(int index) => _source.elementAt(_source.length - 1 - index); 318 E elementAt(int index) => _source.elementAt(_source.length - 1 - index);
305 } 319 }
OLDNEW
« no previous file with comments | « sdk/lib/_collection_dev/iterable.dart ('k') | sdk/lib/_internal/compiler/implementation/lib/js_array.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698