diff options
author | Jon Skeet <skeet@pobox.com> | 2009-02-24 16:50:56 +0000 |
---|---|---|
committer | Jon Skeet <skeet@pobox.com> | 2009-02-24 16:50:56 +0000 |
commit | e81a9d7c87380028b72cd77d48e767705ee224b5 (patch) | |
tree | a4e0c00735509e67a8188dfc6934f418a49b3abf /src/ProtocolBuffers | |
parent | 25a28580a6f307cb8eb040367f5671e678e9896b (diff) | |
download | protobuf-e81a9d7c87380028b72cd77d48e767705ee224b5.tar.gz protobuf-e81a9d7c87380028b72cd77d48e767705ee224b5.tar.bz2 protobuf-e81a9d7c87380028b72cd77d48e767705ee224b5.zip |
Added ToBuilder and WeakToBuilder
Diffstat (limited to 'src/ProtocolBuffers')
-rw-r--r-- | src/ProtocolBuffers/AbstractMessage.cs | 5 | ||||
-rw-r--r-- | src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs | 2 | ||||
-rw-r--r-- | src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs | 18 | ||||
-rw-r--r-- | src/ProtocolBuffers/DynamicMessage.cs | 5 | ||||
-rw-r--r-- | src/ProtocolBuffers/FieldSet.cs | 3 | ||||
-rw-r--r-- | src/ProtocolBuffers/IMessage.cs | 15 |
6 files changed, 44 insertions, 4 deletions
diff --git a/src/ProtocolBuffers/AbstractMessage.cs b/src/ProtocolBuffers/AbstractMessage.cs index 0a69f294..11bb948e 100644 --- a/src/ProtocolBuffers/AbstractMessage.cs +++ b/src/ProtocolBuffers/AbstractMessage.cs @@ -58,12 +58,17 @@ namespace Google.ProtocolBuffers { public abstract UnknownFieldSet UnknownFields { get; } public abstract TMessage DefaultInstanceForType { get; } public abstract TBuilder CreateBuilderForType(); + public abstract TBuilder ToBuilder(); #endregion public IBuilder WeakCreateBuilderForType() { return CreateBuilderForType(); } + public IBuilder WeakToBuilder() { + return ToBuilder(); + } + public IMessage WeakDefaultInstanceForType { get { return DefaultInstanceForType; } } diff --git a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs index 09733c3b..be8a11db 100644 --- a/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs +++ b/src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs @@ -143,6 +143,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(CSharpFileOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -334,6 +335,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(CSharpFieldOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); diff --git a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs index 1fe7928c..927d4ae3 100644 --- a/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs +++ b/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs @@ -279,6 +279,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(FileDescriptorSet prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -631,6 +632,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(FileDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -1165,6 +1167,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(ExtensionRange prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -1478,6 +1481,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(DescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -2099,6 +2103,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(FieldDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -2541,6 +2546,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(EnumDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -2863,6 +2869,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(EnumValueDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -3167,6 +3174,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(ServiceDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -3504,6 +3512,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(MethodDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -3876,6 +3885,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(FileOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -4223,6 +4233,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(MessageOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -4528,6 +4539,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(FieldOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -4834,6 +4846,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(EnumOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -5059,6 +5072,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(EnumValueOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -5284,6 +5298,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(ServiceOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -5509,6 +5524,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(MethodOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -5766,6 +5782,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(NamePart prototype) { return (Builder) new Builder().MergeFrom(prototype); @@ -6045,6 +6062,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(UninterpretedOption prototype) { return (Builder) new Builder().MergeFrom(prototype); diff --git a/src/ProtocolBuffers/DynamicMessage.cs b/src/ProtocolBuffers/DynamicMessage.cs index b740013b..4b3a4060 100644 --- a/src/ProtocolBuffers/DynamicMessage.cs +++ b/src/ProtocolBuffers/DynamicMessage.cs @@ -74,7 +74,6 @@ namespace Google.ProtocolBuffers { Builder builder = CreateBuilder(type); Builder dynamicBuilder = builder.MergeFrom(input); return dynamicBuilder.BuildParsed(); - } /// <summary> @@ -247,6 +246,10 @@ namespace Google.ProtocolBuffers { return new Builder(type); } + public override Builder ToBuilder() { + return CreateBuilderForType().MergeFrom(this); + } + /// <summary> /// Verifies that the field is a field of this message. /// </summary> diff --git a/src/ProtocolBuffers/FieldSet.cs b/src/ProtocolBuffers/FieldSet.cs index 913dede2..39b2a696 100644 --- a/src/ProtocolBuffers/FieldSet.cs +++ b/src/ProtocolBuffers/FieldSet.cs @@ -326,8 +326,7 @@ namespace Google.ProtocolBuffers { } } else if (field.MappedType == MappedType.Message && existingValue != null) { IMessage existingMessage = (IMessage)existingValue; - IMessage merged = existingMessage.WeakCreateBuilderForType() - .WeakMergeFrom(existingMessage) + IMessage merged = existingMessage.WeakToBuilder() .WeakMergeFrom((IMessage) entry.Value) .WeakBuild(); this[field] = merged; diff --git a/src/ProtocolBuffers/IMessage.cs b/src/ProtocolBuffers/IMessage.cs index a29313fb..e87bb52c 100644 --- a/src/ProtocolBuffers/IMessage.cs +++ b/src/ProtocolBuffers/IMessage.cs @@ -168,11 +168,18 @@ namespace Google.ProtocolBuffers { /// <summary> /// Creates a builder for the type, but in a weakly typed manner. This - /// is typically implemented by strongly typed builders by just returning + /// is typically implemented by strongly typed messages by just returning /// the result of CreateBuilderForType. /// </summary> IBuilder WeakCreateBuilderForType(); + /// <summary> + /// Creates a builder with the same contents as this message. This + /// is typically implemented by strongly typed messages by just returning + /// the result of ToBuilder. + /// </summary> + IBuilder WeakToBuilder(); + IMessage WeakDefaultInstanceForType { get; } } @@ -198,6 +205,12 @@ namespace Google.ProtocolBuffers { /// Constructs a new builder for a message of the same type as this message. /// </summary> TBuilder CreateBuilderForType(); + /// <summary> + /// Creates a builder with the same contents as this current instance. + /// This is typically implemented by strongly typed messages by just + /// returning the result of ToBuilder(). + /// </summary> + TBuilder ToBuilder(); #endregion } } |