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

Side by Side Diff: client/html/src/Lists.dart

Issue 9537001: Generate dart:html bindings for Dartium as well as Frog. All unittests now pass (or are disabled fo… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 // TODO(jacobr): move into a core library or at least merge with the copy
6 // in client/dom/src
7 class Lists {
8
9 /**
10 * Returns the index in the array [a] of the given [element], starting
11 * the search at index [startIndex] to [endIndex] (exclusive).
12 * Returns -1 if [element] is not found.
13 */
14 static int indexOf(List a,
15 Object element,
16 int startIndex,
17 int endIndex) {
18 if (startIndex >= a.length) {
19 return -1;
20 }
21 if (startIndex < 0) {
22 startIndex = 0;
23 }
24 for (int i = startIndex; i < endIndex; i++) {
25 if (a[i] == element) {
26 return i;
27 }
28 }
29 return -1;
30 }
31
32 /**
33 * Returns the last index in the array [a] of the given [element], starting
34 * the search at index [startIndex] to 0.
35 * Returns -1 if [element] is not found.
36 */
37 static int lastIndexOf(List a, Object element, int startIndex) {
38 if (startIndex < 0) {
39 return -1;
40 }
41 if (startIndex >= a.length) {
42 startIndex = a.length - 1;
43 }
44 for (int i = startIndex; i >= 0; i--) {
45 if (a[i] == element) {
46 return i;
47 }
48 }
49 return -1;
50 }
51
52 static void setRange(List to, int start, int length, List from,
53 int startFrom) {
54 // TODO(nweiz): remove these IndexOutOfRange checks once Frog has bounds
55 // checking for List indexing
56 if (start < 0) {
57 throw new IndexOutOfRangeException(start);
58 } else if (startFrom < 0) {
59 throw new IndexOutOfRangeException(startFrom);
60 } else if (length < 0) {
61 throw new IllegalArgumentException("negative length $length");
62 } else if (start + length > to.length) {
63 throw new IndexOutOfRangeException(Math.min(to.length, start));
64 } else if (startFrom + length > from.length) {
65 throw new IndexOutOfRangeException(Math.min(from.length, startFrom));
66 }
67
68 for (var i = 0; i < length; i++) {
69 to[start + i] = from[startFrom + i];
70 }
71 }
72
73 static void removeRange(List a, int start, int length,
74 void removeOne(int index)) {
75 // TODO(nweiz): remove these IndexOutOfRange checks once Frog has bounds
76 // checking for List indexing
77 if (start < 0) {
78 throw new IndexOutOfRangeException(start);
79 } else if (length < 0) {
80 throw new IllegalArgumentException("negative length $length");
81 } else if (start + length > a.length) {
82 throw new IndexOutOfRangeException(Math.min(a.length, start));
83 }
84
85 for (var i = 0; i < length; i++) {
86 removeOne(start);
87 }
88 }
89
90 static List getRange(List a, int start, int length) {
91 // TODO(nweiz): remove these IndexOutOfRange checks once Frog has bounds
92 // checking for List indexing
93 if (start < 0) {
94 throw new IndexOutOfRangeException(start);
95 } else if (length < 0) {
96 throw new IllegalArgumentException("negative length $length");
97 } else if (start + length > a.length) {
98 throw new IndexOutOfRangeException(Math.min(a.length, start));
99 }
100
101 var result = [];
102 for (var i = 0; i < length; i++) {
103 result.add(a[start + i]);
104 }
105 return result;
106 }
107 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698