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

Unified Diff: runtime/lib/array.dart

Issue 12817003: Change getRange to sublist. Make getRange deprecated. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: runtime/lib/array.dart
diff --git a/runtime/lib/array.dart b/runtime/lib/array.dart
index bcbcc55deae7f3d4d24f8f334d2150e2b3ac2154..c26b67c3a57c8f9143211c0363bb915005677e78 100644
--- a/runtime/lib/array.dart
+++ b/runtime/lib/array.dart
@@ -77,15 +77,20 @@ class _ObjectArray<E> implements List<E> {
"Cannot insert range in a non-extendable array");
}
- List<E> getRange(int start, int length) {
- if (length == 0) return [];
- Arrays.rangeCheck(this, start, length);
+
+ List<E> sublist(int start, [int end]) {
+ Arrays.indicesCheck(this, start, end);
floitsch 2013/03/14 15:46:06 I would make this an IterableMixinWorkaround metho
Lasse Reichstein Nielsen 2013/03/15 09:13:09 It would not be a method on a mixin when we get mi
+ if (end == null) end = this.length;
+ int length = end - start;
+ if (start == end) return [];
List list = new _GrowableObjectArray<E>.withCapacity(length);
list.length = length;
Arrays.copy(this, start, list, 0, length);
return list;
}
+ List<E> getRange(int start, int length) => sublist(start, start + length);
+
// Iterable interface.
bool contains(E element) {
@@ -315,15 +320,19 @@ class _ImmutableArray<E> implements List<E> {
"Cannot insert range in an immutable array");
}
- List<E> getRange(int start, int length) {
- if (length == 0) return [];
- Arrays.rangeCheck(this, start, length);
+ List<E> sublist(int start, [int end]) {
+ Arrays.indicesCheck(this, start, end);
+ if (end == null) end = this.length;
+ int length = end - start;
+ if (start == end) return [];
List list = new List<E>();
list.length = length;
Arrays.copy(this, start, list, 0, length);
return list;
}
+ List<E> getRange(int start, int length) => sublist(start, start + length);
+
// Collection interface.
bool contains(E element) {

Powered by Google App Engine
This is Rietveld 408576698