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

Unified Diff: sdk/lib/collection/queue.dart

Issue 12611014: Cleanups in collection. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | sdk/lib/collection/splay_tree.dart » ('j') | sdk/lib/collection/splay_tree.dart » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sdk/lib/collection/queue.dart
diff --git a/sdk/lib/collection/queue.dart b/sdk/lib/collection/queue.dart
index 975939a9da58f105a51a8fd877b86eda9c75a5cd..fab19e9225df8d250b8f8094ca008f5e78589f13 100644
--- a/sdk/lib/collection/queue.dart
+++ b/sdk/lib/collection/queue.dart
@@ -162,6 +162,7 @@ class _DoubleLinkedQueueEntrySentinel<E> extends DoubleLinkedQueueEntry<E> {
*/
class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
_DoubleLinkedQueueEntrySentinel<E> _sentinel;
+ int _elementCount = 0;
DoubleLinkedQueue() {
_sentinel = new _DoubleLinkedQueueEntrySentinel<E>();
@@ -175,30 +176,40 @@ class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
return list;
}
+ int get length => _elementCount;
+
void addLast(E value) {
_sentinel.prepend(value);
+ _elementCount++;
}
void addFirst(E value) {
_sentinel.append(value);
+ _elementCount++;
}
void add(E value) {
- addLast(value);
+ _sentinel.prepend(value);
+ _elementCount++;
}
void addAll(Iterable<E> iterable) {
- for (final e in iterable) {
- add(e);
+ for (final E value in iterable) {
+ _sentinel.prepend(value);
+ _elementCount++;
}
}
E removeLast() {
- return _sentinel._previous.remove();
+ E result = _sentinel._previous.remove();
+ _elementCount--;
+ return result;
}
E removeFirst() {
- return _sentinel._next.remove();
+ E result = _sentinel._next.remove();
+ _elementCount--;
+ return result;
}
void remove(Object o) {
@@ -206,6 +217,7 @@ class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
while (!identical(entry, _sentinel)) {
if (entry.element == o) {
entry.remove();
+ _elementCount--;
return;
}
entry = entry._next;
@@ -223,6 +235,7 @@ class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
DoubleLinkedQueueEntry<E> next = entry._next;
if (test(entry.element)) {
entry.remove();
+ _elementCount--;
}
entry = next;
}
@@ -234,6 +247,7 @@ class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
DoubleLinkedQueueEntry<E> next = entry._next;
if (!test(entry.element)) {
entry.remove();
+ _elementCount--;
}
entry = next;
}
@@ -270,6 +284,7 @@ class DoubleLinkedQueue<E> extends Collection<E> implements Queue<E> {
void clear() {
_sentinel._next = _sentinel;
_sentinel._previous = _sentinel;
+ _elementCount = 0;
}
void forEachEntry(void f(DoubleLinkedQueueEntry<E> element)) {
« no previous file with comments | « no previous file | sdk/lib/collection/splay_tree.dart » ('j') | sdk/lib/collection/splay_tree.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698