| OLD | NEW |
| 1 part of dart.core; | 1 part of dart.core; |
| 2 | 2 abstract class Iterable<E> {const Iterable(); |
| 3 abstract class Iterable<E> { | 3 factory Iterable.generate(int count, [E generator(int index)]) { |
| 4 const Iterable(); | 4 if (count <= 0) return new EmptyIterable<E>(); |
| 5 factory Iterable.generate(int count, [E generator(int index)]) { | 5 return new _GeneratorIterable<E>(count, generator); |
| 6 if (count <= 0) return new EmptyIterable<E>(); | |
| 7 return new _GeneratorIterable<E>(count, generator); | |
| 8 } | 6 } |
| 9 Iterator<E> get iterator; | 7 Iterator<E> get iterator; |
| 10 Iterable map(f(E element)); | 8 Iterable map(f(E element)); |
| 11 Iterable<E> where(bool test(E element)); | 9 Iterable<E> where(bool test(E element)); |
| 12 Iterable expand(Iterable f(E element)); | 10 Iterable expand(Iterable f(E element)); |
| 13 bool contains(Object element); | 11 bool contains(Object element); |
| 14 void forEach(void f(E element)); | 12 void forEach(void f(E element)); |
| 15 E reduce(E combine(E value, E element)); | 13 E reduce(E combine(E value, E element)); |
| 16 dynamic fold(var initialValue, dynamic combine(var previousValue, E element)); | 14 dynamic fold(var initialValue, dynamic combine(var previousValue, E element)); |
| 17 bool every(bool test(E element)); | 15 bool every(bool test(E element)); |
| 18 String join([String separator = ""]) { | 16 String join([String separator = ""]) { |
| 19 StringBuffer buffer = new StringBuffer(); | 17 StringBuffer buffer = new StringBuffer(); |
| 20 buffer.writeAll(this, separator); | 18 buffer.writeAll(this, separator); |
| 21 return buffer.toString(); | 19 return buffer.toString(); |
| 22 } | 20 } |
| 23 bool any(bool test(E element)); | 21 bool any(bool test(E element)); |
| 24 List<E> toList({bool growable: true}); | 22 List<E> toList({ |
| 25 Set<E> toSet(); | 23 bool growable : true} |
| 26 int get length; | 24 ); |
| 27 bool get isEmpty; | 25 Set<E> toSet(); |
| 28 bool get isNotEmpty; | 26 int get length; |
| 29 Iterable<E> take(int count); | 27 bool get isEmpty; |
| 30 Iterable<E> takeWhile(bool test(E value)); | 28 bool get isNotEmpty; |
| 31 Iterable<E> skip(int count); | 29 Iterable<E> take(int count); |
| 32 Iterable<E> skipWhile(bool test(E value)); | 30 Iterable<E> takeWhile(bool test(E value)); |
| 33 E get first; | 31 Iterable<E> skip(int count); |
| 34 E get last; | 32 Iterable<E> skipWhile(bool test(E value)); |
| 35 E get single; | 33 E get first; |
| 36 E firstWhere(bool test(E element), {E orElse()}); | 34 E get last; |
| 37 E lastWhere(bool test(E element), {E orElse()}); | 35 E get single; |
| 38 E singleWhere(bool test(E element)); | 36 E firstWhere(bool test(E element), { |
| 39 E elementAt(int index); | 37 E orElse()} |
| 38 ); |
| 39 E lastWhere(bool test(E element), { |
| 40 E orElse()} |
| 41 ); |
| 42 E singleWhere(bool test(E element)); |
| 43 E elementAt(int index); |
| 40 } | 44 } |
| 41 typedef E _Generator<E>(int index); | 45 typedef E _Generator<E>(int index); |
| 42 class _GeneratorIterable<E> extends IterableBase<E> implements EfficientLength { | 46 class _GeneratorIterable<E> extends IterableBase<E> implements EfficientLength
{final int _start; |
| 43 final int _start; | 47 final int _end; |
| 44 final int _end; | 48 final _Generator<E> _generator; |
| 45 final _Generator<E> _generator; | 49 _GeneratorIterable(this._end, E generator(int n)) : _start = 0, _generator = (g
enerator != null) ? generator : _id; |
| 46 _GeneratorIterable(this._end, E generator(int n)) | 50 _GeneratorIterable.slice(this._start, this._end, this._generator); |
| 47 : _start = 0, | 51 Iterator<E> get iterator => new _GeneratorIterator<E>(_start, _end, _generator)
; |
| 48 _generator = (generator != null) ? generator : _id; | 52 int get length => _end - _start; |
| 49 _GeneratorIterable.slice(this._start, this._end, this._generator); | 53 Iterable<E> skip(int count) { |
| 50 Iterator<E> get iterator => | 54 RangeError.checkNotNegative(count, "count"); |
| 51 new _GeneratorIterator<E>(_start, _end, _generator); | 55 if (count == 0) return this; |
| 52 int get length => _end - _start; | 56 int newStart = _start + count; |
| 53 Iterable<E> skip(int count) { | 57 if (newStart >= _end) return new EmptyIterable<E>(); |
| 54 RangeError.checkNotNegative(count, "count"); | 58 return new _GeneratorIterable<E>.slice(newStart, _end, _generator); |
| 55 if (count == 0) return this; | |
| 56 int newStart = _start + count; | |
| 57 if (newStart >= _end) return new EmptyIterable<E>(); | |
| 58 return new _GeneratorIterable<E>.slice(newStart, _end, _generator); | |
| 59 } | |
| 60 Iterable<E> take(int count) { | |
| 61 RangeError.checkNotNegative(count, "count"); | |
| 62 if (count == 0) return new EmptyIterable<E>(); | |
| 63 int newEnd = _start + count; | |
| 64 if (newEnd >= _end) return this; | |
| 65 return new _GeneratorIterable<E>.slice(_start, newEnd, _generator); | |
| 66 } | |
| 67 static int _id(int n) => n; | |
| 68 } | 59 } |
| 69 class _GeneratorIterator<E> implements Iterator<E> { | 60 Iterable<E> take(int count) { |
| 70 final int _end; | 61 RangeError.checkNotNegative(count, "count"); |
| 71 final _Generator<E> _generator; | 62 if (count == 0) return new EmptyIterable<E>(); |
| 72 int _index; | 63 int newEnd = _start + count; |
| 73 E _current; | 64 if (newEnd >= _end) return this; |
| 74 _GeneratorIterator(this._index, this._end, this._generator); | 65 return new _GeneratorIterable<E>.slice(_start, newEnd, _generator); |
| 75 bool moveNext() { | |
| 76 if (_index < _end) { | |
| 77 _current = _generator(_index); | |
| 78 _index++; | |
| 79 return true; | |
| 80 } else { | |
| 81 _current = ((__x25) => DDC$RT.cast(__x25, Null, E, "CastLiteral", | |
| 82 """line 360, column 18 of dart:core/iterable.dart: """, __x25 is E, | |
| 83 false))(null); | |
| 84 return false; | |
| 85 } | |
| 86 } | |
| 87 E get current => _current; | |
| 88 } | 66 } |
| 89 abstract class BidirectionalIterator<E> implements Iterator<E> { | 67 static int _id(int n) => n; |
| 90 bool movePrevious(); | |
| 91 } | 68 } |
| 69 class _GeneratorIterator<E> implements Iterator<E> {final int _end; |
| 70 final _Generator<E> _generator; |
| 71 int _index; |
| 72 E _current; |
| 73 _GeneratorIterator(this._index, this._end, this._generator); |
| 74 bool moveNext() { |
| 75 if (_index < _end) { |
| 76 _current = _generator(_index); |
| 77 _index++; |
| 78 return true; |
| 79 } |
| 80 else { |
| 81 _current = ((__x25) => DDC$RT.cast(__x25, Null, E, "CastLiteral", """line 360, c
olumn 18 of dart:core/iterable.dart: """, __x25 is E, false))(null); |
| 82 return false; |
| 83 } |
| 84 } |
| 85 E get current => _current; |
| 86 } |
| 87 abstract class BidirectionalIterator<E> implements Iterator<E> {bool movePrevio
us(); |
| 88 } |
| OLD | NEW |