blob: 78a846fa362dcda859237eba415d634108717f6b [file] [log] [blame]
// -- start List<$E> mixins.
// $E is the element type.
$if DEFINE_LENGTH_AS_NUM_ITEMS
// SVG Collections expose numberOfItems rather than length.
int get length => numberOfItems;
$endif
$if DEFINE_LENGTH_SETTER
void set length(int value) {
throw new UnsupportedError("Cannot resize immutable List.");
}
$endif
$E get first {
if (this.length > 0) {
$if DART2JS
return JS('$E', '#[0]', this);
$else
$if USE_NATIVE_INDEXED_GETTER
return $GETTER(0);
$else
return this[0];
$endif
$endif
}
throw new StateError("No elements");
}
$E get last {
int len = this.length;
if (len > 0) {
$if DART2JS
return JS('$E', '#[#]', this, len - 1);
$else
$if USE_NATIVE_INDEXED_GETTER
return $GETTER(len - 1);
$else
return this[len - 1];
$endif
$endif
}
throw new StateError("No elements");
}
$E get single {
int len = this.length;
if (len == 1) {
$if DART2JS
return JS('$E', '#[0]', this);
$else
$if USE_NATIVE_INDEXED_GETTER
return $GETTER(0);
$else
return this[0];
$endif
$endif
}
if (len == 0) throw new StateError("No elements");
throw new StateError("More than one element");
}
$E elementAt(int index) => this[index];
// -- end List<$E> mixins.