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

Side by Side Diff: lib/protobuf/runtime/CodedBufferWriter.dart

Issue 10595002: Protocol Buffer runtime library and 'protoc' plugin (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Work around http://code.google.com/p/dart/issues/detail?id=3806 Created 8 years, 6 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/protobuf/runtime/CodedBufferReader.dart ('k') | lib/protobuf/runtime/CodedReader.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // BSD-style license that can be found in the LICENSE file.
4
5 class CodedBufferWriter {
6
7 static int computeBoolSize(int fieldNumber, bool value) =>
8 computeTagSize(fieldNumber) + PbCodec.sizeOfBool;
9
10 static int computeBoolSizeNoTag(bool value) => PbCodec.sizeOfBool;
11
12 static int computeBytesSize(int fieldNumber, List<int> value) =>
13 computeTagSize(fieldNumber) + computeBytesSizeNoTag(value);
14
15 static int computeBytesSizeNoTag(List<int> value) =>
16 PbCodec.sizeOfInt32(value.length) + value.length;
17
18 static int computeFloatSize(int fieldNumber, double value) =>
19 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
20
21 static int computeFloatSizeNoTag(double value) => PbCodec.sizeOfFixed32;
22
23 static int computeDoubleSize(int fieldNumber, double value) =>
24 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
25
26 static int computeDoubleSizeNoTag(double value) => PbCodec.sizeOfFixed64;
27
28 static int computeEnumSize(int fieldNumber, int value) =>
29 computeTagSize(fieldNumber) + PbCodec.sizeOfInt32(value);
30
31 static int computeEnumSizeNoTag(ProtobufEnum value) =>
32 PbCodec.sizeOfInt32(value.value);
33
34 static int computeFixed32Size(int fieldNumber, int value) =>
35 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
36
37 static int computeFixed32SizeNoTag(int value) => PbCodec.sizeOfFixed32;
38
39 static int computeFixed64Size(int fieldNumber, var value) =>
40 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
41
42 static int computeFixed64SizeNoTag(var value) => PbCodec.sizeOfFixed64;
43
44 static int computeGroupSize(int fieldNumber, Message value) =>
45 computeTagSize(fieldNumber) * 2 + value.getSerializedSize();
46
47 static int computeGroupSizeNoTag(Message value) => value.getSerializedSize();
48
49 static int computeInt32Size(int fieldNumber, int value) =>
50 computeTagSize(fieldNumber) + PbCodec.sizeOfInt32(value);
51
52 static int computeInt32SizeNoTag(int value) => PbCodec.sizeOfInt32(value);
53
54 static int computeInt64Size(int fieldNumber, var value) =>
55 computeTagSize(fieldNumber) + PbCodec.sizeOfInt64(value);
56
57 static int computeInt64SizeNoTag(var value) => PbCodec.sizeOfInt64(value);
58
59 static int computeMessageSize(int fieldNumber, Message value) =>
60 computeTagSize(fieldNumber) + computeMessageSizeNoTag(value);
61
62 static int computeMessageSizeNoTag(Message value) {
63 final int size = value.getSerializedSize();
64 return PbCodec.sizeOfInt32(size) + size;
65 }
66
67 static int computeSfixed32Size(int fieldNumber, int value) =>
68 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
69
70 static int computeSfixed32SizeNoTag(int value) => PbCodec.sizeOfFixed32;
71
72 static int computeSfixed64Size(int fieldNumber, var value) =>
73 computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
74
75 static int computeSfixed64SizeNoTag(var value) => PbCodec.sizeOfFixed64;
76
77 static int computeSint32Size(int fieldNumber, int value) =>
78 computeTagSize(fieldNumber) + PbCodec.sizeOfSint32(value);
79
80 static int computeSint32SizeNoTag(int value) => PbCodec.sizeOfSint32(value);
81
82 static int computeSint64Size(int fieldNumber, var value) =>
83 computeTagSize(fieldNumber) + PbCodec.sizeOfSint64(value);
84
85 static int computeSint64SizeNoTag(var value) => PbCodec.sizeOfSint64(value);
86
87 static int computeStringSize(int fieldNumber, String value) =>
88 computeTagSize(fieldNumber) + computeStringSizeNoTag(value);
89
90 static int computeStringSizeNoTag(String value) =>
91 PbCodec.sizeOfInt32(value.length) +
92 encodeUtf8(value).length;
93
94 static int computeUint32Size(int fieldNumber, int value) =>
95 computeTagSize(fieldNumber) + PbCodec.sizeOfUint32(value);
96
97 static int computeUint64Size(int fieldNumber, var value) =>
98 computeTagSize(fieldNumber) + PbCodec.sizeOfUint64(value);
99
100 static int computeUint64SizeNoTag(var value) =>
101 PbCodec.sizeOfUint64(value);
102
103 static int computeUint32SizeNoTag(int value) => PbCodec.sizeOfUint32(value);
104
105 static int computeTagSize(int fieldNumber) =>
106 PbCodec.sizeOfInt32(WireFormat.makeTag(fieldNumber, 0));
107
108 CodedBufferWriter(int length) :
109 _position = 0,
110 buffer = createIntArray(length);
111
112 int get length() => _position;
113
114 void writeBool(int fieldNumber, bool value) {
115 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
116 writeBoolNoTag(value);
117 }
118
119 void writeBoolNoTag(bool value) => writeRawByte(value ? 1 : 0);
120
121 void writeBytes(int fieldNumber, List<int> value) {
122 writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED);
123 writeBytesNoTag(value);
124 }
125
126 void writeBytesNoTag(List<int> value) {
127 writeRawBytes(PbCodec.int32ToBytes(value.length));
128 writeRawBytes(value);
129 }
130
131 void writeDouble(int fieldNumber, double value) {
132 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
133 writeDoubleNoTag(value);
134 }
135
136 void writeDoubleNoTag(double value) =>
137 writeRawBytes(PbCodec.doubleToBytes(value));
138
139 void writeEnum(int fieldNumber, ProtobufEnum value) {
140 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
141 writeEnumNoTag(value);
142 }
143
144 void writeEnumNoTag(ProtobufEnum value) =>
145 writeRawBytes(PbCodec.int32ToBytes(value.value));
146
147 void writeFixed32(int fieldNumber, int value) {
148 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
149 writeFixed32NoTag(value);
150 }
151
152 void writeFixed32NoTag(int value) =>
153 writeRawBytes(PbCodec.fixed32ToBytes(value));
154
155 void writeFixed64(int fieldNumber, var value) {
156 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
157 writeFixed64NoTag(value);
158 }
159
160 void writeFixed64NoTag(var value) =>
161 writeRawBytes(PbCodec.fixed64ToBytes(value));
162
163 void writeFloat(int fieldNumber, double value) {
164 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
165 writeFloatNoTag(value);
166 }
167
168 void writeFloatNoTag(double value) =>
169 writeRawBytes(PbCodec.floatToBytes(value));
170
171 void writeGroup(int fieldNumber, Message value) {
172 writeTag(fieldNumber, WireFormat.WIRETYPE_START_GROUP);
173 writeGroupNoTag(value);
174 writeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP);
175 }
176
177 void writeGroupNoTag(Message value) {
178 value.writeToCodedBufferWriter(this);
179 }
180
181 void writeInt32(int fieldNumber, int value) {
182 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
183 writeInt32NoTag(value);
184 }
185
186 void writeInt32NoTag(int value) =>
187 writeRawBytes(PbCodec.int32ToBytes(value));
188
189 void writeInt64(int fieldNumber, var value) {
190 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
191 writeInt64NoTag(value);
192 }
193
194 void writeInt64NoTag(var value) =>
195 writeRawBytes(PbCodec.int64ToBytes(value));
196
197 void writeMessage(int fieldNumber, Message value) {
198 writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED);
199 writeMessageNoTag(value);
200 }
201
202 void writeMessageNoTag(Message value) {
203 writeInt32NoTag(value.getSerializedSize());
204 value.writeToCodedBufferWriter(this);
205 }
206
207 void writeSfixed32(int fieldNumber, int value) {
208 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
209 writeSfixed32NoTag(value);
210 }
211
212 void writeSfixed32NoTag(int value) =>
213 writeRawBytes(PbCodec.sfixed32ToBytes(value));
214
215 void writeSfixed64(int fieldNumber, var value) {
216 writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
217 writeSfixed64NoTag(value);
218 }
219
220 void writeSfixed64NoTag(var value) =>
221 writeRawBytes(PbCodec.sfixed64ToBytes(value));
222
223 void writeSint32(int fieldNumber, int value) {
224 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
225 writeSint32NoTag(value);
226 }
227
228 void writeSint32NoTag(int value) =>
229 writeRawBytes(PbCodec.sint32ToBytes(value));
230
231 void writeSint64(int fieldNumber, var value) {
232 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
233 writeSint64NoTag(value);
234 }
235
236 void writeSint64NoTag(var value) =>
237 writeRawBytes(PbCodec.sint64ToBytes(value));
238
239 void writeString(int fieldNumber, String value) =>
240 writeBytes(fieldNumber, encodeUtf8(value));
241
242 void writeStringNoTag(String value) =>
243 writeBytesNoTag(encodeUtf8(value));
244
245 void writeUint32(int fieldNumber, int value) {
246 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
247 writeUint32NoTag(value);
248 }
249
250 void writeUint32NoTag(int value) =>
251 writeRawBytes(PbCodec.uint32ToBytes(value));
252
253 void writeUint64(int fieldNumber, var value) {
254 writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
255 writeUint64NoTag(value);
256 }
257
258 void writeUint64NoTag(var value) =>
259 writeRawBytes(PbCodec.uint64ToBytes(value));
260
261 void writeTag(int fieldNumber, int wireFormat) =>
262 writeRawBytes(PbCodec.int32ToBytes(
263 WireFormat.makeTag(fieldNumber, wireFormat)));
264
265 void writeRawByte(int value) {
266 buffer[_position++] = value & 0xff;
267 }
268
269 void writeRawBytes(List<int> value, [int offset = 0, int length = null]) {
270 if (length == null) {
271 length = value.length - offset;
272 }
273 buffer.setRange(_position, length, value, offset);
274 _position += length;
275 }
276
277 final List<int> buffer;
278 int _position;
279 }
OLDNEW
« no previous file with comments | « lib/protobuf/runtime/CodedBufferReader.dart ('k') | lib/protobuf/runtime/CodedReader.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698