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