| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, 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 |
| 6 // TODO(srdjan): Use shared array implementation. | 6 // TODO(srdjan): Use shared array implementation. |
| 7 class _ObjectArray<E> implements List<E> { | 7 class _ObjectArray<E> implements List<E> { |
| 8 | 8 |
| 9 factory _ObjectArray(int length) native "ObjectArray_allocate"; | 9 factory _ObjectArray(int length) native "ObjectArray_allocate"; |
| 10 | 10 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 E removeAt(int index) { | 27 E removeAt(int index) { |
| 28 throw new UnsupportedError( | 28 throw new UnsupportedError( |
| 29 "Cannot remove element of a non-extendable array"); | 29 "Cannot remove element of a non-extendable array"); |
| 30 } | 30 } |
| 31 | 31 |
| 32 void remove(Object element) { | 32 void remove(Object element) { |
| 33 throw new UnsupportedError( | 33 throw new UnsupportedError( |
| 34 "Cannot remove element of a non-extendable array"); | 34 "Cannot remove element of a non-extendable array"); |
| 35 } | 35 } |
| 36 | 36 |
| 37 // Collection interface. | |
| 38 void removeAll(Iterable elements) { | 37 void removeAll(Iterable elements) { |
| 39 throw new UnsupportedError( | 38 throw new UnsupportedError( |
| 40 "Cannot remove element of a non-extendable array"); | 39 "Cannot remove element of a non-extendable array"); |
| 41 } | 40 } |
| 42 | 41 |
| 43 void retainAll(Iterable elements) { | 42 void retainAll(Iterable elements) { |
| 44 throw new UnsupportedError( | 43 throw new UnsupportedError( |
| 45 "Cannot remove element of a non-extendable array"); | 44 "Cannot remove element of a non-extendable array"); |
| 46 } | 45 } |
| 47 | 46 |
| 48 void removeMatching(bool test(E element)) { | 47 void removeMatching(bool test(E element)) { |
| 49 throw new UnsupportedError( | 48 throw new UnsupportedError( |
| 50 "Cannot remove element of a non-extendable array"); | 49 "Cannot remove element of a non-extendable array"); |
| 51 } | 50 } |
| 52 | 51 |
| 53 void retainMatching(bool test(E element)) { | 52 void retainMatching(bool test(E element)) { |
| 54 throw new UnsupportedError( | 53 throw new UnsupportedError( |
| 55 "Cannot remove element of a non-extendable array"); | 54 "Cannot remove element of a non-extendable array"); |
| 56 } | 55 } |
| 57 | 56 |
| 58 // List interface. | |
| 59 void setRange(int start, int length, List<E> from, [int startFrom = 0]) { | 57 void setRange(int start, int length, List<E> from, [int startFrom = 0]) { |
| 60 if (length < 0) { | 58 if (length < 0) { |
| 61 throw new ArgumentError("negative length $length"); | 59 throw new ArgumentError("negative length $length"); |
| 62 } | 60 } |
| 63 if (from is _ObjectArray) { | 61 if (from is _ObjectArray) { |
| 64 _copyFromObjectArray(from, startFrom, start, length); | 62 _copyFromObjectArray(from, startFrom, start, length); |
| 65 } else { | 63 } else { |
| 66 Arrays.copy(from, startFrom, this, start, length); | 64 Arrays.copy(from, startFrom, this, start, length); |
| 67 } | 65 } |
| 68 } | 66 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 79 | 77 |
| 80 List<E> getRange(int start, int length) { | 78 List<E> getRange(int start, int length) { |
| 81 if (length == 0) return []; | 79 if (length == 0) return []; |
| 82 Arrays.rangeCheck(this, start, length); | 80 Arrays.rangeCheck(this, start, length); |
| 83 List list = new _GrowableObjectArray<E>.withCapacity(length); | 81 List list = new _GrowableObjectArray<E>.withCapacity(length); |
| 84 list.length = length; | 82 list.length = length; |
| 85 Arrays.copy(this, start, list, 0, length); | 83 Arrays.copy(this, start, list, 0, length); |
| 86 return list; | 84 return list; |
| 87 } | 85 } |
| 88 | 86 |
| 89 // Iterable interface. | 87 // Collection interface. |
| 90 | 88 |
| 91 bool contains(E element) { | 89 bool contains(E element) { |
| 92 return IterableMixinWorkaround.contains(this, element); | 90 return IterableMixinWorkaround.contains(this, element); |
| 93 } | 91 } |
| 94 | 92 |
| 95 void forEach(f(E element)) { | 93 void forEach(f(E element)) { |
| 96 IterableMixinWorkaround.forEach(this, f); | 94 IterableMixinWorkaround.forEach(this, f); |
| 97 } | 95 } |
| 98 | 96 |
| 99 String join([String separator]) { | 97 String join([String separator]) { |
| 100 return IterableMixinWorkaround.joinList(this, separator); | 98 return IterableMixinWorkaround.joinList(this, separator); |
| 101 } | 99 } |
| 102 | 100 |
| 103 Iterable map(f(E element)) { | |
| 104 return IterableMixinWorkaround.map(this, f); | |
| 105 } | |
| 106 | |
| 107 List mappedBy(f(E element)) { | 101 List mappedBy(f(E element)) { |
| 108 IterableMixinWorkaround.mappedByList(this, f); | 102 return IterableMixinWorkaround.mappedByList(this, f); |
| 109 } | 103 } |
| 110 | 104 |
| 111 reduce(initialValue, combine(previousValue, E element)) { | 105 reduce(initialValue, combine(previousValue, E element)) { |
| 112 return IterableMixinWorkaround.reduce(this, initialValue, combine); | 106 return IterableMixinWorkaround.reduce(this, initialValue, combine); |
| 113 } | 107 } |
| 114 | 108 |
| 115 Iterable<E> where(bool f(E element)) { | 109 Iterable<E> where(bool f(E element)) { |
| 116 return IterableMixinWorkaround.where(this, f); | 110 return IterableMixinWorkaround.where(this, f); |
| 117 } | 111 } |
| 118 | 112 |
| 119 Iterable<E> take(int n) { | 113 List<E> take(int n) { |
| 120 return IterableMixinWorkaround.takeList(this, n); | 114 return IterableMixinWorkaround.takeList(this, n); |
| 121 } | 115 } |
| 122 | 116 |
| 123 Iterable<E> takeWhile(bool test(E value)) { | 117 Iterable<E> takeWhile(bool test(E value)) { |
| 124 return IterableMixinWorkaround.takeWhile(this, test); | 118 return IterableMixinWorkaround.takeWhile(this, test); |
| 125 } | 119 } |
| 126 | 120 |
| 127 Iterable<E> skip(int n) { | 121 List<E> skip(int n) { |
| 128 return IterableMixinWorkaround.skipList(this, n); | 122 return IterableMixinWorkaround.skipList(this, n); |
| 129 } | 123 } |
| 130 | 124 |
| 131 Iterable<E> skipWhile(bool test(E value)) { | 125 Iterable<E> skipWhile(bool test(E value)) { |
| 132 return IterableMixinWorkaround.skipWhile(this, test); | 126 return IterableMixinWorkaround.skipWhile(this, test); |
| 133 } | 127 } |
| 134 | 128 |
| 135 bool every(bool f(E element)) { | 129 bool every(bool f(E element)) { |
| 136 return IterableMixinWorkaround.every(this, f); | 130 return IterableMixinWorkaround.every(this, f); |
| 137 } | 131 } |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 // Collection interface. | 317 // Collection interface. |
| 324 | 318 |
| 325 bool contains(E element) { | 319 bool contains(E element) { |
| 326 return IterableMixinWorkaround.contains(this, element); | 320 return IterableMixinWorkaround.contains(this, element); |
| 327 } | 321 } |
| 328 | 322 |
| 329 void forEach(f(E element)) { | 323 void forEach(f(E element)) { |
| 330 IterableMixinWorkaround.forEach(this, f); | 324 IterableMixinWorkaround.forEach(this, f); |
| 331 } | 325 } |
| 332 | 326 |
| 333 Iterable map(f(E element)) { | |
| 334 return IterableMixinWorkaround.map(this, f); | |
| 335 } | |
| 336 | |
| 337 List mappedBy(f(E element)) { | 327 List mappedBy(f(E element)) { |
| 338 return IterableMixinWorkaround.mappedByList(this, f); | 328 return IterableMixinWorkaround.mappedByList(this, f); |
| 339 } | 329 } |
| 340 | 330 |
| 341 String join([String separator]) { | 331 String join([String separator]) { |
| 342 return IterableMixinWorkaround.joinList(this, separator); | 332 return IterableMixinWorkaround.joinList(this, separator); |
| 343 } | 333 } |
| 344 | 334 |
| 345 reduce(initialValue, combine(previousValue, E element)) { | 335 reduce(initialValue, combine(previousValue, E element)) { |
| 346 return IterableMixinWorkaround.reduce(this, initialValue, combine); | 336 return IterableMixinWorkaround.reduce(this, initialValue, combine); |
| 347 } | 337 } |
| 348 | 338 |
| 349 Iterable<E> where(bool f(E element)) { | 339 Iterable<E> where(bool f(E element)) { |
| 350 return IterableMixinWorkaround.where(this, f); | 340 return IterableMixinWorkaround.where(this, f); |
| 351 } | 341 } |
| 352 | 342 |
| 353 Iterable<E> take(int n) { | 343 List<E> take(int n) { |
| 354 return IterableMixinWorkaround.takeList(this, n); | 344 return IterableMixinWorkaround.takeList(this, n); |
| 355 } | 345 } |
| 356 | 346 |
| 357 Iterable<E> takeWhile(bool test(E value)) { | 347 Iterable<E> takeWhile(bool test(E value)) { |
| 358 return IterableMixinWorkaround.takeWhile(this, test); | 348 return IterableMixinWorkaround.takeWhile(this, test); |
| 359 } | 349 } |
| 360 | 350 |
| 361 Iterable<E> skip(int n) { | 351 List<E> skip(int n) { |
| 362 return IterableMixinWorkaround.skipList(this, n); | 352 return IterableMixinWorkaround.skipList(this, n); |
| 363 } | 353 } |
| 364 | 354 |
| 365 Iterable<E> skipWhile(bool test(E value)) { | 355 Iterable<E> skipWhile(bool test(E value)) { |
| 366 return IterableMixinWorkaround.skipWhile(this, test); | 356 return IterableMixinWorkaround.skipWhile(this, test); |
| 367 } | 357 } |
| 368 | 358 |
| 369 bool every(bool f(E element)) { | 359 bool every(bool f(E element)) { |
| 370 return IterableMixinWorkaround.every(this, f); | 360 return IterableMixinWorkaround.every(this, f); |
| 371 } | 361 } |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 } | 488 } |
| 499 _position = _length; | 489 _position = _length; |
| 500 _current = null; | 490 _current = null; |
| 501 return false; | 491 return false; |
| 502 } | 492 } |
| 503 | 493 |
| 504 E get current { | 494 E get current { |
| 505 return _current; | 495 return _current; |
| 506 } | 496 } |
| 507 } | 497 } |
| OLD | NEW |