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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/code_buffer.dart

Issue 12217115: Revert "Add StringSink and update StringBuffer." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 10 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
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 dart2js; 5 part of dart2js;
6 6
7 class CodeBuffer implements StringBuffer { 7 class CodeBuffer implements StringBuffer {
8 StringBuffer buffer; 8 StringBuffer buffer;
9 List<CodeBufferMarker> markers; 9 List<CodeBufferMarker> markers;
10 int lastBufferOffset = 0; 10 int lastBufferOffset = 0;
11 int mappedRangeCounter = 0; 11 int mappedRangeCounter = 0;
12 12
13 CodeBuffer() 13 CodeBuffer()
14 : buffer = new StringBuffer(), 14 : buffer = new StringBuffer(),
15 markers = new List<CodeBufferMarker>(); 15 markers = new List<CodeBufferMarker>();
16 16
17 int get length => buffer.length; 17 int get length => buffer.length;
18 18
19 bool get isEmpty { 19 bool get isEmpty {
20 return buffer.isEmpty; 20 return buffer.isEmpty;
21 } 21 }
22 22
23 CodeBuffer add(var object) {
24 write(object);
25 return this;
26 }
27 /** 23 /**
28 * Converts [object] to a string and adds it to the buffer. If [object] is a 24 * Converts [object] to a string and adds it to the buffer. If [object] is a
29 * [CodeBuffer], adds its markers to [markers]. 25 * [CodeBuffer], adds its markers to [markers].
30 */ 26 */
31 CodeBuffer write(var object) { 27 CodeBuffer add(var object) {
32 if (object is CodeBuffer) { 28 if (object is CodeBuffer) {
33 return addBuffer(object); 29 return addBuffer(object);
34 } 30 }
35 if (mappedRangeCounter == 0) setSourceLocation(null); 31 if (mappedRangeCounter == 0) setSourceLocation(null);
36 buffer.add(object.toString()); 32 buffer.add(object.toString());
37 return this; 33 return this;
38 } 34 }
39 35
40 CodeBuffer print(var object) {
41 return write(object).write("\n");
42 }
43
44 CodeBuffer addBuffer(CodeBuffer other) { 36 CodeBuffer addBuffer(CodeBuffer other) {
45 if (other.markers.length > 0) { 37 if (other.markers.length > 0) {
46 CodeBufferMarker firstMarker = other.markers[0]; 38 CodeBufferMarker firstMarker = other.markers[0];
47 int offsetDelta = 39 int offsetDelta =
48 buffer.length + firstMarker.offsetDelta - lastBufferOffset; 40 buffer.length + firstMarker.offsetDelta - lastBufferOffset;
49 markers.add(new CodeBufferMarker(offsetDelta, 41 markers.add(new CodeBufferMarker(offsetDelta,
50 firstMarker.sourcePosition)); 42 firstMarker.sourcePosition));
51 for (int i = 1; i < other.markers.length; ++i) { 43 for (int i = 1; i < other.markers.length; ++i) {
52 markers.add(other.markers[i]); 44 markers.add(other.markers[i]);
53 } 45 }
54 lastBufferOffset = buffer.length + other.lastBufferOffset; 46 lastBufferOffset = buffer.length + other.lastBufferOffset;
55 } 47 }
56 buffer.add(other.getText()); 48 buffer.add(other.getText());
57 return this;
58 } 49 }
59 50
60 CodeBuffer addAll(Iterable<Object> iterable) { 51 CodeBuffer addAll(Iterable<Object> iterable) {
61 for (Object obj in iterable) { 52 for (Object obj in iterable) {
62 add(obj); 53 add(obj);
63 } 54 }
64 return this; 55 return this;
65 } 56 }
66 57
67 CodeBuffer addCharCode(int charCode) => writeCharCode(charCode); 58 CodeBuffer addCharCode(int charCode) {
68 59 return add(new String.fromCharCodes([charCode]));
69 CodeBuffer writeCharCode(int charCode) {
70 return write(new String.fromCharCodes([charCode]));
71 } 60 }
72 61
73 CodeBuffer clear() { 62 CodeBuffer clear() {
74 buffer.clear(); 63 buffer.clear();
75 markers.clear(); 64 markers.clear();
76 lastBufferOffset = 0; 65 lastBufferOffset = 0;
77 return this; 66 return this;
78 } 67 }
79 68
80 String toString() { 69 String toString() {
(...skipping 27 matching lines...) Expand all
108 }); 97 });
109 } 98 }
110 } 99 }
111 100
112 class CodeBufferMarker { 101 class CodeBufferMarker {
113 final int offsetDelta; 102 final int offsetDelta;
114 final sourcePosition; 103 final sourcePosition;
115 104
116 CodeBufferMarker(this.offsetDelta, this.sourcePosition); 105 CodeBufferMarker(this.offsetDelta, this.sourcePosition);
117 } 106 }
OLDNEW
« no previous file with comments | « runtime/lib/string_buffer_patch.dart ('k') | sdk/lib/_internal/compiler/implementation/lib/core_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698