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

Side by Side Diff: lib/compiler/implementation/util/link_implementation.dart

Issue 11238035: Make isEmpty a getter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status file with co19 issue number. Created 8 years, 2 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
« no previous file with comments | « lib/compiler/implementation/util/link.dart ('k') | lib/compiler/implementation/world.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) 2011, the Dart project authors. Please see the AUTHORS file 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 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 class LinkIterator<T> implements Iterator<T> { 5 class LinkIterator<T> implements Iterator<T> {
6 Link<T> current; 6 Link<T> current;
7 LinkIterator(Link<T> this.current); 7 LinkIterator(Link<T> this.current);
8 bool get hasNext => !current.isEmpty(); 8 bool get hasNext => !current.isEmpty;
9 T next() { 9 T next() {
10 T result = current.head; 10 T result = current.head;
11 current = current.tail; 11 current = current.tail;
12 return result; 12 return result;
13 } 13 }
14 } 14 }
15 15
16 class LinkEntry<T> extends Link<T> { 16 class LinkEntry<T> extends Link<T> {
17 final T head; 17 final T head;
18 Link<T> tail; 18 Link<T> tail;
19 19
20 LinkEntry(T this.head, [Link<T> tail]) 20 LinkEntry(T this.head, [Link<T> tail])
21 : this.tail = ((tail == null) ? new Link<T>() : tail); 21 : this.tail = ((tail == null) ? new Link<T>() : tail);
22 22
23 Link<T> prepend(T element) { 23 Link<T> prepend(T element) {
24 // TODO(ahe): Use new Link<T>, but this cost 8% performance on VM. 24 // TODO(ahe): Use new Link<T>, but this cost 8% performance on VM.
25 return new LinkEntry<T>(element, this); 25 return new LinkEntry<T>(element, this);
26 } 26 }
27 27
28 void printOn(StringBuffer buffer, [separatedBy]) { 28 void printOn(StringBuffer buffer, [separatedBy]) {
29 buffer.add(head); 29 buffer.add(head);
30 if (separatedBy == null) separatedBy = ''; 30 if (separatedBy == null) separatedBy = '';
31 for (Link link = tail; !link.isEmpty(); link = link.tail) { 31 for (Link link = tail; !link.isEmpty; link = link.tail) {
32 buffer.add(separatedBy); 32 buffer.add(separatedBy);
33 buffer.add(link.head); 33 buffer.add(link.head);
34 } 34 }
35 } 35 }
36 36
37 String toString() { 37 String toString() {
38 StringBuffer buffer = new StringBuffer(); 38 StringBuffer buffer = new StringBuffer();
39 buffer.add('[ '); 39 buffer.add('[ ');
40 printOn(buffer, ', '); 40 printOn(buffer, ', ');
41 buffer.add(' ]'); 41 buffer.add(' ]');
42 return buffer.toString(); 42 return buffer.toString();
43 } 43 }
44 44
45 Link<T> reverse() { 45 Link<T> reverse() {
46 Link<T> result = const Link(); 46 Link<T> result = const Link();
47 for (Link<T> link = this; !link.isEmpty(); link = link.tail) { 47 for (Link<T> link = this; !link.isEmpty; link = link.tail) {
48 result = result.prepend(link.head); 48 result = result.prepend(link.head);
49 } 49 }
50 return result; 50 return result;
51 } 51 }
52 52
53 Link<T> reversePrependAll(Link<T> from) { 53 Link<T> reversePrependAll(Link<T> from) {
54 Link<T> result; 54 Link<T> result;
55 for (result = this; !from.isEmpty(); from = from.tail) { 55 for (result = this; !from.isEmpty; from = from.tail) {
56 result = result.prepend(from.head); 56 result = result.prepend(from.head);
57 } 57 }
58 return result; 58 return result;
59 } 59 }
60 60
61 61
62 bool isEmpty() => false; 62 bool get isEmpty => false;
63 63
64 List<T> toList() { 64 List<T> toList() {
65 List<T> list = new List<T>(); 65 List<T> list = new List<T>();
66 for (Link<T> link = this; !link.isEmpty(); link = link.tail) { 66 for (Link<T> link = this; !link.isEmpty; link = link.tail) {
67 list.addLast(link.head); 67 list.addLast(link.head);
68 } 68 }
69 return list; 69 return list;
70 } 70 }
71 71
72 void forEach(void f(T element)) { 72 void forEach(void f(T element)) {
73 for (Link<T> link = this; !link.isEmpty(); link = link.tail) { 73 for (Link<T> link = this; !link.isEmpty; link = link.tail) {
74 f(link.head); 74 f(link.head);
75 } 75 }
76 } 76 }
77 77
78 bool operator ==(other) { 78 bool operator ==(other) {
79 if (other is !Link<T>) return false; 79 if (other is !Link<T>) return false;
80 Link<T> myElements = this; 80 Link<T> myElements = this;
81 while (!myElements.isEmpty() && !other.isEmpty()) { 81 while (!myElements.isEmpty && !other.isEmpty) {
82 if (myElements.head != other.head) { 82 if (myElements.head != other.head) {
83 return false; 83 return false;
84 } 84 }
85 myElements = myElements.tail; 85 myElements = myElements.tail;
86 other = other.tail; 86 other = other.tail;
87 } 87 }
88 return myElements.isEmpty() && other.isEmpty(); 88 return myElements.isEmpty && other.isEmpty;
89 } 89 }
90 } 90 }
91 91
92 class LinkBuilderImplementation<T> implements LinkBuilder<T> { 92 class LinkBuilderImplementation<T> implements LinkBuilder<T> {
93 LinkEntry<T> head = null; 93 LinkEntry<T> head = null;
94 LinkEntry<T> lastLink = null; 94 LinkEntry<T> lastLink = null;
95 int length = 0; 95 int length = 0;
96 96
97 LinkBuilderImplementation(); 97 LinkBuilderImplementation();
98 98
(...skipping 10 matching lines...) Expand all
109 length++; 109 length++;
110 LinkEntry<T> entry = new LinkEntry<T>(t, null); 110 LinkEntry<T> entry = new LinkEntry<T>(t, null);
111 if (head == null) { 111 if (head == null) {
112 head = entry; 112 head = entry;
113 } else { 113 } else {
114 lastLink.tail = entry; 114 lastLink.tail = entry;
115 } 115 }
116 lastLink = entry; 116 lastLink = entry;
117 } 117 }
118 } 118 }
OLDNEW
« no previous file with comments | « lib/compiler/implementation/util/link.dart ('k') | lib/compiler/implementation/world.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698