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

Side by Side Diff: sdk/lib/collection/linked_list.dart

Issue 2930713003: Deprecate LinkedList.
Patch Set: Deprecate LinkedList and LinkedQueue. Created 3 years, 5 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
« no previous file with comments | « no previous file | sdk/lib/collection/queue.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 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. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of "collection.dart"; 5 part of "collection.dart";
6 6
7 /** 7 /**
8 * A specialized double-linked list of elements that extends [LinkedListEntry]. 8 * A specialized double-linked list of elements that extends [LinkedListEntry].
9 * 9 *
10 * Deprecated. Use the same named class from package `collection`, instead.
11 * [https://pub.dartlang.org/packages/collection]
12 *
10 * This is not a generic data structure. It only accepts elements that extend 13 * This is not a generic data structure. It only accepts elements that extend
11 * the [LinkedListEntry] class. See the [Queue] implementations for 14 * the [LinkedListEntry] class. See the [Queue] implementations for
12 * generic collections that allow constant time adding and removing at the ends. 15 * generic collections that allow constant time adding and removing at the ends.
13 * 16 *
14 * This is not a [List] implementation. Despite its name, this class does not 17 * This is not a [List] implementation. Despite its name, this class does not
15 * implement the [List] interface. It does not allow constant time lookup by 18 * implement the [List] interface. It does not allow constant time lookup by
16 * index. 19 * index.
17 * 20 *
18 * Because the elements themselves contain the links of this linked list, 21 * Because the elements themselves contain the links of this linked list,
19 * each element can be in only one list at a time. To add an element to another 22 * each element can be in only one list at a time. To add an element to another
20 * list, it must first be removed from its current list (if any). 23 * list, it must first be removed from its current list (if any).
21 * 24 *
22 * In return, each element knows its own place in the linked list, as well as 25 * In return, each element knows its own place in the linked list, as well as
23 * which list it is in. This allows constant time [LinkedListEntry.insertAfter], 26 * which list it is in. This allows constant time [LinkedListEntry.insertAfter],
24 * [LinkedListEntry.insertBefore] and [LinkedListEntry.unlink] operations 27 * [LinkedListEntry.insertBefore] and [LinkedListEntry.unlink] operations
25 * when all you have is the element. 28 * when all you have is the element.
26 * 29 *
27 * A `LinkedList` also allows constant time adding and removing at either end, 30 * A `LinkedList` also allows constant time adding and removing at either end,
28 * and a constant time length getter. 31 * and a constant time length getter.
29 */ 32 */
33 @deprecated
30 class LinkedList<E extends LinkedListEntry<E>> extends Iterable<E> { 34 class LinkedList<E extends LinkedListEntry<E>> extends Iterable<E> {
31 int _modificationCount = 0; 35 int _modificationCount = 0;
32 int _length = 0; 36 int _length = 0;
33 E _first; 37 E _first;
34 38
35 /** 39 /**
36 * Construct a new empty linked list. 40 * Construct a new empty linked list.
37 */ 41 */
38 LinkedList(); 42 LinkedList();
39 43
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 _visitedFirst = true; 214 _visitedFirst = true;
211 _current = _next; 215 _current = _next;
212 _next = _next._next; 216 _next = _next._next;
213 return true; 217 return true;
214 } 218 }
215 } 219 }
216 220
217 /** 221 /**
218 * An object that can be an element in a [LinkedList]. 222 * An object that can be an element in a [LinkedList].
219 * 223 *
224 * Deprecated. Use the same named class from package `collection`, instead.
225 * [https://pub.dartlang.org/packages/collection]
226 *
220 * All elements of a `LinkedList` must extend this class. 227 * All elements of a `LinkedList` must extend this class.
221 * The class provides the internal links that link elements together 228 * The class provides the internal links that link elements together
222 * in the `LinkedList`, and a reference to the linked list itself 229 * in the `LinkedList`, and a reference to the linked list itself
223 * that an element is currently part of. 230 * that an element is currently part of.
224 * 231 *
225 * An entry can be in at most one linked list at a time. 232 * An entry can be in at most one linked list at a time.
226 * While an entry is in a linked list, the [list] property points to that 233 * While an entry is in a linked list, the [list] property points to that
227 * linked list, and otherwise the `list` property is `null`. 234 * linked list, and otherwise the `list` property is `null`.
228 * 235 *
229 * When created, an entry is not in any linked list. 236 * When created, an entry is not in any linked list.
230 */ 237 */
238 @deprecated
231 abstract class LinkedListEntry<E extends LinkedListEntry<E>> { 239 abstract class LinkedListEntry<E extends LinkedListEntry<E>> {
232 LinkedList<E> _list; 240 LinkedList<E> _list;
233 E _next; 241 E _next;
234 E _previous; 242 E _previous;
235 243
236 /** 244 /**
237 * Get the linked list containing this element. 245 * Get the linked list containing this element.
238 * 246 *
239 * Returns `null` if this entry is not currently in any list. 247 * Returns `null` if this entry is not currently in any list.
240 */ 248 */
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 /** 292 /**
285 * Insert an element before this element in this element's linked list. 293 * Insert an element before this element in this element's linked list.
286 * 294 *
287 * This entry must be in a linked list when this method is called. 295 * This entry must be in a linked list when this method is called.
288 * The [entry] must not be in a linked list. 296 * The [entry] must not be in a linked list.
289 */ 297 */
290 void insertBefore(E entry) { 298 void insertBefore(E entry) {
291 _list._insertBefore(this as dynamic/*=E*/, entry, updateFirst: true); 299 _list._insertBefore(this as dynamic/*=E*/, entry, updateFirst: true);
292 } 300 }
293 } 301 }
OLDNEW
« no previous file with comments | « no previous file | sdk/lib/collection/queue.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698