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

Side by Side Diff: lib/src/queue_list.dart

Issue 1831103004: Fix strong mode warnings. (Closed) Base URL: git@github.com:dart-lang/collection@master
Patch Set: pubspec/changelog Created 4 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
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, 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 import 'dart:collection'; 5 import 'dart:collection';
6 6
7 /// A class that efficiently implements both [Queue] and [List]. 7 /// A class that efficiently implements both [Queue] and [List].
8 // TODO(nweiz): Currently this code is copied almost verbatim from 8 // TODO(nweiz): Currently this code is copied almost verbatim from
9 // dart:collection. The only changes are to implement List and to remove methods 9 // dart:collection. The only changes are to implement List and to remove methods
10 // that are redundant with ListMixin. Remove or simplify it when issue 21330 is 10 // that are redundant with ListMixin. Remove or simplify it when issue 21330 is
(...skipping 17 matching lines...) Expand all
28 assert(_isPowerOf2(initialCapacity)); 28 assert(_isPowerOf2(initialCapacity));
29 _table = new List<E>(initialCapacity); 29 _table = new List<E>(initialCapacity);
30 } 30 }
31 31
32 /// Create a queue initially containing the elements of [source]. 32 /// Create a queue initially containing the elements of [source].
33 factory QueueList.from(Iterable<E> source) { 33 factory QueueList.from(Iterable<E> source) {
34 if (source is List) { 34 if (source is List) {
35 int length = source.length; 35 int length = source.length;
36 QueueList<E> queue = new QueueList(length + 1); 36 QueueList<E> queue = new QueueList(length + 1);
37 assert(queue._table.length > length); 37 assert(queue._table.length > length);
38 List sourceList = source; 38 var sourceList = source;
39 queue._table.setRange(0, length, sourceList, 0); 39 queue._table.setRange(0, length, sourceList, 0);
40 queue._tail = length; 40 queue._tail = length;
41 return queue; 41 return queue;
42 } else { 42 } else {
43 return new QueueList<E>()..addAll(source); 43 return new QueueList<E>()..addAll(source);
44 } 44 }
45 } 45 }
46 46
47 // Collection interface. 47 // Collection interface.
48 48
49 void add(E element) { 49 void add(E element) {
50 _add(element); 50 _add(element);
51 } 51 }
52 52
53 void addAll(Iterable<E> elements) { 53 void addAll(Iterable<E> elements) {
54 if (elements is List) { 54 if (elements is List) {
55 List list = elements; 55 var list = elements;
56 int addCount = list.length; 56 int addCount = list.length;
57 int length = this.length; 57 int length = this.length;
58 if (length + addCount >= _table.length) { 58 if (length + addCount >= _table.length) {
59 _preGrow(length + addCount); 59 _preGrow(length + addCount);
60 // After preGrow, all elements are at the start of the list. 60 // After preGrow, all elements are at the start of the list.
61 _table.setRange(length, length + addCount, list, 0); 61 _table.setRange(length, length + addCount, list, 0);
62 _tail += addCount; 62 _tail += addCount;
63 } else { 63 } else {
64 // Adding addCount elements won't reach _head. 64 // Adding addCount elements won't reach _head.
65 int endSpace = _table.length - _tail; 65 int endSpace = _table.length - _tail;
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 // Add 1.5x extra room to ensure that there's room for more elements after 210 // Add 1.5x extra room to ensure that there's room for more elements after
211 // expansion. 211 // expansion.
212 newElementCount += newElementCount >> 1; 212 newElementCount += newElementCount >> 1;
213 int newCapacity = _nextPowerOf2(newElementCount); 213 int newCapacity = _nextPowerOf2(newElementCount);
214 List<E> newTable = new List<E>(newCapacity); 214 List<E> newTable = new List<E>(newCapacity);
215 _tail = _writeToList(newTable); 215 _tail = _writeToList(newTable);
216 _table = newTable; 216 _table = newTable;
217 _head = 0; 217 _head = 0;
218 } 218 }
219 } 219 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698