diff options
author | Jon Skeet <skeet@pobox.com> | 2008-08-14 20:35:28 +0100 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2008-08-14 20:35:28 +0100 |
commit | d6c9495797d202a19a93dee724c3c9fc0d6564c6 (patch) | |
tree | 287a54214295aee786c8be4f1295f2d52cd906d2 /csharp/ProtocolBuffers | |
parent | 19ed9c07821e39c5a33399b7cfc21ab1a4dc1f58 (diff) | |
download | protobuf-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.cs | 2 | ||||
-rw-r--r-- | csharp/ProtocolBuffers/ExtendableMessage.cs | 2 | ||||
-rw-r--r-- | csharp/ProtocolBuffers/FieldSet.cs | 7 | ||||
-rw-r--r-- | csharp/ProtocolBuffers/IBuilder.cs | 24 | ||||
-rw-r--r-- | csharp/ProtocolBuffers/RpcUtil.cs | 2 |
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<T>. /// 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); |