aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-06-03 11:57:47 -0500
committerrogerk <devnull@localhost>2011-06-03 11:57:47 -0500
commit90922db77aef8bd7f21e7a87a75d86885da8dbbc (patch)
treeb86202690d68a01341c2232477657a4da27f7375 /src/ProtocolBuffers
parent8a2d0f48d70bd760bf26218f7107c86ca9f91cce (diff)
downloadprotobuf-90922db77aef8bd7f21e7a87a75d86885da8dbbc.tar.gz
protobuf-90922db77aef8bd7f21e7a87a75d86885da8dbbc.tar.bz2
protobuf-90922db77aef8bd7f21e7a87a75d86885da8dbbc.zip
Added the field name to all CodedOutputStream.Write??? calls
Refactored 'speed' generated write of arrays to call Write???Array. This may have impacted speed write speeds for arrays of non-reference types due to the use of non-generic IEnumerable and the subsequent boxing of value types. This could be addressed later if desired.
Diffstat (limited to 'src/ProtocolBuffers')
-rw-r--r--src/ProtocolBuffers/AbstractMessage.cs4
-rw-r--r--src/ProtocolBuffers/CodedOutputStream.cs140
-rw-r--r--src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs32
-rw-r--r--src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs176
-rw-r--r--src/ProtocolBuffers/FieldSet.cs6
-rw-r--r--src/ProtocolBuffers/MessageStreamWriter.cs2
-rw-r--r--src/ProtocolBuffers/UnknownField.cs11
7 files changed, 209 insertions, 162 deletions
diff --git a/src/ProtocolBuffers/AbstractMessage.cs b/src/ProtocolBuffers/AbstractMessage.cs
index a4d98045..1e1ac1da 100644
--- a/src/ProtocolBuffers/AbstractMessage.cs
+++ b/src/ProtocolBuffers/AbstractMessage.cs
@@ -166,13 +166,13 @@ namespace Google.ProtocolBuffers
{
foreach (object element in valueList)
{
- output.WriteField(field.FieldType, field.FieldNumber, element);
+ output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
}
}
}
else
{
- output.WriteField(field.FieldType, field.FieldNumber, entry.Value);
+ output.WriteField(field.FieldType, field.FieldNumber, field.Name, entry.Value);
}
}
diff --git a/src/ProtocolBuffers/CodedOutputStream.cs b/src/ProtocolBuffers/CodedOutputStream.cs
index 50a7f372..ee8a5dc6 100644
--- a/src/ProtocolBuffers/CodedOutputStream.cs
+++ b/src/ProtocolBuffers/CodedOutputStream.cs
@@ -35,6 +35,7 @@
#endregion
using System;
+using System.Globalization;
using System.IO;
using System.Text;
using Google.ProtocolBuffers.Descriptors;
@@ -128,7 +129,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes a double field value, including tag, to the stream.
/// </summary>
- public void WriteDouble(int fieldNumber, double value)
+ public void WriteDouble(int fieldNumber, string fieldName, double value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed64);
WriteDoubleNoTag(value);
@@ -137,7 +138,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes a float field value, including tag, to the stream.
/// </summary>
- public void WriteFloat(int fieldNumber, float value)
+ public void WriteFloat(int fieldNumber, string fieldName, float value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed32);
WriteFloatNoTag(value);
@@ -147,7 +148,7 @@ namespace Google.ProtocolBuffers
/// Writes a uint64 field value, including tag, to the stream.
/// </summary>
[CLSCompliant(false)]
- public void WriteUInt64(int fieldNumber, ulong value)
+ public void WriteUInt64(int fieldNumber, string fieldName, ulong value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint64(value);
@@ -156,7 +157,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes an int64 field value, including tag, to the stream.
/// </summary>
- public void WriteInt64(int fieldNumber, long value)
+ public void WriteInt64(int fieldNumber, string fieldName, long value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint64((ulong) value);
@@ -165,7 +166,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes an int32 field value, including tag, to the stream.
/// </summary>
- public void WriteInt32(int fieldNumber, int value)
+ public void WriteInt32(int fieldNumber, string fieldName, int value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
if (value >= 0)
@@ -183,7 +184,7 @@ namespace Google.ProtocolBuffers
/// Writes a fixed64 field value, including tag, to the stream.
/// </summary>
[CLSCompliant(false)]
- public void WriteFixed64(int fieldNumber, ulong value)
+ public void WriteFixed64(int fieldNumber, string fieldName, ulong value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed64);
WriteRawLittleEndian64(value);
@@ -193,7 +194,7 @@ namespace Google.ProtocolBuffers
/// Writes a fixed32 field value, including tag, to the stream.
/// </summary>
[CLSCompliant(false)]
- public void WriteFixed32(int fieldNumber, uint value)
+ public void WriteFixed32(int fieldNumber, string fieldName, uint value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed32);
WriteRawLittleEndian32(value);
@@ -202,7 +203,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes a bool field value, including tag, to the stream.
/// </summary>
- public void WriteBool(int fieldNumber, bool value)
+ public void WriteBool(int fieldNumber, string fieldName, bool value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawByte(value ? (byte) 1 : (byte) 0);
@@ -211,7 +212,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes a string field value, including tag, to the stream.
/// </summary>
- public void WriteString(int fieldNumber, string value)
+ public void WriteString(int fieldNumber, string fieldName, string value)
{
WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
// Optimise the case where we have enough space to write
@@ -233,7 +234,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Writes a group field value, including tag, to the stream.
/// </summary>
- public void WriteGroup(int fieldNumber, IMessageLite value)
+ public void WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
{
WriteTag(fieldNumber, WireFormat.WireType.StartGroup);
value.WriteTo(this);
@@ -241,21 +242,21 @@ namespace Google.ProtocolBuffers
}
[Obsolete]
- public void WriteUnknownGroup(int fieldNumber, IMessageLite value)
+ public void WriteUnknownGroup(int fieldNumber, string fieldName, IMessageLite value)
{
WriteTag(fieldNumber, WireFormat.WireType.StartGroup);
value.WriteTo(this);
WriteTag(fieldNumber, WireFormat.WireType.EndGroup);
}
- public void WriteMessage(int fieldNumber, IMessageLite value)
+ public void WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
{
WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
WriteRawVarint32((uint) value.SerializedSize);
value.WriteTo(this);
}
- public void WriteBytes(int fieldNumber, ByteString value)
+ public void WriteBytes(int fieldNumber, string fieldName, ByteString value)
{
WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
WriteRawVarint32((uint)value.Length);
@@ -263,115 +264,153 @@ namespace Google.ProtocolBuffers
}
[CLSCompliant(false)]
- public void WriteUInt32(int fieldNumber, uint value)
+ public void WriteUInt32(int fieldNumber, string fieldName, uint value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint32(value);
}
- public void WriteEnum(int fieldNumber, int value)
+ public void WriteEnum(int fieldNumber, string fieldName, int value, string textValue)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint32((uint) value);
}
- public void WriteSFixed32(int fieldNumber, int value)
+ public void WriteSFixed32(int fieldNumber, string fieldName, int value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed32);
WriteRawLittleEndian32((uint) value);
}
- public void WriteSFixed64(int fieldNumber, long value)
+ public void WriteSFixed64(int fieldNumber, string fieldName, long value)
{
WriteTag(fieldNumber, WireFormat.WireType.Fixed64);
WriteRawLittleEndian64((ulong) value);
}
- public void WriteSInt32(int fieldNumber, int value)
+ public void WriteSInt32(int fieldNumber, string fieldName, int value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint32(EncodeZigZag32(value));
}
- public void WriteSInt64(int fieldNumber, long value)
+ public void WriteSInt64(int fieldNumber, string fieldName, long value)
{
WriteTag(fieldNumber, WireFormat.WireType.Varint);
WriteRawVarint64(EncodeZigZag64(value));
}
- public void WriteMessageSetExtension(int fieldNumber, IMessageLite value)
+ public void WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
{
WriteTag(WireFormat.MessageSetField.Item, WireFormat.WireType.StartGroup);
- WriteUInt32(WireFormat.MessageSetField.TypeID, (uint) fieldNumber);
- WriteMessage(WireFormat.MessageSetField.Message, value);
+ WriteUInt32(WireFormat.MessageSetField.TypeID, "type_id", (uint) fieldNumber);
+ WriteMessage(WireFormat.MessageSetField.Message, "message", value);
WriteTag(WireFormat.MessageSetField.Item, WireFormat.WireType.EndGroup);
}
public void WriteRawMessageSetExtension(int fieldNumber, ByteString value)
{
WriteTag(WireFormat.MessageSetField.Item, WireFormat.WireType.StartGroup);
- WriteUInt32(WireFormat.MessageSetField.TypeID, (uint) fieldNumber);
- WriteBytes(WireFormat.MessageSetField.Message, value);
+ WriteUInt32(WireFormat.MessageSetField.TypeID, "type_id", (uint) fieldNumber);
+ WriteBytes(WireFormat.MessageSetField.Message, "message", value);
WriteTag(WireFormat.MessageSetField.Item, WireFormat.WireType.EndGroup);
}
- public void WriteField(FieldType fieldType, int fieldNumber, object value)
+ public void WriteMessageArray(int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+ {
+ foreach (IMessageLite msg in list)
+ WriteMessage(fieldNumber, fieldName, msg);
+ }
+
+ public void WriteGroupArray(int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+ {
+ foreach (IMessageLite msg in list)
+ WriteGroup(fieldNumber, fieldName, msg);
+ }
+
+ public void WriteArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+ {
+ foreach (object element in list)
+ WriteField(fieldType, fieldNumber, fieldName, element);
+ }
+
+ public void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+ {
+ int calculatedSize = 0;
+ foreach (object element in list)
+ calculatedSize += CodedOutputStream.ComputeFieldSizeNoTag(fieldType, element);
+ WritePackedArray(fieldType, fieldNumber, fieldName, calculatedSize, list);
+ }
+
+ public void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, int calculatedSize, System.Collections.IEnumerable list)
+ {
+ WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
+ WriteRawVarint32((uint)calculatedSize);
+
+ foreach (object element in list)
+ WriteFieldNoTag(fieldType, element);
+ }
+
+ public void WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
{
switch (fieldType)
{
case FieldType.Double:
- WriteDouble(fieldNumber, (double) value);
+ WriteDouble(fieldNumber, fieldName, (double) value);
break;
case FieldType.Float:
- WriteFloat(fieldNumber, (float) value);
+ WriteFloat(fieldNumber, fieldName, (float) value);
break;
case FieldType.Int64:
- WriteInt64(fieldNumber, (long) value);
+ WriteInt64(fieldNumber, fieldName, (long) value);
break;
case FieldType.UInt64:
- WriteUInt64(fieldNumber, (ulong) value);
+ WriteUInt64(fieldNumber, fieldName, (ulong) value);
break;
case FieldType.Int32:
- WriteInt32(fieldNumber, (int) value);
+ WriteInt32(fieldNumber, fieldName, (int) value);
break;
case FieldType.Fixed64:
- WriteFixed64(fieldNumber, (ulong) value);
+ WriteFixed64(fieldNumber, fieldName, (ulong) value);
break;
case FieldType.Fixed32:
- WriteFixed32(fieldNumber, (uint) value);
+ WriteFixed32(fieldNumber, fieldName, (uint) value);
break;
case FieldType.Bool:
- WriteBool(fieldNumber, (bool) value);
+ WriteBool(fieldNumber, fieldName, (bool) value);
break;
case FieldType.String:
- WriteString(fieldNumber, (string) value);
+ WriteString(fieldNumber, fieldName, (string) value);
break;
case FieldType.Group:
- WriteGroup(fieldNumber, (IMessageLite) value);
+ WriteGroup(fieldNumber, fieldName, (IMessageLite) value);
break;
case FieldType.Message:
- WriteMessage(fieldNumber, (IMessageLite) value);
+ WriteMessage(fieldNumber, fieldName, (IMessageLite) value);
break;
case FieldType.Bytes:
- WriteBytes(fieldNumber, (ByteString) value);
+ WriteBytes(fieldNumber, fieldName, (ByteString) value);
break;
case FieldType.UInt32:
- WriteUInt32(fieldNumber, (uint) value);
+ WriteUInt32(fieldNumber, fieldName, (uint) value);
break;
case FieldType.SFixed32:
- WriteSFixed32(fieldNumber, (int) value);
+ WriteSFixed32(fieldNumber, fieldName, (int) value);
break;
case FieldType.SFixed64:
- WriteSFixed64(fieldNumber, (long) value);
+ WriteSFixed64(fieldNumber, fieldName, (long) value);
break;
case FieldType.SInt32:
- WriteSInt32(fieldNumber, (int) value);
+ WriteSInt32(fieldNumber, fieldName, (int) value);
break;
case FieldType.SInt64:
- WriteSInt64(fieldNumber, (long) value);
+ WriteSInt64(fieldNumber, fieldName, (long) value);
break;
case FieldType.Enum:
- WriteEnum(fieldNumber, ((IEnumLite) value).Number);
+ if(value is System.Enum)
+ WriteEnum(fieldNumber, fieldName, ((IConvertible)value).ToInt32(CultureInfo.InvariantCulture), value.ToString());
+ else
+ WriteEnum(fieldNumber, fieldName, ((IEnumLite) value).Number, ((IEnumLite) value).Name);
break;
}
}
@@ -432,7 +471,10 @@ namespace Google.ProtocolBuffers
WriteSInt64NoTag((long) value);
break;
case FieldType.Enum:
- WriteEnumNoTag(((IEnumLite) value).Number);
+ if (value is System.Enum)
+ WriteEnumNoTag(((IConvertible)value).ToInt32(CultureInfo.InvariantCulture));
+ else
+ WriteEnumNoTag(((IEnumLite) value).Number);
break;
}
}
@@ -1252,7 +1294,10 @@ namespace Google.ProtocolBuffers
case FieldType.SInt64:
return ComputeSInt64Size(fieldNumber, (long) value);
case FieldType.Enum:
- return ComputeEnumSize(fieldNumber, ((IEnumLite) value).Number);
+ if (value is System.Enum)
+ return ComputeEnumSize(fieldNumber, ((IConvertible)value).ToInt32(CultureInfo.InvariantCulture));
+ else
+ return ComputeEnumSize(fieldNumber, ((IEnumLite) value).Number);
default:
throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
}
@@ -1301,7 +1346,10 @@ namespace Google.ProtocolBuffers
case FieldType.SInt64:
return ComputeSInt64SizeNoTag((long) value);
case FieldType.Enum:
- return ComputeEnumSizeNoTag(((IEnumLite) value).Number);
+ if (value is System.Enum)
+ return ComputeEnumSizeNoTag(((IConvertible)value).ToInt32(CultureInfo.InvariantCulture));
+ else
+ return ComputeEnumSizeNoTag(((IEnumLite) value).Number);
default:
throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
}
diff --git a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
index bfb78da5..956efd18 100644
--- a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
+++ b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs
@@ -283,43 +283,43 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasNamespace) {
- output.WriteString(1, Namespace);
+ output.WriteString(1, "namespace", Namespace);
}
if (HasUmbrellaClassname) {
- output.WriteString(2, UmbrellaClassname);
+ output.WriteString(2, "umbrella_classname", UmbrellaClassname);
}
if (HasPublicClasses) {
- output.WriteBool(3, PublicClasses);
+ output.WriteBool(3, "public_classes", PublicClasses);
}
if (HasMultipleFiles) {
- output.WriteBool(4, MultipleFiles);
+ output.WriteBool(4, "multiple_files", MultipleFiles);
}
if (HasNestClasses) {
- output.WriteBool(5, NestClasses);
+ output.WriteBool(5, "nest_classes", NestClasses);
}
if (HasCodeContracts) {
- output.WriteBool(6, CodeContracts);
+ output.WriteBool(6, "code_contracts", CodeContracts);
}
if (HasExpandNamespaceDirectories) {
- output.WriteBool(7, ExpandNamespaceDirectories);
+ output.WriteBool(7, "expand_namespace_directories", ExpandNamespaceDirectories);
}
if (HasClsCompliance) {
- output.WriteBool(8, ClsCompliance);
+ output.WriteBool(8, "cls_compliance", ClsCompliance);
}
if (HasFileExtension) {
- output.WriteString(221, FileExtension);
+ output.WriteString(221, "file_extension", FileExtension);
}
if (HasUmbrellaNamespace) {
- output.WriteString(222, UmbrellaNamespace);
+ output.WriteString(222, "umbrella_namespace", UmbrellaNamespace);
}
if (HasOutputDirectory) {
- output.WriteString(223, OutputDirectory);
+ output.WriteString(223, "output_directory", OutputDirectory);
}
if (HasIgnoreGoogleProtobuf) {
- output.WriteBool(224, IgnoreGoogleProtobuf);
+ output.WriteBool(224, "ignore_google_protobuf", IgnoreGoogleProtobuf);
}
if (HasServiceGeneratorType) {
- output.WriteEnum(225, (int) ServiceGeneratorType);
+ output.WriteEnum(225, "service_generator_type", (int) ServiceGeneratorType, ServiceGeneratorType.ToString());
}
UnknownFields.WriteTo(output);
}
@@ -889,7 +889,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasPropertyName) {
- output.WriteString(1, PropertyName);
+ output.WriteString(1, "property_name", PropertyName);
}
UnknownFields.WriteTo(output);
}
@@ -1111,7 +1111,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasInterfaceId) {
- output.WriteString(1, InterfaceId);
+ output.WriteString(1, "interface_id", InterfaceId);
}
UnknownFields.WriteTo(output);
}
@@ -1333,7 +1333,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasDispatchId) {
- output.WriteInt32(1, DispatchId);
+ output.WriteInt32(1, "dispatch_id", DispatchId);
}
UnknownFields.WriteTo(output);
}
diff --git a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
index 3c06d946..b9b31855 100644
--- a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
+++ b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
@@ -275,8 +275,8 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto element in FileList) {
- output.WriteMessage(1, element);
+ if (file_.Count > 0) {
+ output.WriteMessageArray(1, "file", file_);
}
UnknownFields.WriteTo(output);
}
@@ -615,30 +615,28 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
if (HasPackage) {
- output.WriteString(2, Package);
+ output.WriteString(2, "package", Package);
}
if (dependency_.Count > 0) {
- foreach (string element in dependency_) {
- output.WriteString(3, element);
- }
+ output.WriteArray(pbd::FieldType.String, 3, "dependency", dependency_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in MessageTypeList) {
- output.WriteMessage(4, element);
+ if (messageType_.Count > 0) {
+ output.WriteMessageArray(4, "message_type", messageType_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
- output.WriteMessage(5, element);
+ if (enumType_.Count > 0) {
+ output.WriteMessageArray(5, "enum_type", enumType_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto element in ServiceList) {
- output.WriteMessage(6, element);
+ if (service_.Count > 0) {
+ output.WriteMessageArray(6, "service", service_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
- output.WriteMessage(7, element);
+ if (extension_.Count > 0) {
+ output.WriteMessageArray(7, "extension", extension_);
}
if (HasOptions) {
- output.WriteMessage(8, Options);
+ output.WriteMessage(8, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -1228,10 +1226,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasStart) {
- output.WriteInt32(1, Start);
+ output.WriteInt32(1, "start", Start);
}
if (HasEnd) {
- output.WriteInt32(2, End);
+ output.WriteInt32(2, "end", End);
}
UnknownFields.WriteTo(output);
}
@@ -1543,25 +1541,25 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in FieldList) {
- output.WriteMessage(2, element);
+ if (field_.Count > 0) {
+ output.WriteMessageArray(2, "field", field_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto element in NestedTypeList) {
- output.WriteMessage(3, element);
+ if (nestedType_.Count > 0) {
+ output.WriteMessageArray(3, "nested_type", nestedType_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto element in EnumTypeList) {
- output.WriteMessage(4, element);
+ if (enumType_.Count > 0) {
+ output.WriteMessageArray(4, "enum_type", enumType_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange element in ExtensionRangeList) {
- output.WriteMessage(5, element);
+ if (extensionRange_.Count > 0) {
+ output.WriteMessageArray(5, "extension_range", extensionRange_);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto element in ExtensionList) {
- output.WriteMessage(6, element);
+ if (extension_.Count > 0) {
+ output.WriteMessageArray(6, "extension", extension_);
}
if (HasOptions) {
- output.WriteMessage(7, Options);
+ output.WriteMessage(7, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -2201,28 +2199,28 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
if (HasExtendee) {
- output.WriteString(2, Extendee);
+ output.WriteString(2, "extendee", Extendee);
}
if (HasNumber) {
- output.WriteInt32(3, Number);
+ output.WriteInt32(3, "number", Number);
}
if (HasLabel) {
- output.WriteEnum(4, (int) Label);
+ output.WriteEnum(4, "label", (int) Label, Label.ToString());
}
if (HasType) {
- output.WriteEnum(5, (int) Type);
+ output.WriteEnum(5, "type", (int) Type, Type.ToString());
}
if (HasTypeName) {
- output.WriteString(6, TypeName);
+ output.WriteString(6, "type_name", TypeName);
}
if (HasDefaultValue) {
- output.WriteString(7, DefaultValue);
+ output.WriteString(7, "default_value", DefaultValue);
}
if (HasOptions) {
- output.WriteMessage(8, Options);
+ output.WriteMessage(8, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -2710,13 +2708,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto element in ValueList) {
- output.WriteMessage(2, element);
+ if (value_.Count > 0) {
+ output.WriteMessageArray(2, "value", value_);
}
if (HasOptions) {
- output.WriteMessage(3, Options);
+ output.WriteMessage(3, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -3063,13 +3061,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
if (HasNumber) {
- output.WriteInt32(2, Number);
+ output.WriteInt32(2, "number", Number);
}
if (HasOptions) {
- output.WriteMessage(3, Options);
+ output.WriteMessage(3, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -3398,13 +3396,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto element in MethodList) {
- output.WriteMessage(2, element);
+ if (method_.Count > 0) {
+ output.WriteMessageArray(2, "method", method_);
}
if (HasOptions) {
- output.WriteMessage(3, Options);
+ output.WriteMessage(3, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -3761,16 +3759,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasName) {
- output.WriteString(1, Name);
+ output.WriteString(1, "name", Name);
}
if (HasInputType) {
- output.WriteString(2, InputType);
+ output.WriteString(2, "input_type", InputType);
}
if (HasOutputType) {
- output.WriteString(3, OutputType);
+ output.WriteString(3, "output_type", OutputType);
}
if (HasOptions) {
- output.WriteMessage(4, Options);
+ output.WriteMessage(4, "options", Options);
}
UnknownFields.WriteTo(output);
}
@@ -4194,28 +4192,28 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
int size = SerializedSize;
pb::ExtendableMessage<FileOptions, FileOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
if (HasJavaPackage) {
- output.WriteString(1, JavaPackage);
+ output.WriteString(1, "java_package", JavaPackage);
}
if (HasJavaOuterClassname) {
- output.WriteString(8, JavaOuterClassname);
+ output.WriteString(8, "java_outer_classname", JavaOuterClassname);
}
if (HasOptimizeFor) {
- output.WriteEnum(9, (int) OptimizeFor);
+ output.WriteEnum(9, "optimize_for", (int) OptimizeFor, OptimizeFor.ToString());
}
if (HasJavaMultipleFiles) {
- output.WriteBool(10, JavaMultipleFiles);
+ output.WriteBool(10, "java_multiple_files", JavaMultipleFiles);
}
if (HasCcGenericServices) {
- output.WriteBool(16, CcGenericServices);
+ output.WriteBool(16, "cc_generic_services", CcGenericServices);
}
if (HasJavaGenericServices) {
- output.WriteBool(17, JavaGenericServices);
+ output.WriteBool(17, "java_generic_services", JavaGenericServices);
}
if (HasPyGenericServices) {
- output.WriteBool(18, PyGenericServices);
+ output.WriteBool(18, "py_generic_services", PyGenericServices);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -4695,13 +4693,13 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
int size = SerializedSize;
pb::ExtendableMessage<MessageOptions, MessageOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
if (HasMessageSetWireFormat) {
- output.WriteBool(1, MessageSetWireFormat);
+ output.WriteBool(1, "message_set_wire_format", MessageSetWireFormat);
}
if (HasNoStandardDescriptorAccessor) {
- output.WriteBool(2, NoStandardDescriptorAccessor);
+ output.WriteBool(2, "no_standard_descriptor_accessor", NoStandardDescriptorAccessor);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -5067,19 +5065,19 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
int size = SerializedSize;
pb::ExtendableMessage<FieldOptions, FieldOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
if (HasCtype) {
- output.WriteEnum(1, (int) Ctype);
+ output.WriteEnum(1, "ctype", (int) Ctype, Ctype.ToString());
}
if (HasPacked) {
- output.WriteBool(2, Packed);
+ output.WriteBool(2, "packed", Packed);
}
if (HasDeprecated) {
- output.WriteBool(3, Deprecated);
+ output.WriteBool(3, "deprecated", Deprecated);
}
if (HasExperimentalMapKey) {
- output.WriteString(9, ExperimentalMapKey);
+ output.WriteString(9, "experimental_map_key", ExperimentalMapKey);
}
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -5453,8 +5451,8 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
pb::ExtendableMessage<EnumOptions, EnumOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -5707,8 +5705,8 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
pb::ExtendableMessage<EnumValueOptions, EnumValueOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -5961,8 +5959,8 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
pb::ExtendableMessage<ServiceOptions, ServiceOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -6215,8 +6213,8 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
pb::ExtendableMessage<MethodOptions, MethodOptions.Builder>.ExtensionWriter extensionWriter = CreateExtensionWriter(this);
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption element in UninterpretedOptionList) {
- output.WriteMessage(999, element);
+ if (uninterpretedOption_.Count > 0) {
+ output.WriteMessageArray(999, "uninterpreted_option", uninterpretedOption_);
}
extensionWriter.WriteUntil(536870912, output);
UnknownFields.WriteTo(output);
@@ -6505,10 +6503,10 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
if (HasNamePart_) {
- output.WriteString(1, NamePart_);
+ output.WriteString(1, "name_part", NamePart_);
}
if (HasIsExtension) {
- output.WriteBool(2, IsExtension);
+ output.WriteBool(2, "is_extension", IsExtension);
}
UnknownFields.WriteTo(output);
}
@@ -6791,23 +6789,23 @@ namespace Google.ProtocolBuffers.DescriptorProtos {
public override void WriteTo(pb::CodedOutputStream output) {
int size = SerializedSize;
- foreach (global::Google.ProtocolBuffers.DescriptorProtos.UninterpretedOption.Types.NamePart element in NameList) {
- output.WriteMessage(2, element);
+ if (name_.Count > 0) {
+ output.WriteMessageArray(2, "name", name_);
}
if (HasIdentifierValue) {
- output.WriteString(3, IdentifierValue);
+ output.WriteString(3, "identifier_value", IdentifierValue);
}
if (HasPositiveIntValue) {
- output.WriteUInt64(4, PositiveIntValue);
+ output.WriteUInt64(4, "positive_int_value", PositiveIntValue);
}
if (HasNegativeIntValue) {
- output.WriteInt64(5, NegativeIntValue);
+ output.WriteInt64(5, "negative_int_value", NegativeIntValue);
}
if (HasDoubleValue) {
- output.WriteDouble(6, DoubleValue);
+ output.WriteDouble(6, "double_value", DoubleValue);
}
if (HasStringValue) {
- output.WriteBytes(7, StringValue);
+ output.WriteBytes(7, "string_value", StringValue);
}
UnknownFields.WriteTo(output);
}
diff --git a/src/ProtocolBuffers/FieldSet.cs b/src/ProtocolBuffers/FieldSet.cs
index 46d7ac17..93082b51 100644
--- a/src/ProtocolBuffers/FieldSet.cs
+++ b/src/ProtocolBuffers/FieldSet.cs
@@ -470,7 +470,7 @@ namespace Google.ProtocolBuffers
{
if (field.IsExtension && field.MessageSetWireFormat)
{
- output.WriteMessageSetExtension(field.FieldNumber, (IMessageLite) value);
+ output.WriteMessageSetExtension(field.FieldNumber, field.Name, (IMessageLite)value);
}
else
{
@@ -497,13 +497,13 @@ namespace Google.ProtocolBuffers
{
foreach (object element in valueList)
{
- output.WriteField(field.FieldType, field.FieldNumber, element);
+ output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
}
}
}
else
{
- output.WriteField(field.FieldType, field.FieldNumber, value);
+ output.WriteField(field.FieldType, field.FieldNumber, field.Name, value);
}
}
}
diff --git a/src/ProtocolBuffers/MessageStreamWriter.cs b/src/ProtocolBuffers/MessageStreamWriter.cs
index df1e10e2..3430e13c 100644
--- a/src/ProtocolBuffers/MessageStreamWriter.cs
+++ b/src/ProtocolBuffers/MessageStreamWriter.cs
@@ -59,7 +59,7 @@ namespace Google.ProtocolBuffers
public void Write(T message)
{
- codedOutput.WriteMessage(1, message);
+ codedOutput.WriteMessage(1, "item", message);
}
public void Flush()
diff --git a/src/ProtocolBuffers/UnknownField.cs b/src/ProtocolBuffers/UnknownField.cs
index c403e8a9..d3a73799 100644
--- a/src/ProtocolBuffers/UnknownField.cs
+++ b/src/ProtocolBuffers/UnknownField.cs
@@ -60,6 +60,7 @@ namespace Google.ProtocolBuffers
/// </summary>
public sealed class UnknownField
{
+ public const string UnknownFieldName = "unknown_field";
private static readonly UnknownField defaultInstance = CreateBuilder().Build();
private readonly ReadOnlyCollection<ulong> varintList;
private readonly ReadOnlyCollection<uint> fixed32List;
@@ -177,24 +178,24 @@ namespace Google.ProtocolBuffers
{
foreach (ulong value in varintList)
{
- output.WriteUInt64(fieldNumber, value);
+ output.WriteUInt64(fieldNumber, UnknownFieldName, value);
}
foreach (uint value in fixed32List)
{
- output.WriteFixed32(fieldNumber, value);
+ output.WriteFixed32(fieldNumber, UnknownFieldName, value);
}
foreach (ulong value in fixed64List)
{
- output.WriteFixed64(fieldNumber, value);
+ output.WriteFixed64(fieldNumber, UnknownFieldName, value);
}
foreach (ByteString value in lengthDelimitedList)
{
- output.WriteBytes(fieldNumber, value);
+ output.WriteBytes(fieldNumber, UnknownFieldName, value);
}
foreach (UnknownFieldSet value in groupList)
{
#pragma warning disable 0612
- output.WriteUnknownGroup(fieldNumber, value);
+ output.WriteUnknownGroup(fieldNumber, UnknownFieldName, value);
#pragma warning restore 0612
}
}