diff options
author | csharptest <roger@csharptest.net> | 2011-06-03 11:57:47 -0500 |
---|---|---|
committer | rogerk <devnull@localhost> | 2011-06-03 11:57:47 -0500 |
commit | 90922db77aef8bd7f21e7a87a75d86885da8dbbc (patch) | |
tree | b86202690d68a01341c2232477657a4da27f7375 /src/ProtoGen | |
parent | 8a2d0f48d70bd760bf26218f7107c86ca9f91cce (diff) | |
download | protobuf-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/ProtoGen')
-rw-r--r-- | src/ProtoGen/EnumFieldGenerator.cs | 2 | ||||
-rw-r--r-- | src/ProtoGen/MessageFieldGenerator.cs | 2 | ||||
-rw-r--r-- | src/ProtoGen/PrimitiveFieldGenerator.cs | 2 | ||||
-rw-r--r-- | src/ProtoGen/RepeatedEnumFieldGenerator.cs | 28 | ||||
-rw-r--r-- | src/ProtoGen/RepeatedMessageFieldGenerator.cs | 9 | ||||
-rw-r--r-- | src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs | 28 |
6 files changed, 42 insertions, 29 deletions
diff --git a/src/ProtoGen/EnumFieldGenerator.cs b/src/ProtoGen/EnumFieldGenerator.cs index fe0d3bab..651d7db3 100644 --- a/src/ProtoGen/EnumFieldGenerator.cs +++ b/src/ProtoGen/EnumFieldGenerator.cs @@ -113,7 +113,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateSerializationCode(TextGenerator writer)
{
writer.WriteLine("if (Has{0}) {{", PropertyName);
- writer.WriteLine(" output.WriteEnum({0}, (int) {1});", Number, PropertyName);
+ writer.WriteLine(" output.WriteEnum({0}, \"{2}\", (int) {1}, {1}.ToString());", Number, PropertyName, Descriptor.Name);
writer.WriteLine("}");
}
diff --git a/src/ProtoGen/MessageFieldGenerator.cs b/src/ProtoGen/MessageFieldGenerator.cs index 495a461d..b464da20 100644 --- a/src/ProtoGen/MessageFieldGenerator.cs +++ b/src/ProtoGen/MessageFieldGenerator.cs @@ -129,7 +129,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateSerializationCode(TextGenerator writer)
{
writer.WriteLine("if (Has{0}) {{", PropertyName);
- writer.WriteLine(" output.Write{0}({1}, {2});", MessageOrGroup, Number, PropertyName);
+ writer.WriteLine(" output.Write{0}({1}, \"{3}\", {2});", MessageOrGroup, Number, PropertyName, Descriptor.Name);
writer.WriteLine("}");
}
diff --git a/src/ProtoGen/PrimitiveFieldGenerator.cs b/src/ProtoGen/PrimitiveFieldGenerator.cs index ed7d0dc1..ad0ab8d4 100644 --- a/src/ProtoGen/PrimitiveFieldGenerator.cs +++ b/src/ProtoGen/PrimitiveFieldGenerator.cs @@ -103,7 +103,7 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateSerializationCode(TextGenerator writer)
{
writer.WriteLine("if (Has{0}) {{", PropertyName);
- writer.WriteLine(" output.Write{0}({1}, {2});", CapitalizedTypeName, Number, PropertyName);
+ writer.WriteLine(" output.Write{0}({1}, \"{3}\", {2});", CapitalizedTypeName, Number, PropertyName, Descriptor.Name);
writer.WriteLine("}");
}
diff --git a/src/ProtoGen/RepeatedEnumFieldGenerator.cs b/src/ProtoGen/RepeatedEnumFieldGenerator.cs index e98bc929..e3fdd657 100644 --- a/src/ProtoGen/RepeatedEnumFieldGenerator.cs +++ b/src/ProtoGen/RepeatedEnumFieldGenerator.cs @@ -149,19 +149,23 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine("if ({0}_.Count > 0) {{", Name);
writer.Indent();
if (Descriptor.IsPacked)
- {
- writer.WriteLine("output.WriteRawVarint32({0});", WireFormat.MakeTag(Descriptor));
- writer.WriteLine("output.WriteRawVarint32((uint) {0}MemoizedSerializedSize);", Name);
- writer.WriteLine("foreach (int element in {0}_) {{", Name);
- writer.WriteLine(" output.WriteEnumNoTag(element);");
- writer.WriteLine("}");
- }
+ writer.WriteLine("output.WritePackedArray(pbd::FieldType.{3}, {0}, \"{2}\", {1}MemoizedSerializedSize, {1}_);", Number, Name, Descriptor.Name, Descriptor.FieldType);
else
- {
- writer.WriteLine("foreach (int element in {0}_) {{", Name);
- writer.WriteLine(" output.WriteEnum({0}, element);", Number);
- writer.WriteLine("}");
- }
+ writer.WriteLine("output.WriteArray(pbd::FieldType.{3}, {0}, \"{2}\", {1}_);", Number, Name, Descriptor.Name, Descriptor.FieldType);
+ //if (Descriptor.IsPacked)
+ //{
+ // writer.WriteLine("output.WriteRawVarint32({0});", WireFormat.MakeTag(Descriptor));
+ // writer.WriteLine("output.WriteRawVarint32((uint) {0}MemoizedSerializedSize);", Name);
+ // writer.WriteLine("foreach (int element in {0}_) {{", Name);
+ // writer.WriteLine(" output.WriteEnumNoTag(element);");
+ // writer.WriteLine("}");
+ //}
+ //else
+ //{
+ // writer.WriteLine("foreach (int element in {0}_) {{", Name);
+ // writer.WriteLine(" output.WriteEnum({0}, element);", Number);
+ // writer.WriteLine("}");
+ //}
writer.Outdent();
writer.WriteLine("}");
}
diff --git a/src/ProtoGen/RepeatedMessageFieldGenerator.cs b/src/ProtoGen/RepeatedMessageFieldGenerator.cs index c882f562..d349d78b 100644 --- a/src/ProtoGen/RepeatedMessageFieldGenerator.cs +++ b/src/ProtoGen/RepeatedMessageFieldGenerator.cs @@ -135,8 +135,13 @@ namespace Google.ProtocolBuffers.ProtoGen public void GenerateSerializationCode(TextGenerator writer)
{
- writer.WriteLine("foreach ({0} element in {1}List) {{", TypeName, PropertyName);
- writer.WriteLine(" output.Write{0}({1}, element);", MessageOrGroup, Number);
+ writer.WriteLine("if ({0}_.Count > 0) {{", Name);
+ writer.Indent();
+ writer.WriteLine("output.Write{0}Array({1}, \"{3}\", {2}_);", MessageOrGroup, Number, Name, Descriptor.Name);
+ //writer.WriteLine("foreach ({0} element in {1}List) {{", TypeName, PropertyName);
+ //writer.WriteLine(" output.Write{0}({1}, element);", MessageOrGroup, Number);
+ //writer.WriteLine("}");
+ writer.Outdent();
writer.WriteLine("}");
}
diff --git a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs index b7fe19b3..64b95e1a 100644 --- a/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs +++ b/src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs @@ -141,19 +141,23 @@ namespace Google.ProtocolBuffers.ProtoGen writer.WriteLine("if ({0}_.Count > 0) {{", Name);
writer.Indent();
if (Descriptor.IsPacked)
- {
- writer.WriteLine("output.WriteRawVarint32({0});", WireFormat.MakeTag(Descriptor));
- writer.WriteLine("output.WriteRawVarint32((uint) {0}MemoizedSerializedSize);", Name);
- writer.WriteLine("foreach ({0} element in {1}_) {{", TypeName, Name);
- writer.WriteLine(" output.Write{0}NoTag(element);", CapitalizedTypeName);
- writer.WriteLine("}");
- }
+ writer.WriteLine("output.WritePackedArray(pbd::FieldType.{3}, {0}, \"{2}\", {1}MemoizedSerializedSize, {1}_);", Number, Name, Descriptor.Name, Descriptor.FieldType);
else
- {
- writer.WriteLine("foreach ({0} element in {1}_) {{", TypeName, Name);
- writer.WriteLine(" output.Write{0}({1}, element);", CapitalizedTypeName, Number);
- writer.WriteLine("}");
- }
+ writer.WriteLine("output.WriteArray(pbd::FieldType.{3}, {0}, \"{2}\", {1}_);", Number, Name, Descriptor.Name, Descriptor.FieldType);
+ //if (Descriptor.IsPacked)
+ //{
+ // writer.WriteLine("output.WriteRawVarint32({0});", WireFormat.MakeTag(Descriptor));
+ // writer.WriteLine("output.WriteRawVarint32((uint) {0}MemoizedSerializedSize);", Name);
+ // writer.WriteLine("foreach ({0} element in {1}_) {{", TypeName, Name);
+ // writer.WriteLine(" output.Write{0}NoTag(element);", CapitalizedTypeName);
+ // writer.WriteLine("}");
+ //}
+ //else
+ //{
+ // writer.WriteLine("foreach ({0} element in {1}_) {{", TypeName, Name);
+ // writer.WriteLine(" output.Write{0}({1}, element);", CapitalizedTypeName, Number);
+ // writer.WriteLine("}");
+ //}
writer.Outdent();
writer.WriteLine("}");
}
|