aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers/AbstractMessage.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-06-03 12:58:14 -0500
committerrogerk <devnull@localhost>2011-06-03 12:58:14 -0500
commitffafdaa0f9a96d17d456c844a3e554512a5c121d (patch)
treeda8bb40d40228429fa4b846bc7ef29c06e717e82 /src/ProtocolBuffers/AbstractMessage.cs
parentcc8d2aaa3a0b6bed6677fd488bc7deecd90f5604 (diff)
downloadprotobuf-ffafdaa0f9a96d17d456c844a3e554512a5c121d.tar.gz
protobuf-ffafdaa0f9a96d17d456c844a3e554512a5c121d.tar.bz2
protobuf-ffafdaa0f9a96d17d456c844a3e554512a5c121d.zip
Fully converted over to ICodedOutputStream for all WriteTo derivations
Diffstat (limited to 'src/ProtocolBuffers/AbstractMessage.cs')
-rw-r--r--src/ProtocolBuffers/AbstractMessage.cs42
1 files changed, 22 insertions, 20 deletions
diff --git a/src/ProtocolBuffers/AbstractMessage.cs b/src/ProtocolBuffers/AbstractMessage.cs
index 1e1ac1da..038fc0c5 100644
--- a/src/ProtocolBuffers/AbstractMessage.cs
+++ b/src/ProtocolBuffers/AbstractMessage.cs
@@ -138,7 +138,7 @@ namespace Google.ProtocolBuffers
/// of the message before the data, then making sure you limit the input to
/// that size when receiving the data. Alternatively, use WriteDelimitedTo(Stream).
/// </remarks>
- public override void WriteTo(CodedOutputStream output)
+ public override void WriteTo(ICodedOutputStream output)
{
foreach (KeyValuePair<FieldDescriptor, object> entry in AllFields)
{
@@ -149,26 +149,28 @@ namespace Google.ProtocolBuffers
// IEnumerable is the best we can do. (C# generics aren't covariant yet.)
IEnumerable valueList = (IEnumerable) entry.Value;
if (field.IsPacked)
- {
- output.WriteTag(field.FieldNumber, WireFormat.WireType.LengthDelimited);
- int dataSize = 0;
- foreach (object element in valueList)
- {
- dataSize += CodedOutputStream.ComputeFieldSizeNoTag(field.FieldType, element);
- }
- output.WriteRawVarint32((uint) dataSize);
- foreach (object element in valueList)
- {
- output.WriteFieldNoTag(field.FieldType, element);
- }
- }
+ output.WritePackedArray(field.FieldType, field.FieldNumber, field.Name, valueList);
+ //{
+ // output.WriteTag(field.FieldNumber, WireFormat.WireType.LengthDelimited);
+ // int dataSize = 0;
+ // foreach (object element in valueList)
+ // {
+ // dataSize += CodedOutputStream.ComputeFieldSizeNoTag(field.FieldType, element);
+ // }
+ // output.WriteRawVarint32((uint) dataSize);
+ // foreach (object element in valueList)
+ // {
+ // output.WriteFieldNoTag(field.FieldType, element);
+ // }
+ //}
else
- {
- foreach (object element in valueList)
- {
- output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
- }
- }
+ output.WriteArray(field.FieldType, field.FieldNumber, field.Name, valueList);
+ //{
+ // foreach (object element in valueList)
+ // {
+ // output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
+ // }
+ //}
}
else
{