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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/protobuf/runtime/CodedBufferReader.dart ('k') | lib/protobuf/runtime/CodedReader.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/protobuf/runtime/CodedBufferWriter.dart
diff --git a/lib/protobuf/runtime/CodedBufferWriter.dart b/lib/protobuf/runtime/CodedBufferWriter.dart
new file mode 100644
index 0000000000000000000000000000000000000000..2b13493867ca4a1508fc338eca3ec20615e6e036
--- /dev/null
+++ b/lib/protobuf/runtime/CodedBufferWriter.dart
@@ -0,0 +1,279 @@
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+class CodedBufferWriter {
+
+ static int computeBoolSize(int fieldNumber, bool value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfBool;
+
+ static int computeBoolSizeNoTag(bool value) => PbCodec.sizeOfBool;
+
+ static int computeBytesSize(int fieldNumber, List<int> value) =>
+ computeTagSize(fieldNumber) + computeBytesSizeNoTag(value);
+
+ static int computeBytesSizeNoTag(List<int> value) =>
+ PbCodec.sizeOfInt32(value.length) + value.length;
+
+ static int computeFloatSize(int fieldNumber, double value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
+
+ static int computeFloatSizeNoTag(double value) => PbCodec.sizeOfFixed32;
+
+ static int computeDoubleSize(int fieldNumber, double value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
+
+ static int computeDoubleSizeNoTag(double value) => PbCodec.sizeOfFixed64;
+
+ static int computeEnumSize(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfInt32(value);
+
+ static int computeEnumSizeNoTag(ProtobufEnum value) =>
+ PbCodec.sizeOfInt32(value.value);
+
+ static int computeFixed32Size(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
+
+ static int computeFixed32SizeNoTag(int value) => PbCodec.sizeOfFixed32;
+
+ static int computeFixed64Size(int fieldNumber, var value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
+
+ static int computeFixed64SizeNoTag(var value) => PbCodec.sizeOfFixed64;
+
+ static int computeGroupSize(int fieldNumber, Message value) =>
+ computeTagSize(fieldNumber) * 2 + value.getSerializedSize();
+
+ static int computeGroupSizeNoTag(Message value) => value.getSerializedSize();
+
+ static int computeInt32Size(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfInt32(value);
+
+ static int computeInt32SizeNoTag(int value) => PbCodec.sizeOfInt32(value);
+
+ static int computeInt64Size(int fieldNumber, var value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfInt64(value);
+
+ static int computeInt64SizeNoTag(var value) => PbCodec.sizeOfInt64(value);
+
+ static int computeMessageSize(int fieldNumber, Message value) =>
+ computeTagSize(fieldNumber) + computeMessageSizeNoTag(value);
+
+ static int computeMessageSizeNoTag(Message value) {
+ final int size = value.getSerializedSize();
+ return PbCodec.sizeOfInt32(size) + size;
+ }
+
+ static int computeSfixed32Size(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed32;
+
+ static int computeSfixed32SizeNoTag(int value) => PbCodec.sizeOfFixed32;
+
+ static int computeSfixed64Size(int fieldNumber, var value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfFixed64;
+
+ static int computeSfixed64SizeNoTag(var value) => PbCodec.sizeOfFixed64;
+
+ static int computeSint32Size(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfSint32(value);
+
+ static int computeSint32SizeNoTag(int value) => PbCodec.sizeOfSint32(value);
+
+ static int computeSint64Size(int fieldNumber, var value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfSint64(value);
+
+ static int computeSint64SizeNoTag(var value) => PbCodec.sizeOfSint64(value);
+
+ static int computeStringSize(int fieldNumber, String value) =>
+ computeTagSize(fieldNumber) + computeStringSizeNoTag(value);
+
+ static int computeStringSizeNoTag(String value) =>
+ PbCodec.sizeOfInt32(value.length) +
+ encodeUtf8(value).length;
+
+ static int computeUint32Size(int fieldNumber, int value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfUint32(value);
+
+ static int computeUint64Size(int fieldNumber, var value) =>
+ computeTagSize(fieldNumber) + PbCodec.sizeOfUint64(value);
+
+ static int computeUint64SizeNoTag(var value) =>
+ PbCodec.sizeOfUint64(value);
+
+ static int computeUint32SizeNoTag(int value) => PbCodec.sizeOfUint32(value);
+
+ static int computeTagSize(int fieldNumber) =>
+ PbCodec.sizeOfInt32(WireFormat.makeTag(fieldNumber, 0));
+
+ CodedBufferWriter(int length) :
+ _position = 0,
+ buffer = createIntArray(length);
+
+ int get length() => _position;
+
+ void writeBool(int fieldNumber, bool value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeBoolNoTag(value);
+ }
+
+ void writeBoolNoTag(bool value) => writeRawByte(value ? 1 : 0);
+
+ void writeBytes(int fieldNumber, List<int> value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED);
+ writeBytesNoTag(value);
+ }
+
+ void writeBytesNoTag(List<int> value) {
+ writeRawBytes(PbCodec.int32ToBytes(value.length));
+ writeRawBytes(value);
+ }
+
+ void writeDouble(int fieldNumber, double value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
+ writeDoubleNoTag(value);
+ }
+
+ void writeDoubleNoTag(double value) =>
+ writeRawBytes(PbCodec.doubleToBytes(value));
+
+ void writeEnum(int fieldNumber, ProtobufEnum value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeEnumNoTag(value);
+ }
+
+ void writeEnumNoTag(ProtobufEnum value) =>
+ writeRawBytes(PbCodec.int32ToBytes(value.value));
+
+ void writeFixed32(int fieldNumber, int value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
+ writeFixed32NoTag(value);
+ }
+
+ void writeFixed32NoTag(int value) =>
+ writeRawBytes(PbCodec.fixed32ToBytes(value));
+
+ void writeFixed64(int fieldNumber, var value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
+ writeFixed64NoTag(value);
+ }
+
+ void writeFixed64NoTag(var value) =>
+ writeRawBytes(PbCodec.fixed64ToBytes(value));
+
+ void writeFloat(int fieldNumber, double value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
+ writeFloatNoTag(value);
+ }
+
+ void writeFloatNoTag(double value) =>
+ writeRawBytes(PbCodec.floatToBytes(value));
+
+ void writeGroup(int fieldNumber, Message value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_START_GROUP);
+ writeGroupNoTag(value);
+ writeTag(fieldNumber, WireFormat.WIRETYPE_END_GROUP);
+ }
+
+ void writeGroupNoTag(Message value) {
+ value.writeToCodedBufferWriter(this);
+ }
+
+ void writeInt32(int fieldNumber, int value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeInt32NoTag(value);
+ }
+
+ void writeInt32NoTag(int value) =>
+ writeRawBytes(PbCodec.int32ToBytes(value));
+
+ void writeInt64(int fieldNumber, var value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeInt64NoTag(value);
+ }
+
+ void writeInt64NoTag(var value) =>
+ writeRawBytes(PbCodec.int64ToBytes(value));
+
+ void writeMessage(int fieldNumber, Message value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_LENGTH_DELIMITED);
+ writeMessageNoTag(value);
+ }
+
+ void writeMessageNoTag(Message value) {
+ writeInt32NoTag(value.getSerializedSize());
+ value.writeToCodedBufferWriter(this);
+ }
+
+ void writeSfixed32(int fieldNumber, int value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED32);
+ writeSfixed32NoTag(value);
+ }
+
+ void writeSfixed32NoTag(int value) =>
+ writeRawBytes(PbCodec.sfixed32ToBytes(value));
+
+ void writeSfixed64(int fieldNumber, var value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_FIXED64);
+ writeSfixed64NoTag(value);
+ }
+
+ void writeSfixed64NoTag(var value) =>
+ writeRawBytes(PbCodec.sfixed64ToBytes(value));
+
+ void writeSint32(int fieldNumber, int value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeSint32NoTag(value);
+ }
+
+ void writeSint32NoTag(int value) =>
+ writeRawBytes(PbCodec.sint32ToBytes(value));
+
+ void writeSint64(int fieldNumber, var value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeSint64NoTag(value);
+ }
+
+ void writeSint64NoTag(var value) =>
+ writeRawBytes(PbCodec.sint64ToBytes(value));
+
+ void writeString(int fieldNumber, String value) =>
+ writeBytes(fieldNumber, encodeUtf8(value));
+
+ void writeStringNoTag(String value) =>
+ writeBytesNoTag(encodeUtf8(value));
+
+ void writeUint32(int fieldNumber, int value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeUint32NoTag(value);
+ }
+
+ void writeUint32NoTag(int value) =>
+ writeRawBytes(PbCodec.uint32ToBytes(value));
+
+ void writeUint64(int fieldNumber, var value) {
+ writeTag(fieldNumber, WireFormat.WIRETYPE_VARINT);
+ writeUint64NoTag(value);
+ }
+
+ void writeUint64NoTag(var value) =>
+ writeRawBytes(PbCodec.uint64ToBytes(value));
+
+ void writeTag(int fieldNumber, int wireFormat) =>
+ writeRawBytes(PbCodec.int32ToBytes(
+ WireFormat.makeTag(fieldNumber, wireFormat)));
+
+ void writeRawByte(int value) {
+ buffer[_position++] = value & 0xff;
+ }
+
+ void writeRawBytes(List<int> value, [int offset = 0, int length = null]) {
+ if (length == null) {
+ length = value.length - offset;
+ }
+ buffer.setRange(_position, length, value, offset);
+ _position += length;
+ }
+
+ final List<int> buffer;
+ int _position;
+}
« 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