// 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 get rawList; }