aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers
diff options
context:
space:
mode:
authorJon Skeet <skeet@pobox.com>2009-02-24 16:50:56 +0000
committerJon Skeet <skeet@pobox.com>2009-02-24 16:50:56 +0000
commite81a9d7c87380028b72cd77d48e767705ee224b5 (patch)
treea4e0c00735509e67a8188dfc6934f418a49b3abf /src/ProtocolBuffers
parent25a28580a6f307cb8eb040367f5671e678e9896b (diff)
downloadprotobuf-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.cs5
-rw-r--r--src/ProtocolBuffers/DescriptorProtos/CSharpOptions.cs2
-rw-r--r--src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs18
-rw-r--r--src/ProtocolBuffers/DynamicMessage.cs5
-rw-r--r--src/ProtocolBuffers/FieldSet.cs3
-rw-r--r--src/ProtocolBuffers/IMessage.cs15
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
}
}