Index: tool/input_sdk/lib/html/html_common/lists.dart |
diff --git a/tool/input_sdk/lib/html/html_common/lists.dart b/tool/input_sdk/lib/html/html_common/lists.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f33d64afb9963a39e61089795580a1ed999f4f05 |
--- /dev/null |
+++ b/tool/input_sdk/lib/html/html_common/lists.dart |
@@ -0,0 +1,75 @@ |
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+part of html_common; |
+ |
+class Lists { |
+ |
+ /** |
+ * Returns the index in the array [a] of the given [element], starting |
+ * the search at index [startIndex] to [endIndex] (exclusive). |
+ * Returns -1 if [element] is not found. |
+ */ |
+ static int indexOf(List a, |
+ Object element, |
+ int startIndex, |
+ int endIndex) { |
+ if (startIndex >= a.length) { |
+ return -1; |
+ } |
+ if (startIndex < 0) { |
+ startIndex = 0; |
+ } |
+ for (int i = startIndex; i < endIndex; i++) { |
+ if (a[i] == element) { |
+ return i; |
+ } |
+ } |
+ return -1; |
+ } |
+ |
+ /** |
+ * Returns the last index in the array [a] of the given [element], starting |
+ * the search at index [startIndex] to 0. |
+ * Returns -1 if [element] is not found. |
+ */ |
+ static int lastIndexOf(List a, Object element, int startIndex) { |
+ if (startIndex < 0) { |
+ return -1; |
+ } |
+ if (startIndex >= a.length) { |
+ startIndex = a.length - 1; |
+ } |
+ for (int i = startIndex; i >= 0; i--) { |
+ if (a[i] == element) { |
+ return i; |
+ } |
+ } |
+ return -1; |
+ } |
+ |
+ /** |
+ * Returns a sub list copy of this list, from [start] to |
+ * [end] ([end] not inclusive). |
+ * Returns an empty list if [length] is 0. |
+ * It is an error if indices are not valid for the list, or |
+ * if [end] is before [start]. |
+ */ |
+ static List getRange(List a, int start, int end, List accumulator) { |
+ if (start < 0) throw new RangeError.value(start); |
+ if (end < start) throw new RangeError.value(end); |
+ if (end > a.length) throw new RangeError.value(end); |
+ for (int i = start; i < end; i++) { |
+ accumulator.add(a[i]); |
+ } |
+ return accumulator; |
+ } |
+} |
+ |
+/** |
+ * For accessing underlying node lists, for dart:js interop. |
+ */ |
+abstract class NodeListWrapper { |
+ List<Node> get rawList; |
+} |