aboutsummaryrefslogtreecommitdiff
path: root/csharp/ProtocolBuffers
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2008-08-14 20:35:28 +0100
committerJon Skeet <skeet@pobox.com>2008-08-14 20:35:28 +0100
commitd6c9495797d202a19a93dee724c3c9fc0d6564c6 (patch)
tree287a54214295aee786c8be4f1295f2d52cd906d2 /csharp/ProtocolBuffers
parent19ed9c07821e39c5a33399b7cfc21ab1a4dc1f58 (diff)
downloadprotobuf-d6c9495797d202a19a93dee724c3c9fc0d6564c6.tar.gz
protobuf-d6c9495797d202a19a93dee724c3c9fc0d6564c6.tar.bz2
protobuf-d6c9495797d202a19a93dee724c3c9fc0d6564c6.zip
More tests, and a bug fix.
Diffstat (limited to 'csharp/ProtocolBuffers')
-rw-r--r--csharp/ProtocolBuffers/DynamicMessage.cs2
-rw-r--r--csharp/ProtocolBuffers/ExtendableMessage.cs2
-rw-r--r--csharp/ProtocolBuffers/FieldSet.cs7
-rw-r--r--csharp/ProtocolBuffers/IBuilder.cs24
-rw-r--r--csharp/ProtocolBuffers/RpcUtil.cs2
5 files changed, 19 insertions, 18 deletions
diff --git a/csharp/ProtocolBuffers/DynamicMessage.cs b/csharp/ProtocolBuffers/DynamicMessage.cs
index f0f4cde1..224b8dee 100644
--- a/csharp/ProtocolBuffers/DynamicMessage.cs
+++ b/csharp/ProtocolBuffers/DynamicMessage.cs
@@ -233,7 +233,7 @@ namespace Google.ProtocolBuffers {
internal Builder(MessageDescriptor type) {
this.type = type;
- this.fields = FieldSet.CreateFieldSet();
+ this.fields = FieldSet.CreateInstance();
this.unknownFields = UnknownFieldSet.DefaultInstance;
}
diff --git a/csharp/ProtocolBuffers/ExtendableMessage.cs b/csharp/ProtocolBuffers/ExtendableMessage.cs
index 60d0d583..84a69b53 100644
--- a/csharp/ProtocolBuffers/ExtendableMessage.cs
+++ b/csharp/ProtocolBuffers/ExtendableMessage.cs
@@ -10,7 +10,7 @@ namespace Google.ProtocolBuffers {
where TBuilder : GeneratedBuilder<TMessage, TBuilder> {
protected ExtendableMessage() {}
- private readonly FieldSet extensions = FieldSet.CreateFieldSet();
+ private readonly FieldSet extensions = FieldSet.CreateInstance();
/// <summary>
/// Access for the builder.
diff --git a/csharp/ProtocolBuffers/FieldSet.cs b/csharp/ProtocolBuffers/FieldSet.cs
index 79394ca4..6e563e7b 100644
--- a/csharp/ProtocolBuffers/FieldSet.cs
+++ b/csharp/ProtocolBuffers/FieldSet.cs
@@ -30,8 +30,9 @@ namespace Google.ProtocolBuffers {
this.fields = fields;
}
- public static FieldSet CreateFieldSet() {
- return new FieldSet(new Dictionary<FieldDescriptor, object>());
+ public static FieldSet CreateInstance() {
+ // Use SortedList to keep fields in the canonical order
+ return new FieldSet(new SortedList<FieldDescriptor, object>());
}
/// <summary>
@@ -507,7 +508,7 @@ namespace Google.ProtocolBuffers {
}
/// <summary>
- /// See <see cref="IBuilder.MergeFrom(IMessage)" />
+ /// See <see cref="IBuilder{TMessage, TBuilder}.MergeFrom(IMessage)" />
/// </summary>
public void MergeFrom(IMessage other) {
MergeFields(other.AllFields);
diff --git a/csharp/ProtocolBuffers/IBuilder.cs b/csharp/ProtocolBuffers/IBuilder.cs
index 52263feb..44990792 100644
--- a/csharp/ProtocolBuffers/IBuilder.cs
+++ b/csharp/ProtocolBuffers/IBuilder.cs
@@ -36,6 +36,18 @@ namespace Google.ProtocolBuffers {
bool IsInitialized { get; }
/// <summary>
+ /// Only present in the nongeneric interface - useful for tests, but
+ /// not as much in real life.
+ /// </summary>
+ IBuilder SetField(FieldDescriptor field, object value);
+
+ /// <summary>
+ /// Only present in the nongeneric interface - useful for tests, but
+ /// not as much in real life.
+ /// </summary>
+ IBuilder SetRepeatedField(FieldDescriptor field, int index, object value);
+
+ /// <summary>
/// Behaves like the equivalent property in IMessage&lt;T&gt;.
/// The returned map may or may not reflect future changes to the builder.
/// Either way, the returned map is unmodifiable.
@@ -57,18 +69,6 @@ namespace Google.ProtocolBuffers {
MessageDescriptor DescriptorForType { get; }
/// <summary>
- /// Only present in the nongeneric interface - useful for tests, but
- /// not as much in real life.
- /// </summary>
- IBuilder SetField(FieldDescriptor field, object value);
-
- /// <summary>
- /// Only present in the nongeneric interface - useful for tests, but
- /// not as much in real life.
- /// </summary>
- IBuilder SetRepeatedField(FieldDescriptor field, int index, object value);
-
- /// <summary>
/// <see cref="IMessage{TMessage, TBuilder}.GetRepeatedFieldCount"/>
/// </summary>
/// <param name="field"></param>
diff --git a/csharp/ProtocolBuffers/RpcUtil.cs b/csharp/ProtocolBuffers/RpcUtil.cs
index ebd3f47f..92675c02 100644
--- a/csharp/ProtocolBuffers/RpcUtil.cs
+++ b/csharp/ProtocolBuffers/RpcUtil.cs
@@ -26,7 +26,7 @@ namespace Google.ProtocolBuffers {
where TBuilder : IBuilder<TMessage, TBuilder> {
return message => {
TMessage castMessage = message as TMessage;
- if (castMessage == null) {
+ if (castMessage == null) {
castMessage = defaultInstance.CreateBuilderForType().MergeFrom(message).Build();
}
action(castMessage);