From f26f8dce0279b3cd0ee9708bfca322be5c19d4f7 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Thu, 14 Aug 2008 20:35:27 +0100 Subject: The great generics revisiting. --- csharp/ProtocolBuffers.Test/AbstractMessageTest.cs | 63 +- csharp/ProtocolBuffers.Test/DynamicMessageTest.cs | 10 +- csharp/ProtocolBuffers.Test/MessageTest.cs | 6 +- csharp/ProtocolBuffers.Test/ReflectionTester.cs | 132 +-- .../TestProtos/MessageWithNoOuter.cs | 20 +- .../TestProtos/MultiFileProto.cs | 4 +- .../TestProtos/ServiceWithNoOuter.cs | 2 +- .../UnitTestEmbedOptimizeForProtoFile.cs | 22 +- .../TestProtos/UnitTestImportProtoFile.cs | 22 +- .../TestProtos/UnitTestMessageSetProtoFile.cs | 140 ++-- .../TestProtos/UnitTestOptimizeForProtoFile.cs | 14 +- .../TestProtos/UnitTestProtoFile.cs | 930 ++++++++++----------- csharp/ProtocolBuffers/AbstractBuilder.cs | 162 ++-- csharp/ProtocolBuffers/AbstractMessage.cs | 28 +- csharp/ProtocolBuffers/CodedInputStream.cs | 4 +- .../DescriptorProtos/DescriptorProtoFile.cs | 330 ++++---- csharp/ProtocolBuffers/DynamicMessage.cs | 78 +- csharp/ProtocolBuffers/ExtendableBuilder.cs | 31 +- csharp/ProtocolBuffers/ExtendableMessage.cs | 14 +- csharp/ProtocolBuffers/ExtensionRegistry.cs | 3 +- .../FieldAccess/RepeatedMessageAccessor.cs | 2 +- .../FieldAccess/SingleMessageAccessor.cs | 2 +- csharp/ProtocolBuffers/FieldSet.cs | 28 +- csharp/ProtocolBuffers/GeneratedBuilder.cs | 112 +-- csharp/ProtocolBuffers/GeneratedExtensionBase.cs | 6 +- csharp/ProtocolBuffers/GeneratedMessage.cs | 16 +- csharp/ProtocolBuffers/GeneratedRepeatException.cs | 6 +- csharp/ProtocolBuffers/GeneratedSingleExtension.cs | 8 +- csharp/ProtocolBuffers/IBuilder.cs | 115 +-- csharp/ProtocolBuffers/IMessage.cs | 40 +- .../InvalidProtocolBufferException.cs | 4 +- csharp/ProtocolBuffers/RpcUtil.cs | 9 +- csharp/ProtocolBuffers/TextFormat.cs | 1 + 33 files changed, 1155 insertions(+), 1209 deletions(-) (limited to 'csharp') diff --git a/csharp/ProtocolBuffers.Test/AbstractMessageTest.cs b/csharp/ProtocolBuffers.Test/AbstractMessageTest.cs index d1af0dca..4178c92e 100644 --- a/csharp/ProtocolBuffers.Test/AbstractMessageTest.cs +++ b/csharp/ProtocolBuffers.Test/AbstractMessageTest.cs @@ -10,15 +10,13 @@ namespace Google.ProtocolBuffers { [Test] public void Clear() { - AbstractMessageWrapper message = (AbstractMessageWrapper) - new AbstractMessageWrapper.Builder(TestAllTypes.CreateBuilder(TestUtil.GetAllSet())).Clear().Build(); + AbstractMessageWrapper message = new AbstractMessageWrapper.Builder(TestAllTypes.CreateBuilder(TestUtil.GetAllSet())).Clear().Build(); TestUtil.AssertClear((TestAllTypes) message.WrappedMessage); } [Test] public void Copy() { - AbstractMessageWrapper message = (AbstractMessageWrapper) - new AbstractMessageWrapper.Builder(TestAllTypes.CreateBuilder()).MergeFrom(TestUtil.GetAllSet()).Build(); + AbstractMessageWrapper message = new AbstractMessageWrapper.Builder(TestAllTypes.CreateBuilder()).MergeFrom(TestUtil.GetAllSet()).Build(); TestUtil.AssertAllFieldsSet((TestAllTypes) message.WrappedMessage); } @@ -40,7 +38,7 @@ namespace Google.ProtocolBuffers { [Test] public void Parsing() { IBuilder builder = new AbstractMessageWrapper.Builder(TestAllTypes.CreateBuilder()); - AbstractMessageWrapper message = (AbstractMessageWrapper) builder.MergeFrom(TestUtil.GetAllSet().ToByteString()).Build(); + AbstractMessageWrapper message = (AbstractMessageWrapper) builder.WeakMergeFrom(TestUtil.GetAllSet().ToByteString()).WeakBuild(); TestUtil.AssertAllFieldsSet((TestAllTypes) message.WrappedMessage); } @@ -177,7 +175,7 @@ namespace Google.ProtocolBuffers { Assert.AreEqual(message, message); // Object should be equal to a dynamic copy of itself. - DynamicMessage dynamic = (DynamicMessage) ((IBuilder) DynamicMessage.CreateBuilder(message)).Build(); + DynamicMessage dynamic = DynamicMessage.CreateBuilder(message).Build(); Assert.AreEqual(message, dynamic); Assert.AreEqual(dynamic, message); Assert.AreEqual(dynamic.GetHashCode(), message.GetHashCode()); @@ -207,7 +205,7 @@ namespace Google.ProtocolBuffers { /// test that AbstractMessage's implementations work even if the wrapped /// object does not use them. /// - private class AbstractMessageWrapper : AbstractMessage { + private class AbstractMessageWrapper : AbstractMessage { private readonly IMessage wrappedMessage; public IMessage WrappedMessage { @@ -222,8 +220,8 @@ namespace Google.ProtocolBuffers { get { return wrappedMessage.DescriptorForType; } } - protected override IMessage DefaultInstanceForTypeImpl { - get { return new AbstractMessageWrapper(wrappedMessage.DefaultInstanceForType); } + public override AbstractMessageWrapper DefaultInstanceForType { + get { return new AbstractMessageWrapper(wrappedMessage.WeakDefaultInstanceForType); } } public override IDictionary AllFields { @@ -250,17 +248,26 @@ namespace Google.ProtocolBuffers { get { return wrappedMessage.UnknownFields; } } - protected override IBuilder CreateBuilderForTypeImpl() { - return new Builder(wrappedMessage.CreateBuilderForType()); + public override Builder CreateBuilderForType() { + return new Builder(wrappedMessage.WeakCreateBuilderForType()); } - internal class Builder : AbstractBuilder { + internal class Builder : AbstractBuilder { private readonly IBuilder wrappedBuilder; + protected override Builder ThisBuilder { + get { return this; } + } + internal Builder(IBuilder wrappedBuilder) { this.wrappedBuilder = wrappedBuilder; } + public override Builder MergeFrom(AbstractMessageWrapper other) { + wrappedBuilder.WeakMergeFrom(other.wrappedMessage); + return this; + } + public override bool IsInitialized { get { return wrappedBuilder.IsInitialized; } } @@ -296,29 +303,29 @@ namespace Google.ProtocolBuffers { set { wrappedBuilder.UnknownFields = value; } } - protected override IMessage BuildImpl() { - return new AbstractMessageWrapper(wrappedBuilder.Build()); + public override AbstractMessageWrapper Build() { + return new AbstractMessageWrapper(wrappedBuilder.WeakBuild()); } - protected override IMessage BuildPartialImpl() { - return new AbstractMessageWrapper(wrappedBuilder.BuildPartial()); + public override AbstractMessageWrapper BuildPartial() { + return new AbstractMessageWrapper(wrappedBuilder.WeakBuildPartial()); } - protected override IBuilder CloneImpl() { - return new Builder(wrappedBuilder.Clone()); + public override Builder Clone() { + return new Builder(wrappedBuilder.WeakClone()); } - protected override IMessage DefaultInstanceForTypeImpl { - get { return wrappedBuilder.DefaultInstanceForType; } + public override AbstractMessageWrapper DefaultInstanceForType { + get { return new AbstractMessageWrapper(wrappedBuilder.WeakDefaultInstanceForType); } } - protected override IBuilder ClearFieldImpl(FieldDescriptor field) { - wrappedBuilder.ClearField(field); + public override Builder ClearField(FieldDescriptor field) { + wrappedBuilder.WeakClearField(field); return this; } - protected override IBuilder AddRepeatedFieldImpl(FieldDescriptor field, object value) { - wrappedBuilder.AddRepeatedField(field, value); + public override Builder AddRepeatedField(FieldDescriptor field, object value) { + wrappedBuilder.WeakAddRepeatedField(field, value); return this; } @@ -327,13 +334,13 @@ namespace Google.ProtocolBuffers { return this; } - public override IBuilder MergeFrom(IMessage other) { - wrappedBuilder.MergeFrom(other); + public override Builder MergeFrom(IMessage other) { + wrappedBuilder.WeakMergeFrom(other); return this; } - protected override IBuilder MergeFromImpl(CodedInputStream input, ExtensionRegistry extensionRegistry) { - wrappedBuilder.MergeFrom(input, extensionRegistry); + public override Builder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry) { + wrappedBuilder.WeakMergeFrom(input, extensionRegistry); return this; } } diff --git a/csharp/ProtocolBuffers.Test/DynamicMessageTest.cs b/csharp/ProtocolBuffers.Test/DynamicMessageTest.cs index dcf6e0fb..5f9f6bee 100644 --- a/csharp/ProtocolBuffers.Test/DynamicMessageTest.cs +++ b/csharp/ProtocolBuffers.Test/DynamicMessageTest.cs @@ -21,7 +21,7 @@ namespace Google.ProtocolBuffers { public void DynamicMessageAccessors() { IBuilder builder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); reflectionTester.SetAllFieldsViaReflection(builder); - IMessage message = builder.Build(); + IMessage message = builder.WeakBuild(); reflectionTester.AssertAllFieldsSetViaReflection(message); } @@ -32,7 +32,7 @@ namespace Google.ProtocolBuffers { // It treats them just like any other fields. IBuilder builder = DynamicMessage.CreateBuilder(TestAllExtensions.Descriptor); extensionsReflectionTester.SetAllFieldsViaReflection(builder); - IMessage message = builder.Build(); + IMessage message = builder.WeakBuild(); extensionsReflectionTester.AssertAllFieldsSetViaReflection(message); } @@ -41,7 +41,7 @@ namespace Google.ProtocolBuffers { IBuilder builder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); reflectionTester.SetAllFieldsViaReflection(builder); reflectionTester.ModifyRepeatedFieldsViaReflection(builder); - IMessage message = builder.Build(); + IMessage message = builder.WeakBuild(); reflectionTester.AssertRepeatedFieldsModifiedViaReflection(message); } @@ -57,7 +57,7 @@ namespace Google.ProtocolBuffers { IBuilder dynamicBuilder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); reflectionTester.SetAllFieldsViaReflection(dynamicBuilder); - IMessage dynamicMessage = dynamicBuilder.Build(); + IMessage dynamicMessage = dynamicBuilder.WeakBuild(); Assert.AreEqual(message.SerializedSize, dynamicMessage.SerializedSize); } @@ -66,7 +66,7 @@ namespace Google.ProtocolBuffers { public void DynamicMessageSerialization() { IBuilder builder = DynamicMessage.CreateBuilder(TestAllTypes.Descriptor); reflectionTester.SetAllFieldsViaReflection(builder); - IMessage message = builder.Build(); + IMessage message = builder.WeakBuild(); ByteString rawBytes = message.ToByteString(); TestAllTypes message2 = TestAllTypes.ParseFrom(rawBytes); diff --git a/csharp/ProtocolBuffers.Test/MessageTest.cs b/csharp/ProtocolBuffers.Test/MessageTest.cs index 60aa3d17..04bea0a5 100644 --- a/csharp/ProtocolBuffers.Test/MessageTest.cs +++ b/csharp/ProtocolBuffers.Test/MessageTest.cs @@ -153,8 +153,7 @@ namespace Google.ProtocolBuffers { builder[descriptor.FindDescriptor("optional_message")] = TestRequiredInitialized; Assert.IsTrue(builder.IsInitialized); - // TODO(jonskeet): Remove this nastiness by making IBuilder always generic. - ((IBuilder) builder).AddRepeatedField(descriptor.FindDescriptor("repeated_message"), TestRequiredUninitialized); + builder.AddRepeatedField(descriptor.FindDescriptor("repeated_message"), TestRequiredUninitialized); Assert.IsFalse(builder.IsInitialized); builder.SetRepeatedField(descriptor.FindDescriptor("repeated_message"), 0, TestRequiredInitialized); @@ -266,8 +265,7 @@ namespace Google.ProtocolBuffers { [Test] public void DynamicBuildPartial() { // We're mostly testing that no exception is thrown. - // TODO(jonskeet): Fix this ghastly casting mess - DynamicMessage message = (DynamicMessage) ((IBuilder) DynamicMessage.CreateBuilder(TestRequired.Descriptor)).BuildPartial(); + DynamicMessage message = DynamicMessage.CreateBuilder(TestRequired.Descriptor).BuildPartial(); Assert.IsFalse(message.Initialized); } diff --git a/csharp/ProtocolBuffers.Test/ReflectionTester.cs b/csharp/ProtocolBuffers.Test/ReflectionTester.cs index 3c57c653..67c26106 100644 --- a/csharp/ProtocolBuffers.Test/ReflectionTester.cs +++ b/csharp/ProtocolBuffers.Test/ReflectionTester.cs @@ -170,7 +170,7 @@ namespace Google.ProtocolBuffers { ExtensionInfo extension = extensionRegistry[field.ContainingType, field.FieldNumber]; Assert.IsNotNull(extension); Assert.IsNotNull(extension.DefaultInstance); - return extension.DefaultInstance.CreateBuilderForType(); + return extension.DefaultInstance.WeakCreateBuilderForType(); } } @@ -196,10 +196,10 @@ namespace Google.ProtocolBuffers { message[f("optional_string" )] = "115"; message[f("optional_bytes")] = TestUtil.ToBytes("116"); - message[f("optionalgroup")] = CreateBuilderForField(message, f("optionalgroup")).SetField(groupA, 117).Build(); - message[f("optional_nested_message")] = CreateBuilderForField(message, f("optional_nested_message")).SetField(nestedB, 118).Build(); - message[f("optional_foreign_message")] = CreateBuilderForField(message, f("optional_foreign_message")).SetField(foreignC, 119).Build(); - message[f("optional_import_message")] = CreateBuilderForField(message, f("optional_import_message")).SetField(importD, 120).Build(); + message[f("optionalgroup")] = CreateBuilderForField(message, f("optionalgroup")).SetField(groupA, 117).WeakBuild(); + message[f("optional_nested_message")] = CreateBuilderForField(message, f("optional_nested_message")).SetField(nestedB, 118).WeakBuild(); + message[f("optional_foreign_message")] = CreateBuilderForField(message, f("optional_foreign_message")).SetField(foreignC, 119).WeakBuild(); + message[f("optional_import_message")] = CreateBuilderForField(message, f("optional_import_message")).SetField(importD, 120).WeakBuild(); message[f("optional_nested_enum" )] = nestedBaz; message[f("optional_foreign_enum")] = foreignBaz; @@ -210,71 +210,71 @@ namespace Google.ProtocolBuffers { // ----------------------------------------------------------------- - message.AddRepeatedField(f("repeated_int32" ), 201 ); - message.AddRepeatedField(f("repeated_int64" ), 202L); - message.AddRepeatedField(f("repeated_uint32" ), 203U ); - message.AddRepeatedField(f("repeated_uint64" ), 204UL); - message.AddRepeatedField(f("repeated_sint32" ), 205 ); - message.AddRepeatedField(f("repeated_sint64" ), 206L); - message.AddRepeatedField(f("repeated_fixed32" ), 207U ); - message.AddRepeatedField(f("repeated_fixed64" ), 208UL); - message.AddRepeatedField(f("repeated_sfixed32"), 209 ); - message.AddRepeatedField(f("repeated_sfixed64"), 210L); - message.AddRepeatedField(f("repeated_float" ), 211F); - message.AddRepeatedField(f("repeated_double" ), 212D); - message.AddRepeatedField(f("repeated_bool" ), true); - message.AddRepeatedField(f("repeated_string" ), "215"); - message.AddRepeatedField(f("repeated_bytes" ), TestUtil.ToBytes("216")); - - - message.AddRepeatedField(f("repeatedgroup"), CreateBuilderForField(message, f("repeatedgroup")).SetField(repeatedGroupA, 217).Build()); - message.AddRepeatedField(f("repeated_nested_message"), CreateBuilderForField(message, f("repeated_nested_message")).SetField(nestedB, 218).Build()); - message.AddRepeatedField(f("repeated_foreign_message"), CreateBuilderForField(message, f("repeated_foreign_message")).SetField(foreignC, 219).Build()); - message.AddRepeatedField(f("repeated_import_message"), CreateBuilderForField(message, f("repeated_import_message")).SetField(importD, 220).Build()); - - message.AddRepeatedField(f("repeated_nested_enum" ), nestedBar); - message.AddRepeatedField(f("repeated_foreign_enum"), foreignBar); - message.AddRepeatedField(f("repeated_import_enum" ), importBar); - - message.AddRepeatedField(f("repeated_string_piece" ), "224"); - message.AddRepeatedField(f("repeated_cord" ), "225"); + message.WeakAddRepeatedField(f("repeated_int32" ), 201 ); + message.WeakAddRepeatedField(f("repeated_int64" ), 202L); + message.WeakAddRepeatedField(f("repeated_uint32" ), 203U ); + message.WeakAddRepeatedField(f("repeated_uint64" ), 204UL); + message.WeakAddRepeatedField(f("repeated_sint32" ), 205 ); + message.WeakAddRepeatedField(f("repeated_sint64" ), 206L); + message.WeakAddRepeatedField(f("repeated_fixed32" ), 207U ); + message.WeakAddRepeatedField(f("repeated_fixed64" ), 208UL); + message.WeakAddRepeatedField(f("repeated_sfixed32"), 209 ); + message.WeakAddRepeatedField(f("repeated_sfixed64"), 210L); + message.WeakAddRepeatedField(f("repeated_float" ), 211F); + message.WeakAddRepeatedField(f("repeated_double" ), 212D); + message.WeakAddRepeatedField(f("repeated_bool" ), true); + message.WeakAddRepeatedField(f("repeated_string" ), "215"); + message.WeakAddRepeatedField(f("repeated_bytes" ), TestUtil.ToBytes("216")); + + + message.WeakAddRepeatedField(f("repeatedgroup"), CreateBuilderForField(message, f("repeatedgroup")).SetField(repeatedGroupA, 217).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_nested_message"), CreateBuilderForField(message, f("repeated_nested_message")).SetField(nestedB, 218).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_foreign_message"), CreateBuilderForField(message, f("repeated_foreign_message")).SetField(foreignC, 219).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_import_message"), CreateBuilderForField(message, f("repeated_import_message")).SetField(importD, 220).WeakBuild()); + + message.WeakAddRepeatedField(f("repeated_nested_enum" ), nestedBar); + message.WeakAddRepeatedField(f("repeated_foreign_enum"), foreignBar); + message.WeakAddRepeatedField(f("repeated_import_enum" ), importBar); + + message.WeakAddRepeatedField(f("repeated_string_piece" ), "224"); + message.WeakAddRepeatedField(f("repeated_cord" ), "225"); // Add a second one of each field. - message.AddRepeatedField(f("repeated_int32" ), 301 ); - message.AddRepeatedField(f("repeated_int64" ), 302L); - message.AddRepeatedField(f("repeated_uint32" ), 303U ); - message.AddRepeatedField(f("repeated_uint64" ), 304UL); - message.AddRepeatedField(f("repeated_sint32" ), 305 ); - message.AddRepeatedField(f("repeated_sint64" ), 306L); - message.AddRepeatedField(f("repeated_fixed32" ), 307U ); - message.AddRepeatedField(f("repeated_fixed64" ), 308UL); - message.AddRepeatedField(f("repeated_sfixed32"), 309 ); - message.AddRepeatedField(f("repeated_sfixed64"), 310L); - message.AddRepeatedField(f("repeated_float" ), 311F); - message.AddRepeatedField(f("repeated_double" ), 312D); - message.AddRepeatedField(f("repeated_bool" ), false); - message.AddRepeatedField(f("repeated_string" ), "315"); - message.AddRepeatedField(f("repeated_bytes" ), TestUtil.ToBytes("316")); - - message.AddRepeatedField(f("repeatedgroup"), + message.WeakAddRepeatedField(f("repeated_int32" ), 301 ); + message.WeakAddRepeatedField(f("repeated_int64" ), 302L); + message.WeakAddRepeatedField(f("repeated_uint32" ), 303U ); + message.WeakAddRepeatedField(f("repeated_uint64" ), 304UL); + message.WeakAddRepeatedField(f("repeated_sint32" ), 305 ); + message.WeakAddRepeatedField(f("repeated_sint64" ), 306L); + message.WeakAddRepeatedField(f("repeated_fixed32" ), 307U ); + message.WeakAddRepeatedField(f("repeated_fixed64" ), 308UL); + message.WeakAddRepeatedField(f("repeated_sfixed32"), 309 ); + message.WeakAddRepeatedField(f("repeated_sfixed64"), 310L); + message.WeakAddRepeatedField(f("repeated_float" ), 311F); + message.WeakAddRepeatedField(f("repeated_double" ), 312D); + message.WeakAddRepeatedField(f("repeated_bool" ), false); + message.WeakAddRepeatedField(f("repeated_string" ), "315"); + message.WeakAddRepeatedField(f("repeated_bytes" ), TestUtil.ToBytes("316")); + + message.WeakAddRepeatedField(f("repeatedgroup"), CreateBuilderForField(message, f("repeatedgroup")) - .SetField(repeatedGroupA, 317).Build()); - message.AddRepeatedField(f("repeated_nested_message"), + .SetField(repeatedGroupA, 317).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_nested_message"), CreateBuilderForField(message, f("repeated_nested_message")) - .SetField(nestedB, 318).Build()); - message.AddRepeatedField(f("repeated_foreign_message"), + .SetField(nestedB, 318).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_foreign_message"), CreateBuilderForField(message, f("repeated_foreign_message")) - .SetField(foreignC, 319).Build()); - message.AddRepeatedField(f("repeated_import_message"), + .SetField(foreignC, 319).WeakBuild()); + message.WeakAddRepeatedField(f("repeated_import_message"), CreateBuilderForField(message, f("repeated_import_message")) - .SetField(importD, 320).Build()); + .SetField(importD, 320).WeakBuild()); - message.AddRepeatedField(f("repeated_nested_enum" ), nestedBaz); - message.AddRepeatedField(f("repeated_foreign_enum"), foreignBaz); - message.AddRepeatedField(f("repeated_import_enum" ), importBaz); + message.WeakAddRepeatedField(f("repeated_nested_enum" ), nestedBaz); + message.WeakAddRepeatedField(f("repeated_foreign_enum"), foreignBaz); + message.WeakAddRepeatedField(f("repeated_import_enum" ), importBaz); - message.AddRepeatedField(f("repeated_string_piece" ), "324"); - message.AddRepeatedField(f("repeated_cord" ), "325"); + message.WeakAddRepeatedField(f("repeated_string_piece" ), "324"); + message.WeakAddRepeatedField(f("repeated_cord" ), "325"); // ----------------------------------------------------------------- @@ -326,10 +326,10 @@ namespace Google.ProtocolBuffers { message[f("repeated_string" ), 1] = "515"; message.SetRepeatedField(f("repeated_bytes" ), 1, TestUtil.ToBytes("516")); - message.SetRepeatedField(f("repeatedgroup"), 1, CreateBuilderForField(message, f("repeatedgroup")).SetField(repeatedGroupA, 517).Build()); - message.SetRepeatedField(f("repeated_nested_message"), 1, CreateBuilderForField(message, f("repeated_nested_message")).SetField(nestedB, 518).Build()); - message.SetRepeatedField(f("repeated_foreign_message"), 1, CreateBuilderForField(message, f("repeated_foreign_message")).SetField(foreignC, 519).Build()); - message.SetRepeatedField(f("repeated_import_message"), 1, CreateBuilderForField(message, f("repeated_import_message")).SetField(importD, 520).Build()); + message.SetRepeatedField(f("repeatedgroup"), 1, CreateBuilderForField(message, f("repeatedgroup")).SetField(repeatedGroupA, 517).WeakBuild()); + message.SetRepeatedField(f("repeated_nested_message"), 1, CreateBuilderForField(message, f("repeated_nested_message")).SetField(nestedB, 518).WeakBuild()); + message.SetRepeatedField(f("repeated_foreign_message"), 1, CreateBuilderForField(message, f("repeated_foreign_message")).SetField(foreignC, 519).WeakBuild()); + message.SetRepeatedField(f("repeated_import_message"), 1, CreateBuilderForField(message, f("repeated_import_message")).SetField(importD, 520).WeakBuild()); message[f("repeated_nested_enum" ), 1] = nestedFoo; message[f("repeated_foreign_enum"), 1] = foreignFoo; diff --git a/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs b/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs index 860b7a03..6c5ec24f 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs @@ -95,12 +95,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::MessageWithNoOuter.Types.NestedMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::MessageWithNoOuter.Types.NestedMessage.CreateBuilder() internal Builder() {} @@ -110,12 +114,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::MessageWithNoOuter.Types.NestedMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -231,12 +235,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::MessageWithNoOuter prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::MessageWithNoOuter.CreateBuilder() internal Builder() {} @@ -246,12 +254,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::MessageWithNoOuter(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs b/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs index 05a99876..a96aae0d 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs @@ -59,8 +59,8 @@ namespace Google.ProtocolBuffers.TestProtos { #endregion #region Extensions - public static readonly pb::GeneratedExtensionBase ExtensionWithOuter = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase ExtensionWithOuter = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); #endregion #region Static variables diff --git a/csharp/ProtocolBuffers.Test/TestProtos/ServiceWithNoOuter.cs b/csharp/ProtocolBuffers.Test/TestProtos/ServiceWithNoOuter.cs index 61dfcc3c..8b5d97ee 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/ServiceWithNoOuter.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/ServiceWithNoOuter.cs @@ -95,7 +95,7 @@ namespace Google.ProtocolBuffers.TestProtos { controller, request, self::TestAllTypes.DefaultInstance, - pb::RpcUtil.GeneralizeCallback(done, self::TestAllTypes.DefaultInstance)); + pb::RpcUtil.GeneralizeCallback(done, self::TestAllTypes.DefaultInstance)); } } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs index b96c7c9e..d9459e29 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs @@ -174,12 +174,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestEmbedOptimizedForSize prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestEmbedOptimizedForSize.CreateBuilder() internal Builder() {} @@ -189,12 +193,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestEmbedOptimizedForSize(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -215,11 +219,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestEmbedOptimizedForSize) { return MergeFrom((self::TestEmbedOptimizedForSize) other); } else { @@ -228,7 +228,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestEmbedOptimizedForSize other) { + public override Builder MergeFrom(self::TestEmbedOptimizedForSize other) { if (other == self::TestEmbedOptimizedForSize.DefaultInstance) return this; if (other.HasOptionalMessage) { MergeOptionalMessage(other.OptionalMessage); @@ -243,11 +243,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs index d798070c..5d5a546b 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs @@ -150,12 +150,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::ImportMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::ImportMessage.CreateBuilder() internal Builder() {} @@ -165,12 +169,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::ImportMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -188,11 +192,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::ImportMessage) { return MergeFrom((self::ImportMessage) other); } else { @@ -201,7 +201,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::ImportMessage other) { + public override Builder MergeFrom(self::ImportMessage other) { if (other == self::ImportMessage.DefaultInstance) return this; if (other.HasD) { D = other.D; @@ -210,11 +210,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs index dc2c62b1..8599f65b 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs @@ -188,12 +188,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMessageSet prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::ExtendableBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMessageSet.CreateBuilder() internal Builder() {} @@ -203,12 +207,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMessageSet(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -226,11 +230,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMessageSet) { return MergeFrom((self::TestMessageSet) other); } else { @@ -239,17 +239,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMessageSet other) { + public override Builder MergeFrom(self::TestMessageSet other) { if (other == self::TestMessageSet.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -368,12 +368,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMessageSetContainer prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMessageSetContainer.CreateBuilder() internal Builder() {} @@ -383,12 +387,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMessageSetContainer(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -406,11 +410,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMessageSetContainer) { return MergeFrom((self::TestMessageSetContainer) other); } else { @@ -419,7 +419,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMessageSetContainer other) { + public override Builder MergeFrom(self::TestMessageSetContainer other) { if (other == self::TestMessageSetContainer.DefaultInstance) return this; if (other.HasMessageSet) { MergeMessageSet(other.MessageSet); @@ -428,11 +428,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -520,8 +520,8 @@ namespace Google.ProtocolBuffers.TestProtos { #region Nested types public static class Types { - public static readonly pb::GeneratedExtensionBase MessageSetExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase MessageSetExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); } #endregion @@ -599,12 +599,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMessageSetExtension1 prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMessageSetExtension1.CreateBuilder() internal Builder() {} @@ -614,12 +618,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMessageSetExtension1(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -637,11 +641,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMessageSetExtension1) { return MergeFrom((self::TestMessageSetExtension1) other); } else { @@ -650,7 +650,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMessageSetExtension1 other) { + public override Builder MergeFrom(self::TestMessageSetExtension1 other) { if (other == self::TestMessageSetExtension1.DefaultInstance) return this; if (other.HasI) { I = other.I; @@ -659,11 +659,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -730,8 +730,8 @@ namespace Google.ProtocolBuffers.TestProtos { #region Nested types public static class Types { - public static readonly pb::GeneratedExtensionBase MessageSetExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase MessageSetExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); } #endregion @@ -809,12 +809,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMessageSetExtension2 prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMessageSetExtension2.CreateBuilder() internal Builder() {} @@ -824,12 +828,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMessageSetExtension2(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -847,11 +851,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMessageSetExtension2) { return MergeFrom((self::TestMessageSetExtension2) other); } else { @@ -860,7 +860,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMessageSetExtension2 other) { + public override Builder MergeFrom(self::TestMessageSetExtension2 other) { if (other == self::TestMessageSetExtension2.DefaultInstance) return this; if (other.HasStr) { Str = other.Str; @@ -869,11 +869,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1050,12 +1050,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::RawMessageSet.Types.Item prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::RawMessageSet.Types.Item.CreateBuilder() internal Builder() {} @@ -1065,12 +1069,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::RawMessageSet.Types.Item(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1088,11 +1092,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::RawMessageSet.Types.Item) { return MergeFrom((self::RawMessageSet.Types.Item) other); } else { @@ -1101,7 +1101,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::RawMessageSet.Types.Item other) { + public override Builder MergeFrom(self::RawMessageSet.Types.Item other) { if (other == self::RawMessageSet.Types.Item.DefaultInstance) return this; if (other.HasTypeId) { TypeId = other.TypeId; @@ -1113,11 +1113,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1269,12 +1269,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::RawMessageSet prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::RawMessageSet.CreateBuilder() internal Builder() {} @@ -1284,12 +1288,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::RawMessageSet(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1310,11 +1314,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::RawMessageSet) { return MergeFrom((self::RawMessageSet) other); } else { @@ -1323,7 +1323,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::RawMessageSet other) { + public override Builder MergeFrom(self::RawMessageSet other) { if (other == self::RawMessageSet.DefaultInstance) return this; if (other.item_.Count != 0) { if (result.item_.Count == 0) { @@ -1335,11 +1335,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs index fd647c1a..b38a26b1 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs @@ -77,8 +77,8 @@ namespace Google.ProtocolBuffers.TestProtos { #region Nested types public static class Types { - public static readonly pb::GeneratedExtensionBase TestExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase TestExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); } #endregion @@ -137,12 +137,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestOptimizedForSize prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::ExtendableBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestOptimizedForSize.CreateBuilder() internal Builder() {} @@ -152,12 +156,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestOptimizedForSize(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs index bf6a3543..4c7dd75d 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs @@ -632,170 +632,170 @@ namespace Google.ProtocolBuffers.TestProtos { #endregion #region Extensions - public static readonly pb::GeneratedExtensionBase OptionalInt32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); - public static readonly pb::GeneratedExtensionBase OptionalInt64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[1]); - public static readonly pb::GeneratedExtensionBase OptionalUint32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[2]); - public static readonly pb::GeneratedExtensionBase OptionalUint64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[3]); - public static readonly pb::GeneratedExtensionBase OptionalSint32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[4]); - public static readonly pb::GeneratedExtensionBase OptionalSint64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[5]); - public static readonly pb::GeneratedExtensionBase OptionalFixed32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[6]); - public static readonly pb::GeneratedExtensionBase OptionalFixed64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[7]); - public static readonly pb::GeneratedExtensionBase OptionalSfixed32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[8]); - public static readonly pb::GeneratedExtensionBase OptionalSfixed64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[9]); - public static readonly pb::GeneratedExtensionBase OptionalFloatExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[10]); - public static readonly pb::GeneratedExtensionBase OptionalDoubleExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[11]); - public static readonly pb::GeneratedExtensionBase OptionalBoolExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[12]); - public static readonly pb::GeneratedExtensionBase OptionalStringExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[13]); - public static readonly pb::GeneratedExtensionBase OptionalBytesExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[14]); - public static readonly pb::GeneratedExtensionBase OptionalGroupExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[15]); - public static readonly pb::GeneratedExtensionBase OptionalNestedMessageExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[16]); - public static readonly pb::GeneratedExtensionBase OptionalForeignMessageExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[17]); - public static readonly pb::GeneratedExtensionBase OptionalImportMessageExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[18]); - public static readonly pb::GeneratedExtensionBase OptionalNestedEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[19]); - public static readonly pb::GeneratedExtensionBase OptionalForeignEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[20]); - public static readonly pb::GeneratedExtensionBase OptionalImportEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[21]); - public static readonly pb::GeneratedExtensionBase OptionalStringPieceExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[22]); - public static readonly pb::GeneratedExtensionBase OptionalCordExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[23]); + public static readonly pb::GeneratedExtensionBase OptionalInt32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase OptionalInt64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[1]); + public static readonly pb::GeneratedExtensionBase OptionalUint32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[2]); + public static readonly pb::GeneratedExtensionBase OptionalUint64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[3]); + public static readonly pb::GeneratedExtensionBase OptionalSint32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[4]); + public static readonly pb::GeneratedExtensionBase OptionalSint64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[5]); + public static readonly pb::GeneratedExtensionBase OptionalFixed32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[6]); + public static readonly pb::GeneratedExtensionBase OptionalFixed64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[7]); + public static readonly pb::GeneratedExtensionBase OptionalSfixed32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[8]); + public static readonly pb::GeneratedExtensionBase OptionalSfixed64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[9]); + public static readonly pb::GeneratedExtensionBase OptionalFloatExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[10]); + public static readonly pb::GeneratedExtensionBase OptionalDoubleExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[11]); + public static readonly pb::GeneratedExtensionBase OptionalBoolExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[12]); + public static readonly pb::GeneratedExtensionBase OptionalStringExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[13]); + public static readonly pb::GeneratedExtensionBase OptionalBytesExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[14]); + public static readonly pb::GeneratedExtensionBase OptionalGroupExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[15]); + public static readonly pb::GeneratedExtensionBase OptionalNestedMessageExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[16]); + public static readonly pb::GeneratedExtensionBase OptionalForeignMessageExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[17]); + public static readonly pb::GeneratedExtensionBase OptionalImportMessageExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[18]); + public static readonly pb::GeneratedExtensionBase OptionalNestedEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[19]); + public static readonly pb::GeneratedExtensionBase OptionalForeignEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[20]); + public static readonly pb::GeneratedExtensionBase OptionalImportEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[21]); + public static readonly pb::GeneratedExtensionBase OptionalStringPieceExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[22]); + public static readonly pb::GeneratedExtensionBase OptionalCordExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[23]); public static readonly - pb::GeneratedExtensionBase> RepeatedInt32Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[24]); + pb::GeneratedExtensionBase> RepeatedInt32Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[24]); public static readonly - pb::GeneratedExtensionBase> RepeatedInt64Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[25]); + pb::GeneratedExtensionBase> RepeatedInt64Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[25]); public static readonly - pb::GeneratedExtensionBase> RepeatedUint32Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[26]); + pb::GeneratedExtensionBase> RepeatedUint32Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[26]); public static readonly - pb::GeneratedExtensionBase> RepeatedUint64Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[27]); + pb::GeneratedExtensionBase> RepeatedUint64Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[27]); public static readonly - pb::GeneratedExtensionBase> RepeatedSint32Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[28]); + pb::GeneratedExtensionBase> RepeatedSint32Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[28]); public static readonly - pb::GeneratedExtensionBase> RepeatedSint64Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[29]); + pb::GeneratedExtensionBase> RepeatedSint64Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[29]); public static readonly - pb::GeneratedExtensionBase> RepeatedFixed32Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[30]); + pb::GeneratedExtensionBase> RepeatedFixed32Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[30]); public static readonly - pb::GeneratedExtensionBase> RepeatedFixed64Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[31]); + pb::GeneratedExtensionBase> RepeatedFixed64Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[31]); public static readonly - pb::GeneratedExtensionBase> RepeatedSfixed32Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[32]); + pb::GeneratedExtensionBase> RepeatedSfixed32Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[32]); public static readonly - pb::GeneratedExtensionBase> RepeatedSfixed64Extension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[33]); + pb::GeneratedExtensionBase> RepeatedSfixed64Extension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[33]); public static readonly - pb::GeneratedExtensionBase> RepeatedFloatExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[34]); + pb::GeneratedExtensionBase> RepeatedFloatExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[34]); public static readonly - pb::GeneratedExtensionBase> RepeatedDoubleExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[35]); + pb::GeneratedExtensionBase> RepeatedDoubleExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[35]); public static readonly - pb::GeneratedExtensionBase> RepeatedBoolExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[36]); + pb::GeneratedExtensionBase> RepeatedBoolExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[36]); public static readonly - pb::GeneratedExtensionBase> RepeatedStringExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[37]); + pb::GeneratedExtensionBase> RepeatedStringExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[37]); public static readonly - pb::GeneratedExtensionBase> RepeatedBytesExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[38]); + pb::GeneratedExtensionBase> RepeatedBytesExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[38]); public static readonly - pb::GeneratedExtensionBase> RepeatedGroupExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[39]); + pb::GeneratedExtensionBase> RepeatedGroupExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[39]); public static readonly - pb::GeneratedExtensionBase> RepeatedNestedMessageExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[40]); + pb::GeneratedExtensionBase> RepeatedNestedMessageExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[40]); public static readonly - pb::GeneratedExtensionBase> RepeatedForeignMessageExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[41]); + pb::GeneratedExtensionBase> RepeatedForeignMessageExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[41]); public static readonly - pb::GeneratedExtensionBase> RepeatedImportMessageExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[42]); + pb::GeneratedExtensionBase> RepeatedImportMessageExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[42]); public static readonly - pb::GeneratedExtensionBase> RepeatedNestedEnumExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[43]); + pb::GeneratedExtensionBase> RepeatedNestedEnumExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[43]); public static readonly - pb::GeneratedExtensionBase> RepeatedForeignEnumExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[44]); + pb::GeneratedExtensionBase> RepeatedForeignEnumExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[44]); public static readonly - pb::GeneratedExtensionBase> RepeatedImportEnumExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[45]); + pb::GeneratedExtensionBase> RepeatedImportEnumExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[45]); public static readonly - pb::GeneratedExtensionBase> RepeatedStringPieceExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[46]); + pb::GeneratedExtensionBase> RepeatedStringPieceExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[46]); public static readonly - pb::GeneratedExtensionBase> RepeatedCordExtension = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[47]); - public static readonly pb::GeneratedExtensionBase DefaultInt32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[48]); - public static readonly pb::GeneratedExtensionBase DefaultInt64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[49]); - public static readonly pb::GeneratedExtensionBase DefaultUint32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[50]); - public static readonly pb::GeneratedExtensionBase DefaultUint64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[51]); - public static readonly pb::GeneratedExtensionBase DefaultSint32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[52]); - public static readonly pb::GeneratedExtensionBase DefaultSint64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[53]); - public static readonly pb::GeneratedExtensionBase DefaultFixed32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[54]); - public static readonly pb::GeneratedExtensionBase DefaultFixed64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[55]); - public static readonly pb::GeneratedExtensionBase DefaultSfixed32Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[56]); - public static readonly pb::GeneratedExtensionBase DefaultSfixed64Extension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[57]); - public static readonly pb::GeneratedExtensionBase DefaultFloatExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[58]); - public static readonly pb::GeneratedExtensionBase DefaultDoubleExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[59]); - public static readonly pb::GeneratedExtensionBase DefaultBoolExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[60]); - public static readonly pb::GeneratedExtensionBase DefaultStringExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[61]); - public static readonly pb::GeneratedExtensionBase DefaultBytesExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[62]); - public static readonly pb::GeneratedExtensionBase DefaultNestedEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[63]); - public static readonly pb::GeneratedExtensionBase DefaultForeignEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[64]); - public static readonly pb::GeneratedExtensionBase DefaultImportEnumExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[65]); - public static readonly pb::GeneratedExtensionBase DefaultStringPieceExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[66]); - public static readonly pb::GeneratedExtensionBase DefaultCordExtension = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[67]); - public static readonly pb::GeneratedExtensionBase MyExtensionString = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[68]); - public static readonly pb::GeneratedExtensionBase MyExtensionInt = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[69]); + pb::GeneratedExtensionBase> RepeatedCordExtension = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[47]); + public static readonly pb::GeneratedExtensionBase DefaultInt32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[48]); + public static readonly pb::GeneratedExtensionBase DefaultInt64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[49]); + public static readonly pb::GeneratedExtensionBase DefaultUint32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[50]); + public static readonly pb::GeneratedExtensionBase DefaultUint64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[51]); + public static readonly pb::GeneratedExtensionBase DefaultSint32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[52]); + public static readonly pb::GeneratedExtensionBase DefaultSint64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[53]); + public static readonly pb::GeneratedExtensionBase DefaultFixed32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[54]); + public static readonly pb::GeneratedExtensionBase DefaultFixed64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[55]); + public static readonly pb::GeneratedExtensionBase DefaultSfixed32Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[56]); + public static readonly pb::GeneratedExtensionBase DefaultSfixed64Extension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[57]); + public static readonly pb::GeneratedExtensionBase DefaultFloatExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[58]); + public static readonly pb::GeneratedExtensionBase DefaultDoubleExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[59]); + public static readonly pb::GeneratedExtensionBase DefaultBoolExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[60]); + public static readonly pb::GeneratedExtensionBase DefaultStringExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[61]); + public static readonly pb::GeneratedExtensionBase DefaultBytesExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[62]); + public static readonly pb::GeneratedExtensionBase DefaultNestedEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[63]); + public static readonly pb::GeneratedExtensionBase DefaultForeignEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[64]); + public static readonly pb::GeneratedExtensionBase DefaultImportEnumExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[65]); + public static readonly pb::GeneratedExtensionBase DefaultStringPieceExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[66]); + public static readonly pb::GeneratedExtensionBase DefaultCordExtension = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[67]); + public static readonly pb::GeneratedExtensionBase MyExtensionString = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[68]); + public static readonly pb::GeneratedExtensionBase MyExtensionInt = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[69]); #endregion #region Static variables @@ -1150,12 +1150,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestAllTypes.Types.NestedMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestAllTypes.Types.NestedMessage.CreateBuilder() internal Builder() {} @@ -1165,12 +1169,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestAllTypes.Types.NestedMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1188,11 +1192,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestAllTypes.Types.NestedMessage) { return MergeFrom((self::TestAllTypes.Types.NestedMessage) other); } else { @@ -1201,7 +1201,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestAllTypes.Types.NestedMessage other) { + public override Builder MergeFrom(self::TestAllTypes.Types.NestedMessage other) { if (other == self::TestAllTypes.Types.NestedMessage.DefaultInstance) return this; if (other.HasBb) { Bb = other.Bb; @@ -1210,11 +1210,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1353,12 +1353,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestAllTypes.Types.OptionalGroup prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestAllTypes.Types.OptionalGroup.CreateBuilder() internal Builder() {} @@ -1368,12 +1372,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestAllTypes.Types.OptionalGroup(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1391,11 +1395,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestAllTypes.Types.OptionalGroup) { return MergeFrom((self::TestAllTypes.Types.OptionalGroup) other); } else { @@ -1404,7 +1404,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestAllTypes.Types.OptionalGroup other) { + public override Builder MergeFrom(self::TestAllTypes.Types.OptionalGroup other) { if (other == self::TestAllTypes.Types.OptionalGroup.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -1413,11 +1413,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1556,12 +1556,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestAllTypes.Types.RepeatedGroup prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestAllTypes.Types.RepeatedGroup.CreateBuilder() internal Builder() {} @@ -1571,12 +1575,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestAllTypes.Types.RepeatedGroup(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1594,11 +1598,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestAllTypes.Types.RepeatedGroup) { return MergeFrom((self::TestAllTypes.Types.RepeatedGroup) other); } else { @@ -1607,7 +1607,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestAllTypes.Types.RepeatedGroup other) { + public override Builder MergeFrom(self::TestAllTypes.Types.RepeatedGroup other) { if (other == self::TestAllTypes.Types.RepeatedGroup.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -1616,11 +1616,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -2878,12 +2878,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestAllTypes prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestAllTypes.CreateBuilder() internal Builder() {} @@ -2893,12 +2897,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestAllTypes(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -2948,11 +2952,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestAllTypes) { return MergeFrom((self::TestAllTypes) other); } else { @@ -2961,7 +2961,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestAllTypes other) { + public override Builder MergeFrom(self::TestAllTypes other) { if (other == self::TestAllTypes.DefaultInstance) return this; if (other.HasOptionalInt32) { OptionalInt32 = other.OptionalInt32; @@ -3243,11 +3243,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5447,12 +5447,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::ForeignMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::ForeignMessage.CreateBuilder() internal Builder() {} @@ -5462,12 +5466,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::ForeignMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5485,11 +5489,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::ForeignMessage) { return MergeFrom((self::ForeignMessage) other); } else { @@ -5498,7 +5498,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::ForeignMessage other) { + public override Builder MergeFrom(self::ForeignMessage other) { if (other == self::ForeignMessage.DefaultInstance) return this; if (other.HasC) { C = other.C; @@ -5507,11 +5507,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5638,12 +5638,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestAllExtensions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::ExtendableBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestAllExtensions.CreateBuilder() internal Builder() {} @@ -5653,12 +5657,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestAllExtensions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5676,11 +5680,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestAllExtensions) { return MergeFrom((self::TestAllExtensions) other); } else { @@ -5689,17 +5689,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestAllExtensions other) { + public override Builder MergeFrom(self::TestAllExtensions other) { if (other == self::TestAllExtensions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5815,12 +5815,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::OptionalGroup_extension prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::OptionalGroup_extension.CreateBuilder() internal Builder() {} @@ -5830,12 +5834,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::OptionalGroup_extension(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5853,11 +5857,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::OptionalGroup_extension) { return MergeFrom((self::OptionalGroup_extension) other); } else { @@ -5866,7 +5866,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::OptionalGroup_extension other) { + public override Builder MergeFrom(self::OptionalGroup_extension other) { if (other == self::OptionalGroup_extension.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -5875,11 +5875,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -6018,12 +6018,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::RepeatedGroup_extension prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::RepeatedGroup_extension.CreateBuilder() internal Builder() {} @@ -6033,12 +6037,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::RepeatedGroup_extension(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -6056,11 +6060,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::RepeatedGroup_extension) { return MergeFrom((self::RepeatedGroup_extension) other); } else { @@ -6069,7 +6069,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::RepeatedGroup_extension other) { + public override Builder MergeFrom(self::RepeatedGroup_extension other) { if (other == self::RepeatedGroup_extension.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -6078,11 +6078,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -6149,11 +6149,11 @@ namespace Google.ProtocolBuffers.TestProtos { #region Nested types public static class Types { - public static readonly pb::GeneratedExtensionBase Single = - pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); + public static readonly pb::GeneratedExtensionBase Single = + pb::GeneratedSingleExtension.CreateInstance(Descriptor.Extensions[0]); public static readonly - pb::GeneratedExtensionBase> Multi = - pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[1]); + pb::GeneratedExtensionBase> Multi = + pb::GeneratedRepeatExtension.CreateInstance(Descriptor.Extensions[1]); } #endregion @@ -6746,12 +6746,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestRequired prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestRequired.CreateBuilder() internal Builder() {} @@ -6761,12 +6765,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestRequired(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -6784,11 +6788,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestRequired) { return MergeFrom((self::TestRequired) other); } else { @@ -6797,7 +6797,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestRequired other) { + public override Builder MergeFrom(self::TestRequired other) { if (other == self::TestRequired.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -6902,11 +6902,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -7821,12 +7821,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestRequiredForeign prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestRequiredForeign.CreateBuilder() internal Builder() {} @@ -7836,12 +7840,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestRequiredForeign(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -7862,11 +7866,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestRequiredForeign) { return MergeFrom((self::TestRequiredForeign) other); } else { @@ -7875,7 +7875,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestRequiredForeign other) { + public override Builder MergeFrom(self::TestRequiredForeign other) { if (other == self::TestRequiredForeign.DefaultInstance) return this; if (other.HasOptionalMessage) { MergeOptionalMessage(other.OptionalMessage); @@ -7893,11 +7893,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -8130,12 +8130,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestForeignNested prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestForeignNested.CreateBuilder() internal Builder() {} @@ -8145,12 +8149,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestForeignNested(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -8168,11 +8172,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestForeignNested) { return MergeFrom((self::TestForeignNested) other); } else { @@ -8181,7 +8181,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestForeignNested other) { + public override Builder MergeFrom(self::TestForeignNested other) { if (other == self::TestForeignNested.DefaultInstance) return this; if (other.HasForeignNested) { MergeForeignNested(other.ForeignNested); @@ -8190,11 +8190,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -8338,12 +8338,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestEmptyMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestEmptyMessage.CreateBuilder() internal Builder() {} @@ -8353,12 +8357,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestEmptyMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -8376,11 +8380,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestEmptyMessage) { return MergeFrom((self::TestEmptyMessage) other); } else { @@ -8389,17 +8389,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestEmptyMessage other) { + public override Builder MergeFrom(self::TestEmptyMessage other) { if (other == self::TestEmptyMessage.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -8503,12 +8503,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestEmptyMessageWithExtensions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::ExtendableBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestEmptyMessageWithExtensions.CreateBuilder() internal Builder() {} @@ -8518,12 +8522,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestEmptyMessageWithExtensions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -8541,11 +8545,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestEmptyMessageWithExtensions) { return MergeFrom((self::TestEmptyMessageWithExtensions) other); } else { @@ -8554,17 +8554,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestEmptyMessageWithExtensions other) { + public override Builder MergeFrom(self::TestEmptyMessageWithExtensions other) { if (other == self::TestEmptyMessageWithExtensions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -8696,12 +8696,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestReallyLargeTagNumber prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestReallyLargeTagNumber.CreateBuilder() internal Builder() {} @@ -8711,12 +8715,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestReallyLargeTagNumber(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -8734,11 +8738,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestReallyLargeTagNumber) { return MergeFrom((self::TestReallyLargeTagNumber) other); } else { @@ -8747,7 +8747,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestReallyLargeTagNumber other) { + public override Builder MergeFrom(self::TestReallyLargeTagNumber other) { if (other == self::TestReallyLargeTagNumber.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -8759,11 +8759,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -8941,12 +8941,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestRecursiveMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestRecursiveMessage.CreateBuilder() internal Builder() {} @@ -8956,12 +8960,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestRecursiveMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -8979,11 +8983,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestRecursiveMessage) { return MergeFrom((self::TestRecursiveMessage) other); } else { @@ -8992,7 +8992,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestRecursiveMessage other) { + public override Builder MergeFrom(self::TestRecursiveMessage other) { if (other == self::TestRecursiveMessage.DefaultInstance) return this; if (other.HasA) { MergeA(other.A); @@ -9004,11 +9004,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -9191,12 +9191,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMutualRecursionA prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMutualRecursionA.CreateBuilder() internal Builder() {} @@ -9206,12 +9210,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMutualRecursionA(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -9229,11 +9233,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMutualRecursionA) { return MergeFrom((self::TestMutualRecursionA) other); } else { @@ -9242,7 +9242,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMutualRecursionA other) { + public override Builder MergeFrom(self::TestMutualRecursionA other) { if (other == self::TestMutualRecursionA.DefaultInstance) return this; if (other.HasBb) { MergeBb(other.Bb); @@ -9251,11 +9251,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -9431,12 +9431,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestMutualRecursionB prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestMutualRecursionB.CreateBuilder() internal Builder() {} @@ -9446,12 +9450,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestMutualRecursionB(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -9469,11 +9473,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestMutualRecursionB) { return MergeFrom((self::TestMutualRecursionB) other); } else { @@ -9482,7 +9482,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestMutualRecursionB other) { + public override Builder MergeFrom(self::TestMutualRecursionB other) { if (other == self::TestMutualRecursionB.DefaultInstance) return this; if (other.HasA) { MergeA(other.A); @@ -9494,11 +9494,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -9701,12 +9701,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestDupFieldNumber.Types.Foo prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestDupFieldNumber.Types.Foo.CreateBuilder() internal Builder() {} @@ -9716,12 +9720,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestDupFieldNumber.Types.Foo(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -9739,11 +9743,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestDupFieldNumber.Types.Foo) { return MergeFrom((self::TestDupFieldNumber.Types.Foo) other); } else { @@ -9752,7 +9752,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestDupFieldNumber.Types.Foo other) { + public override Builder MergeFrom(self::TestDupFieldNumber.Types.Foo other) { if (other == self::TestDupFieldNumber.Types.Foo.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -9761,11 +9761,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -9904,12 +9904,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestDupFieldNumber.Types.Bar prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestDupFieldNumber.Types.Bar.CreateBuilder() internal Builder() {} @@ -9919,12 +9923,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestDupFieldNumber.Types.Bar(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -9942,11 +9946,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestDupFieldNumber.Types.Bar) { return MergeFrom((self::TestDupFieldNumber.Types.Bar) other); } else { @@ -9955,7 +9955,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestDupFieldNumber.Types.Bar other) { + public override Builder MergeFrom(self::TestDupFieldNumber.Types.Bar other) { if (other == self::TestDupFieldNumber.Types.Bar.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -9964,11 +9964,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -10124,12 +10124,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestDupFieldNumber prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestDupFieldNumber.CreateBuilder() internal Builder() {} @@ -10139,12 +10143,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestDupFieldNumber(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -10162,11 +10166,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestDupFieldNumber) { return MergeFrom((self::TestDupFieldNumber) other); } else { @@ -10175,7 +10175,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestDupFieldNumber other) { + public override Builder MergeFrom(self::TestDupFieldNumber other) { if (other == self::TestDupFieldNumber.DefaultInstance) return this; if (other.HasA) { A = other.A; @@ -10190,11 +10190,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -10462,12 +10462,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestNestedMessageHasBits.Types.NestedMessage prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestNestedMessageHasBits.Types.NestedMessage.CreateBuilder() internal Builder() {} @@ -10477,12 +10481,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestNestedMessageHasBits.Types.NestedMessage(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -10504,11 +10508,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestNestedMessageHasBits.Types.NestedMessage) { return MergeFrom((self::TestNestedMessageHasBits.Types.NestedMessage) other); } else { @@ -10517,7 +10517,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestNestedMessageHasBits.Types.NestedMessage other) { + public override Builder MergeFrom(self::TestNestedMessageHasBits.Types.NestedMessage other) { if (other == self::TestNestedMessageHasBits.Types.NestedMessage.DefaultInstance) return this; if (other.nestedmessageRepeatedInt32_.Count != 0) { if (result.nestedmessageRepeatedInt32_.Count == 0) { @@ -10535,11 +10535,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -10727,12 +10727,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestNestedMessageHasBits prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestNestedMessageHasBits.CreateBuilder() internal Builder() {} @@ -10742,12 +10746,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestNestedMessageHasBits(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -10765,11 +10769,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestNestedMessageHasBits) { return MergeFrom((self::TestNestedMessageHasBits) other); } else { @@ -10778,7 +10778,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestNestedMessageHasBits other) { + public override Builder MergeFrom(self::TestNestedMessageHasBits other) { if (other == self::TestNestedMessageHasBits.DefaultInstance) return this; if (other.HasOptionalNestedMessage) { MergeOptionalNestedMessage(other.OptionalNestedMessage); @@ -10787,11 +10787,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -11143,12 +11143,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestCamelCaseFieldNames prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestCamelCaseFieldNames.CreateBuilder() internal Builder() {} @@ -11158,12 +11162,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestCamelCaseFieldNames(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -11189,11 +11193,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestCamelCaseFieldNames) { return MergeFrom((self::TestCamelCaseFieldNames) other); } else { @@ -11202,7 +11202,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestCamelCaseFieldNames other) { + public override Builder MergeFrom(self::TestCamelCaseFieldNames other) { if (other == self::TestCamelCaseFieldNames.DefaultInstance) return this; if (other.HasPrimitiveField) { PrimitiveField = other.PrimitiveField; @@ -11262,11 +11262,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -11824,12 +11824,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestFieldOrderings prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::ExtendableBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestFieldOrderings.CreateBuilder() internal Builder() {} @@ -11839,12 +11843,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestFieldOrderings(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -11862,11 +11866,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestFieldOrderings) { return MergeFrom((self::TestFieldOrderings) other); } else { @@ -11875,7 +11875,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestFieldOrderings other) { + public override Builder MergeFrom(self::TestFieldOrderings other) { if (other == self::TestFieldOrderings.DefaultInstance) return this; if (other.HasMyString) { MyString = other.MyString; @@ -11890,11 +11890,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -12159,12 +12159,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::TestExtremeDefaultValues prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::TestExtremeDefaultValues.CreateBuilder() internal Builder() {} @@ -12174,12 +12178,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::TestExtremeDefaultValues(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -12197,11 +12201,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::TestExtremeDefaultValues) { return MergeFrom((self::TestExtremeDefaultValues) other); } else { @@ -12210,7 +12210,7 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::TestExtremeDefaultValues other) { + public override Builder MergeFrom(self::TestExtremeDefaultValues other) { if (other == self::TestExtremeDefaultValues.DefaultInstance) return this; if (other.HasEscapedBytes) { EscapedBytes = other.EscapedBytes; @@ -12234,11 +12234,11 @@ namespace Google.ProtocolBuffers.TestProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -12476,12 +12476,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FooRequest prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FooRequest.CreateBuilder() internal Builder() {} @@ -12491,12 +12495,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FooRequest(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -12514,11 +12518,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FooRequest) { return MergeFrom((self::FooRequest) other); } else { @@ -12527,17 +12527,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::FooRequest other) { + public override Builder MergeFrom(self::FooRequest other) { if (other == self::FooRequest.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -12637,12 +12637,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FooResponse prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FooResponse.CreateBuilder() internal Builder() {} @@ -12652,12 +12656,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FooResponse(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -12675,11 +12679,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FooResponse) { return MergeFrom((self::FooResponse) other); } else { @@ -12688,17 +12688,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::FooResponse other) { + public override Builder MergeFrom(self::FooResponse other) { if (other == self::FooResponse.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -12798,12 +12798,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::BarRequest prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::BarRequest.CreateBuilder() internal Builder() {} @@ -12813,12 +12817,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::BarRequest(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -12836,11 +12840,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::BarRequest) { return MergeFrom((self::BarRequest) other); } else { @@ -12849,17 +12849,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::BarRequest other) { + public override Builder MergeFrom(self::BarRequest other) { if (other == self::BarRequest.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -12959,12 +12959,16 @@ namespace Google.ProtocolBuffers.TestProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::BarResponse prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::BarResponse.CreateBuilder() internal Builder() {} @@ -12974,12 +12978,12 @@ namespace Google.ProtocolBuffers.TestProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::BarResponse(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -12997,11 +13001,7 @@ namespace Google.ProtocolBuffers.TestProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::BarResponse) { return MergeFrom((self::BarResponse) other); } else { @@ -13010,17 +13010,17 @@ namespace Google.ProtocolBuffers.TestProtos { } } - public override IBuilder MergeFrom(self::BarResponse other) { + public override Builder MergeFrom(self::BarResponse other) { if (other == self::BarResponse.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -13147,7 +13147,7 @@ namespace Google.ProtocolBuffers.TestProtos { controller, request, self::FooResponse.DefaultInstance, - pb::RpcUtil.GeneralizeCallback(done, self::FooResponse.DefaultInstance)); + pb::RpcUtil.GeneralizeCallback(done, self::FooResponse.DefaultInstance)); } public override void Bar( @@ -13159,7 +13159,7 @@ namespace Google.ProtocolBuffers.TestProtos { controller, request, self::BarResponse.DefaultInstance, - pb::RpcUtil.GeneralizeCallback(done, self::BarResponse.DefaultInstance)); + pb::RpcUtil.GeneralizeCallback(done, self::BarResponse.DefaultInstance)); } } } diff --git a/csharp/ProtocolBuffers/AbstractBuilder.cs b/csharp/ProtocolBuffers/AbstractBuilder.cs index 94077d4f..261bbcf3 100644 --- a/csharp/ProtocolBuffers/AbstractBuilder.cs +++ b/csharp/ProtocolBuffers/AbstractBuilder.cs @@ -8,10 +8,16 @@ using System.IO; namespace Google.ProtocolBuffers { /// /// Implementation of the non-generic IMessage interface as far as possible. - /// TODO(jonskeet): Make this generic, to avoid so much casting in DynamicMessage. /// - public abstract class AbstractBuilder : IBuilder { + public abstract class AbstractBuilder : IBuilder + where TMessage : AbstractMessage + where TBuilder : AbstractBuilder { + + protected abstract TBuilder ThisBuilder { get; } + #region Unimplemented members of IBuilder + public abstract UnknownFieldSet UnknownFields { get; set; } + public abstract TBuilder MergeFrom(TMessage other); public abstract bool IsInitialized { get; } public abstract IDictionary AllFields { get; } public abstract object this[FieldDescriptor field] { get; set; } @@ -19,55 +25,75 @@ namespace Google.ProtocolBuffers { public abstract int GetRepeatedFieldCount(FieldDescriptor field); public abstract object this[FieldDescriptor field, int index] { get; set; } public abstract bool HasField(FieldDescriptor field); + public abstract TMessage Build(); + public abstract TMessage BuildPartial(); + public abstract TBuilder Clone(); + public abstract TMessage DefaultInstanceForType { get; } + public abstract IBuilder CreateBuilderForField(FieldDescriptor field); + public abstract TBuilder ClearField(FieldDescriptor field); + public abstract TBuilder AddRepeatedField(FieldDescriptor field, object value); #endregion - #region New abstract methods to be overridden by implementations, allow explicit interface implementation - protected abstract IMessage BuildImpl(); - protected abstract IMessage BuildPartialImpl(); - protected abstract IBuilder CloneImpl(); - protected abstract IMessage DefaultInstanceForTypeImpl { get; } - protected abstract IBuilder ClearFieldImpl(FieldDescriptor field); - protected abstract IBuilder AddRepeatedFieldImpl(FieldDescriptor field, object value); - #endregion + #region Implementation of methods which don't require type parameter information + public IMessage WeakBuild() { + return Build(); + } - #region Methods simply proxying to the "Impl" methods, explicitly implementing IBuilder - IMessage IBuilder.Build() { - return BuildImpl(); + public IBuilder WeakAddRepeatedField(FieldDescriptor field, object value) { + return AddRepeatedField(field, value); } - IMessage IBuilder.BuildPartial() { - return BuildPartialImpl(); + public IBuilder WeakClear() { + return Clear(); } - IBuilder IBuilder.Clone() { - return CloneImpl(); + public IBuilder WeakMergeFrom(IMessage message) { + return MergeFrom(message); } - - IMessage IBuilder.DefaultInstanceForType { - get { return DefaultInstanceForTypeImpl; } + + public IBuilder WeakMergeFrom(CodedInputStream input) { + return MergeFrom(input); } - public abstract IBuilder CreateBuilderForField(FieldDescriptor field); + public IBuilder WeakMergeFrom(CodedInputStream input, ExtensionRegistry registry) { + return MergeFrom(input, registry); + } + + public IBuilder WeakMergeFrom(ByteString data) { + return MergeFrom(data); + } + + public IBuilder WeakMergeFrom(ByteString data, ExtensionRegistry registry) { + return MergeFrom(data, registry); + } - IBuilder IBuilder.ClearField(FieldDescriptor field) { - return ClearFieldImpl(field); + public IMessage WeakBuildPartial() { + return BuildPartial(); } - IBuilder IBuilder.AddRepeatedField(FieldDescriptor field, object value) { - return AddRepeatedFieldImpl(field, value); + public IBuilder WeakClone() { + return Clone(); + } + + public IMessage WeakDefaultInstanceForType { + get { return DefaultInstanceForType; } + } + + public IBuilder WeakClearField(FieldDescriptor field) { + return ClearField(field); } #endregion - public virtual IBuilder Clear() { + public virtual TBuilder Clear() { foreach(FieldDescriptor field in AllFields.Keys) { - ClearFieldImpl(field); + ClearField(field); } - return this; + return ThisBuilder; } - public virtual IBuilder MergeFrom(IMessage other) { + public virtual TBuilder MergeFrom(IMessage other) { if (other.DescriptorForType != DescriptorForType) { - throw new ArgumentException("MergeFrom(Message) can only merge messages of the same type."); + throw new ArgumentException("MergeFrom(IMessage) can only merge messages of the same type."); } // Note: We don't attempt to verify that other's fields have valid @@ -83,101 +109,95 @@ namespace Google.ProtocolBuffers { if (field.IsRepeated) { // Concatenate repeated fields foreach (object element in (IEnumerable) entry.Value) { - AddRepeatedFieldImpl(field, element); + AddRepeatedField(field, element); } } else if (field.MappedType == MappedType.Message) { // Merge singular messages IMessage existingValue = (IMessage) this[field]; - if (existingValue == existingValue.DefaultInstanceForType) { + if (existingValue == existingValue.WeakDefaultInstanceForType) { this[field] = entry.Value; } else { - this[field] = existingValue.CreateBuilderForType() - .MergeFrom(existingValue) - .MergeFrom((IMessage) entry.Value) - .Build(); + this[field] = existingValue.WeakCreateBuilderForType() + .WeakMergeFrom(existingValue) + .WeakMergeFrom((IMessage) entry.Value) + .WeakBuild(); } } else { // Overwrite simple values this[field] = entry.Value; } } - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(CodedInputStream input) { - return MergeFromImpl(input, ExtensionRegistry.Empty); + public virtual TBuilder MergeFrom(CodedInputStream input) { + return MergeFrom(input, ExtensionRegistry.Empty); } - protected virtual IBuilder MergeFromImpl(CodedInputStream input, ExtensionRegistry extensionRegistry) { + public virtual TBuilder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry) { UnknownFieldSet.Builder unknownFields = UnknownFieldSet.CreateBuilder(UnknownFields); FieldSet.MergeFrom(input, unknownFields, extensionRegistry, this); UnknownFields = unknownFields.Build(); - return this; - } - - IBuilder IBuilder.MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry) { - return MergeFromImpl(input, extensionRegistry); + return ThisBuilder; } - IBuilder IBuilder.MergeUnknownFields(UnknownFieldSet unknownFields) { + public virtual TBuilder MergeUnknownFields(UnknownFieldSet unknownFields) { UnknownFields = UnknownFieldSet.CreateBuilder(UnknownFields) .MergeFrom(unknownFields) .Build(); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(ByteString data) { + public virtual TBuilder MergeFrom(ByteString data) { CodedInputStream input = data.CreateCodedInput(); - ((IBuilder)this).MergeFrom(input); + MergeFrom(input); input.CheckLastTagWas(0); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(ByteString data, ExtensionRegistry extensionRegistry) { + public virtual TBuilder MergeFrom(ByteString data, ExtensionRegistry extensionRegistry) { CodedInputStream input = data.CreateCodedInput(); - ((IBuilder)this).MergeFrom(input, extensionRegistry); + MergeFrom(input, extensionRegistry); input.CheckLastTagWas(0); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(byte[] data) { + public virtual TBuilder MergeFrom(byte[] data) { CodedInputStream input = CodedInputStream.CreateInstance(data); - ((IBuilder)this).MergeFrom(input); + MergeFrom(input); input.CheckLastTagWas(0); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(byte[] data, ExtensionRegistry extensionRegistry) { + public virtual TBuilder MergeFrom(byte[] data, ExtensionRegistry extensionRegistry) { CodedInputStream input = CodedInputStream.CreateInstance(data); - ((IBuilder)this).MergeFrom(input, extensionRegistry); + MergeFrom(input, extensionRegistry); input.CheckLastTagWas(0); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(Stream input) { + public virtual TBuilder MergeFrom(Stream input) { CodedInputStream codedInput = CodedInputStream.CreateInstance(input); - ((IBuilder)this).MergeFrom(codedInput); + MergeFrom(codedInput); codedInput.CheckLastTagWas(0); - return this; + return ThisBuilder; } - IBuilder IBuilder.MergeFrom(Stream input, ExtensionRegistry extensionRegistry) { + public virtual TBuilder MergeFrom(Stream input, ExtensionRegistry extensionRegistry) { CodedInputStream codedInput = CodedInputStream.CreateInstance(input); - ((IBuilder)this).MergeFrom(codedInput, extensionRegistry); + MergeFrom(codedInput, extensionRegistry); codedInput.CheckLastTagWas(0); - return this; + return ThisBuilder; } - public abstract UnknownFieldSet UnknownFields { get; set; } - - public IBuilder SetField(FieldDescriptor field, object value) { + public virtual IBuilder SetField(FieldDescriptor field, object value) { this[field] = value; - return this; + return ThisBuilder; } - public IBuilder SetRepeatedField(FieldDescriptor field, int index, object value) { + public virtual IBuilder SetRepeatedField(FieldDescriptor field, int index, object value) { this[field, index] = value; - return this; + return ThisBuilder; } } } diff --git a/csharp/ProtocolBuffers/AbstractMessage.cs b/csharp/ProtocolBuffers/AbstractMessage.cs index 6dfcc46d..87172932 100644 --- a/csharp/ProtocolBuffers/AbstractMessage.cs +++ b/csharp/ProtocolBuffers/AbstractMessage.cs @@ -23,7 +23,9 @@ namespace Google.ProtocolBuffers { /// /// Implementation of the non-generic IMessage interface as far as possible. /// - public abstract class AbstractMessage : IMessage { + public abstract class AbstractMessage : IMessage + where TMessage : AbstractMessage + where TBuilder : AbstractBuilder { // TODO(jonskeet): Cleaner to use a Nullable? /// /// The serialized size if it's already been computed, or -1 @@ -39,21 +41,17 @@ namespace Google.ProtocolBuffers { public abstract int GetRepeatedFieldCount(FieldDescriptor field); public abstract object this[FieldDescriptor field, int index] { get; } public abstract UnknownFieldSet UnknownFields { get; } + public abstract TMessage DefaultInstanceForType { get; } + public abstract TBuilder CreateBuilderForType(); #endregion - - #region New abstract methods to be overridden by implementations, allow explicit interface implementation - protected abstract IMessage DefaultInstanceForTypeImpl { get; } - protected abstract IBuilder CreateBuilderForTypeImpl(); - #endregion - - #region Methods simply proxying to the "Impl" methods, explicitly implementing IMessage - IMessage IMessage.DefaultInstanceForType { - get { return DefaultInstanceForTypeImpl; } + + public IBuilder WeakCreateBuilderForType() { + return CreateBuilderForType(); } - IBuilder IMessage.CreateBuilderForType() { - return CreateBuilderForTypeImpl(); + + public IMessage WeakDefaultInstanceForType { + get { return DefaultInstanceForType; } } - #endregion public virtual bool IsInitialized { get { @@ -71,7 +69,7 @@ namespace Google.ProtocolBuffers { if (field.IsRepeated) { // We know it's an IList, but not the exact type - so // IEnumerable is the best we can do. (C# generics aren't covariant yet.) - foreach (IMessage element in (IEnumerable)entry.Value) { + foreach (IMessage element in (IEnumerable) entry.Value) { if (!element.IsInitialized) { return false; } @@ -124,7 +122,7 @@ namespace Google.ProtocolBuffers { foreach (KeyValuePair entry in AllFields) { FieldDescriptor field = entry.Key; if (field.IsRepeated) { - foreach (object element in (IEnumerable)entry.Value) { + foreach (object element in (IEnumerable) entry.Value) { size += CodedOutputStream.ComputeFieldSize(field.FieldType, field.FieldNumber, element); } } else { diff --git a/csharp/ProtocolBuffers/CodedInputStream.cs b/csharp/ProtocolBuffers/CodedInputStream.cs index 7fab7d21..d9dbc217 100644 --- a/csharp/ProtocolBuffers/CodedInputStream.cs +++ b/csharp/ProtocolBuffers/CodedInputStream.cs @@ -224,7 +224,7 @@ namespace Google.ProtocolBuffers { throw InvalidProtocolBufferException.RecursionLimitExceeded(); } ++recursionDepth; - builder.MergeFrom(this, extensionRegistry); + builder.WeakMergeFrom(this, extensionRegistry); CheckLastTagWas(WireFormat.MakeTag(fieldNumber, WireFormat.WireType.EndGroup)); --recursionDepth; } @@ -253,7 +253,7 @@ namespace Google.ProtocolBuffers { } int oldLimit = PushLimit(length); ++recursionDepth; - builder.MergeFrom(this, extensionRegistry); + builder.WeakMergeFrom(this, extensionRegistry); CheckLastTagWas(0); --recursionDepth; PopLimit(oldLimit); diff --git a/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs index a7772cf8..fe8d0656 100644 --- a/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs +++ b/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs @@ -492,12 +492,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FileDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FileDescriptorProto.CreateBuilder() internal Builder() {} @@ -507,12 +511,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FileDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -543,11 +547,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FileDescriptorProto) { return MergeFrom((self::FileDescriptorProto) other); } else { @@ -556,7 +556,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::FileDescriptorProto other) { + public override Builder MergeFrom(self::FileDescriptorProto other) { if (other == self::FileDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -601,11 +601,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1084,12 +1084,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::DescriptorProto.Types.ExtensionRange prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::DescriptorProto.Types.ExtensionRange.CreateBuilder() internal Builder() {} @@ -1099,12 +1103,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::DescriptorProto.Types.ExtensionRange(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1122,11 +1126,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::DescriptorProto.Types.ExtensionRange) { return MergeFrom((self::DescriptorProto.Types.ExtensionRange) other); } else { @@ -1135,7 +1135,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::DescriptorProto.Types.ExtensionRange other) { + public override Builder MergeFrom(self::DescriptorProto.Types.ExtensionRange other) { if (other == self::DescriptorProto.Types.ExtensionRange.DefaultInstance) return this; if (other.HasStart) { Start = other.Start; @@ -1147,11 +1147,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -1404,12 +1404,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::DescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::DescriptorProto.CreateBuilder() internal Builder() {} @@ -1419,12 +1423,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::DescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -1457,11 +1461,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::DescriptorProto) { return MergeFrom((self::DescriptorProto) other); } else { @@ -1470,7 +1470,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::DescriptorProto other) { + public override Builder MergeFrom(self::DescriptorProto other) { if (other == self::DescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -1512,11 +1512,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -2091,12 +2091,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FieldDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FieldDescriptorProto.CreateBuilder() internal Builder() {} @@ -2106,12 +2110,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FieldDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -2129,11 +2133,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FieldDescriptorProto) { return MergeFrom((self::FieldDescriptorProto) other); } else { @@ -2142,7 +2142,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::FieldDescriptorProto other) { + public override Builder MergeFrom(self::FieldDescriptorProto other) { if (other == self::FieldDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -2172,11 +2172,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -2541,12 +2541,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::EnumDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::EnumDescriptorProto.CreateBuilder() internal Builder() {} @@ -2556,12 +2560,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::EnumDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -2582,11 +2586,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::EnumDescriptorProto) { return MergeFrom((self::EnumDescriptorProto) other); } else { @@ -2595,7 +2595,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::EnumDescriptorProto other) { + public override Builder MergeFrom(self::EnumDescriptorProto other) { if (other == self::EnumDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -2613,11 +2613,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -2882,12 +2882,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::EnumValueDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::EnumValueDescriptorProto.CreateBuilder() internal Builder() {} @@ -2897,12 +2901,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::EnumValueDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -2920,11 +2924,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::EnumValueDescriptorProto) { return MergeFrom((self::EnumValueDescriptorProto) other); } else { @@ -2933,7 +2933,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::EnumValueDescriptorProto other) { + public override Builder MergeFrom(self::EnumValueDescriptorProto other) { if (other == self::EnumValueDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -2948,11 +2948,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -3192,12 +3192,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::ServiceDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::ServiceDescriptorProto.CreateBuilder() internal Builder() {} @@ -3207,12 +3211,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::ServiceDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -3233,11 +3237,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::ServiceDescriptorProto) { return MergeFrom((self::ServiceDescriptorProto) other); } else { @@ -3246,7 +3246,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::ServiceDescriptorProto other) { + public override Builder MergeFrom(self::ServiceDescriptorProto other) { if (other == self::ServiceDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -3264,11 +3264,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -3549,12 +3549,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::MethodDescriptorProto prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::MethodDescriptorProto.CreateBuilder() internal Builder() {} @@ -3564,12 +3568,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::MethodDescriptorProto(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -3587,11 +3591,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::MethodDescriptorProto) { return MergeFrom((self::MethodDescriptorProto) other); } else { @@ -3600,7 +3600,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::MethodDescriptorProto other) { + public override Builder MergeFrom(self::MethodDescriptorProto other) { if (other == self::MethodDescriptorProto.DefaultInstance) return this; if (other.HasName) { Name = other.Name; @@ -3618,11 +3618,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -3988,12 +3988,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FileOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FileOptions.CreateBuilder() internal Builder() {} @@ -4003,12 +4007,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FileOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -4026,11 +4030,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FileOptions) { return MergeFrom((self::FileOptions) other); } else { @@ -4039,7 +4039,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::FileOptions other) { + public override Builder MergeFrom(self::FileOptions other) { if (other == self::FileOptions.DefaultInstance) return this; if (other.HasJavaPackage) { JavaPackage = other.JavaPackage; @@ -4072,11 +4072,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -4404,12 +4404,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::MessageOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::MessageOptions.CreateBuilder() internal Builder() {} @@ -4419,12 +4423,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::MessageOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -4442,11 +4446,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::MessageOptions) { return MergeFrom((self::MessageOptions) other); } else { @@ -4455,7 +4455,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::MessageOptions other) { + public override Builder MergeFrom(self::MessageOptions other) { if (other == self::MessageOptions.DefaultInstance) return this; if (other.HasMessageSetWireFormat) { MessageSetWireFormat = other.MessageSetWireFormat; @@ -4464,11 +4464,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -4632,12 +4632,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::FieldOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::FieldOptions.CreateBuilder() internal Builder() {} @@ -4647,12 +4651,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::FieldOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -4670,11 +4674,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::FieldOptions) { return MergeFrom((self::FieldOptions) other); } else { @@ -4683,7 +4683,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::FieldOptions other) { + public override Builder MergeFrom(self::FieldOptions other) { if (other == self::FieldOptions.DefaultInstance) return this; if (other.HasCtype) { Ctype = other.Ctype; @@ -4695,11 +4695,11 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -4850,12 +4850,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::EnumOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::EnumOptions.CreateBuilder() internal Builder() {} @@ -4865,12 +4869,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::EnumOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -4888,11 +4892,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::EnumOptions) { return MergeFrom((self::EnumOptions) other); } else { @@ -4901,17 +4901,17 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::EnumOptions other) { + public override Builder MergeFrom(self::EnumOptions other) { if (other == self::EnumOptions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5011,12 +5011,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::EnumValueOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::EnumValueOptions.CreateBuilder() internal Builder() {} @@ -5026,12 +5030,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::EnumValueOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5049,11 +5053,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::EnumValueOptions) { return MergeFrom((self::EnumValueOptions) other); } else { @@ -5062,17 +5062,17 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::EnumValueOptions other) { + public override Builder MergeFrom(self::EnumValueOptions other) { if (other == self::EnumValueOptions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5172,12 +5172,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::ServiceOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::ServiceOptions.CreateBuilder() internal Builder() {} @@ -5187,12 +5191,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::ServiceOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5210,11 +5214,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::ServiceOptions) { return MergeFrom((self::ServiceOptions) other); } else { @@ -5223,17 +5223,17 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::ServiceOptions other) { + public override Builder MergeFrom(self::ServiceOptions other) { if (other == self::ServiceOptions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { @@ -5333,12 +5333,16 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } public static Builder CreateBuilder() { return new Builder(); } - public override IBuilder CreateBuilderForType() { return new Builder(); } + public override Builder CreateBuilderForType() { return new Builder(); } public static Builder CreateBuilder(self::MethodOptions prototype) { return (Builder) new Builder().MergeFrom(prototype); } public sealed partial class Builder : pb::GeneratedBuilder { + protected override Builder ThisBuilder { + get { return this; } + } + // Construct using self::MethodOptions.CreateBuilder() internal Builder() {} @@ -5348,12 +5352,12 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return result; } } - public override IBuilder Clear() { + public override Builder Clear() { result = new self::MethodOptions(); return this; } - public override IBuilder Clone() { + public override Builder Clone() { return new Builder().MergeFrom(result); } @@ -5371,11 +5375,7 @@ namespace Google.ProtocolBuffers.DescriptorProtos { return returnMe; } - protected override IBuilder MergeFromImpl(CodedInputStream data, ExtensionRegistry extensionRegistry) { - return MergeFrom(data, extensionRegistry); - } - - public override IBuilder MergeFrom(pb::IMessage other) { + public override Builder MergeFrom(pb::IMessage other) { if (other is self::MethodOptions) { return MergeFrom((self::MethodOptions) other); } else { @@ -5384,17 +5384,17 @@ namespace Google.ProtocolBuffers.DescriptorProtos { } } - public override IBuilder MergeFrom(self::MethodOptions other) { + public override Builder MergeFrom(self::MethodOptions other) { if (other == self::MethodOptions.DefaultInstance) return this; this.MergeUnknownFields(other.UnknownFields); return this; } - public override IBuilder MergeFrom(pb::CodedInputStream input) { + public override Builder MergeFrom(pb::CodedInputStream input) { return MergeFrom(input, pb::ExtensionRegistry.Empty); } - public override IBuilder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(pb::CodedInputStream input, pb::ExtensionRegistry extensionRegistry) { pb::UnknownFieldSet.Builder unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); while (true) { diff --git a/csharp/ProtocolBuffers/DynamicMessage.cs b/csharp/ProtocolBuffers/DynamicMessage.cs index 675c4c18..9690981e 100644 --- a/csharp/ProtocolBuffers/DynamicMessage.cs +++ b/csharp/ProtocolBuffers/DynamicMessage.cs @@ -10,7 +10,7 @@ namespace Google.ProtocolBuffers { /// An implementation of IMessage that can represent arbitrary types, given a MessageaDescriptor. /// TODO: Implement appropriate generics. /// - public class DynamicMessage : AbstractMessage { + public class DynamicMessage : AbstractMessage { private readonly MessageDescriptor type; private readonly FieldSet fields; @@ -42,8 +42,8 @@ namespace Google.ProtocolBuffers { /// Parses a message of the given type from the given stream. /// public static DynamicMessage ParseFrom(MessageDescriptor type, CodedInputStream input) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(input); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(input); return dynamicBuilder.BuildParsed(); } @@ -56,8 +56,8 @@ namespace Google.ProtocolBuffers { /// /// public static DynamicMessage ParseFrom(MessageDescriptor type, CodedInputStream input, ExtensionRegistry extensionRegistry) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder) builder.MergeFrom(input, extensionRegistry); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(input, extensionRegistry); return dynamicBuilder.BuildParsed(); } @@ -65,8 +65,8 @@ namespace Google.ProtocolBuffers { /// Parses a message of the given type from the given stream. /// public static DynamicMessage ParseFrom(MessageDescriptor type, Stream input) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(input); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(input); return dynamicBuilder.BuildParsed(); } @@ -78,8 +78,8 @@ namespace Google.ProtocolBuffers { /// /// public static DynamicMessage ParseFrom(MessageDescriptor type, Stream input, ExtensionRegistry extensionRegistry) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(input, extensionRegistry); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(input, extensionRegistry); return dynamicBuilder.BuildParsed(); } @@ -87,8 +87,8 @@ namespace Google.ProtocolBuffers { /// Parse as a message of the given type and return it. /// public static DynamicMessage ParseFrom(MessageDescriptor type, ByteString data) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(data); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(data); return dynamicBuilder.BuildParsed(); } @@ -96,8 +96,8 @@ namespace Google.ProtocolBuffers { /// Parse as a message of the given type and return it. /// public static DynamicMessage ParseFrom(MessageDescriptor type, ByteString data, ExtensionRegistry extensionRegistry) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(data, extensionRegistry); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(data, extensionRegistry); return dynamicBuilder.BuildParsed(); } @@ -106,8 +106,8 @@ namespace Google.ProtocolBuffers { /// Parse as a message of the given type and return it. /// public static DynamicMessage ParseFrom(MessageDescriptor type, byte[] data) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(data); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(data); return dynamicBuilder.BuildParsed(); } @@ -115,8 +115,8 @@ namespace Google.ProtocolBuffers { /// Parse as a message of the given type and return it. /// public static DynamicMessage ParseFrom(MessageDescriptor type, byte[] data, ExtensionRegistry extensionRegistry) { - IBuilder builder = CreateBuilder(type); - Builder dynamicBuilder = (Builder)builder.MergeFrom(data, extensionRegistry); + Builder builder = CreateBuilder(type); + Builder dynamicBuilder = builder.MergeFrom(data, extensionRegistry); return dynamicBuilder.BuildParsed(); } @@ -134,7 +134,7 @@ namespace Google.ProtocolBuffers { /// /// public static Builder CreateBuilder(IMessage prototype) { - return (Builder) new Builder(prototype.DescriptorForType).MergeFrom(prototype); + return new Builder(prototype.DescriptorForType).MergeFrom(prototype); } // ----------------------------------------------------------------- @@ -144,7 +144,7 @@ namespace Google.ProtocolBuffers { get { return type; } } - protected override IMessage DefaultInstanceForTypeImpl { + public override DynamicMessage DefaultInstanceForType { get { return GetDefaultInstance(type); } } @@ -214,7 +214,7 @@ namespace Google.ProtocolBuffers { } } - protected override IBuilder CreateBuilderForTypeImpl() { + public override Builder CreateBuilderForType() { return new Builder(type); } @@ -227,7 +227,7 @@ namespace Google.ProtocolBuffers { } } - public class Builder : AbstractBuilder { + public class Builder : AbstractBuilder { private readonly MessageDescriptor type; private FieldSet fields; private UnknownFieldSet unknownFields; @@ -238,16 +238,16 @@ namespace Google.ProtocolBuffers { this.unknownFields = UnknownFieldSet.DefaultInstance; } - public DynamicMessage Build() { - return (DynamicMessage)((IBuilder)this).Build(); + protected override Builder ThisBuilder { + get { return this; } } - public override IBuilder Clear() { + public override Builder Clear() { fields.Clear(); return this; } - public override IBuilder MergeFrom(IMessage other) { + public override Builder MergeFrom(IMessage other) { if (other.DescriptorForType != type) { throw new ArgumentException("MergeFrom(IMessage) can only merge messages of the same type."); } @@ -255,11 +255,19 @@ namespace Google.ProtocolBuffers { return this; } - protected override IMessage BuildImpl() { + public override Builder MergeFrom(DynamicMessage other) { + if (other.DescriptorForType != type) { + throw new ArgumentException("MergeFrom(IMessage) can only merge messages of the same type."); + } + fields.MergeFrom(other); + return this; + } + + public override DynamicMessage Build() { if (!IsInitialized) { throw new UninitializedMessageException(new DynamicMessage(type, fields, unknownFields)); } - return BuildPartialImpl(); + return BuildPartial(); } /// @@ -271,10 +279,10 @@ namespace Google.ProtocolBuffers { if (!IsInitialized) { throw new UninitializedMessageException(new DynamicMessage(type, fields, unknownFields)).AsInvalidProtocolBufferException(); } - return (DynamicMessage) BuildPartialImpl(); + return BuildPartial(); } - protected override IMessage BuildPartialImpl() { + public override DynamicMessage BuildPartial() { fields.MakeImmutable(); DynamicMessage result = new DynamicMessage(type, fields, unknownFields); fields = null; @@ -282,7 +290,7 @@ namespace Google.ProtocolBuffers { return result; } - protected override IBuilder CloneImpl() { + public override Builder Clone() { Builder result = new Builder(type); result.fields.MergeFrom(fields); return result; @@ -292,7 +300,7 @@ namespace Google.ProtocolBuffers { get { return fields.IsInitializedWithRespectTo(type); } } - protected override IBuilder MergeFromImpl(CodedInputStream input, ExtensionRegistry extensionRegistry) { + public override Builder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry) { UnknownFieldSet.Builder unknownFieldsBuilder = UnknownFieldSet.CreateBuilder(unknownFields); FieldSet.MergeFrom(input, unknownFieldsBuilder, extensionRegistry, this); unknownFields = unknownFieldsBuilder.Build(); @@ -303,7 +311,7 @@ namespace Google.ProtocolBuffers { get { return type; } } - protected override IMessage DefaultInstanceForTypeImpl { + public override DynamicMessage DefaultInstanceForType { get { return GetDefaultInstance(type); } } @@ -316,7 +324,7 @@ namespace Google.ProtocolBuffers { if (field.MappedType != MappedType.Message) { throw new ArgumentException("CreateBuilderForField is only valid for fields with message type."); } - return new Builder(field.MessageType); + return new Builder(field.MessageType); } public override bool HasField(FieldDescriptor field) { @@ -350,7 +358,7 @@ namespace Google.ProtocolBuffers { } } - protected override IBuilder ClearFieldImpl(FieldDescriptor field) { + public override Builder ClearField(FieldDescriptor field) { VerifyContainingType(field); fields.ClearField(field); return this; @@ -361,7 +369,7 @@ namespace Google.ProtocolBuffers { return fields.GetRepeatedFieldCount(field); } - protected override IBuilder AddRepeatedFieldImpl(FieldDescriptor field, object value) { + public override Builder AddRepeatedField(FieldDescriptor field, object value) { VerifyContainingType(field); fields.AddRepeatedField(field, value); return this; diff --git a/csharp/ProtocolBuffers/ExtendableBuilder.cs b/csharp/ProtocolBuffers/ExtendableBuilder.cs index 0c96ace6..b55d4b99 100644 --- a/csharp/ProtocolBuffers/ExtendableBuilder.cs +++ b/csharp/ProtocolBuffers/ExtendableBuilder.cs @@ -13,57 +13,55 @@ namespace Google.ProtocolBuffers { /// /// Checks if a singular extension is present /// - public bool HasExtension(GeneratedExtensionBase extension) { + public bool HasExtension(GeneratedExtensionBase extension) { return MessageBeingBuilt.HasExtension(extension); } /// /// Returns the number of elements in a repeated extension. /// - public int GetExtensionCount(GeneratedExtensionBase> extension) { + public int GetExtensionCount(GeneratedExtensionBase> extension) { return MessageBeingBuilt.GetExtensionCount(extension); } /// /// Returns the value of an extension. /// - public TExtension GetExtension(GeneratedExtensionBase extension) { + public TExtension GetExtension(GeneratedExtensionBase extension) { return MessageBeingBuilt.GetExtension(extension); } /// /// Returns one element of a repeated extension. /// - public TExtension GetExtension(GeneratedExtensionBase> extension, int index) { + public TExtension GetExtension(GeneratedExtensionBase> extension, int index) { return MessageBeingBuilt.GetExtension(extension, index); } /// /// Sets the value of an extension. /// - public ExtendableBuilder SetExtension(GeneratedExtensionBase extension, TExtension value) { + public TBuilder SetExtension(GeneratedExtensionBase extension, TExtension value) { ExtendableMessage message = MessageBeingBuilt; message.VerifyExtensionContainingType(extension); message.Extensions[extension.Descriptor] = extension.ToReflectionType(value); - return this; + return ThisBuilder; } /// /// Sets the value of one element of a repeated extension. /// - public ExtendableBuilder SetExtension( - GeneratedExtensionBase> extension, int index, TExtension value) { + public TBuilder SetExtension(GeneratedExtensionBase> extension, int index, TExtension value) { ExtendableMessage message = MessageBeingBuilt; message.VerifyExtensionContainingType(extension); message.Extensions[extension.Descriptor, index] = extension.SingularToReflectionType(value); - return this; + return ThisBuilder; } /// /// Appends a value to a repeated extension. /// - public ExtendableBuilder AddExtension( - GeneratedExtensionBase> extension, TExtension value) { + public ExtendableBuilder AddExtension(GeneratedExtensionBase> extension, TExtension value) { ExtendableMessage message = MessageBeingBuilt; message.VerifyExtensionContainingType(extension); message.Extensions.AddRepeatedField(extension.Descriptor, extension.SingularToReflectionType(value)); @@ -73,8 +71,7 @@ namespace Google.ProtocolBuffers { /// /// Clears an extension. /// - public ExtendableBuilder ClearExtension( - GeneratedExtensionBase extension) { + public ExtendableBuilder ClearExtension(GeneratedExtensionBase extension) { ExtendableMessage message = MessageBeingBuilt; message.VerifyExtensionContainingType(extension); message.Extensions.ClearField(extension.Descriptor); @@ -121,23 +118,23 @@ namespace Google.ProtocolBuffers { } } - public override IBuilder ClearField(FieldDescriptor field) { + public override TBuilder ClearField(FieldDescriptor field) { if (field.IsExtension) { ExtendableMessage message = MessageBeingBuilt; message.VerifyContainingType(field); message.Extensions.ClearField(field); - return this; + return ThisBuilder; } else { return base.ClearField(field); } } - public override IBuilder AddRepeatedField(FieldDescriptor field, object value) { + public override TBuilder AddRepeatedField(FieldDescriptor field, object value) { if (field.IsExtension) { ExtendableMessage message = MessageBeingBuilt; message.VerifyContainingType(field); message.Extensions.AddRepeatedField(field, value); - return this; + return ThisBuilder; } else { return base.AddRepeatedField(field, value); } diff --git a/csharp/ProtocolBuffers/ExtendableMessage.cs b/csharp/ProtocolBuffers/ExtendableMessage.cs index 0a2d0317..60d0d583 100644 --- a/csharp/ProtocolBuffers/ExtendableMessage.cs +++ b/csharp/ProtocolBuffers/ExtendableMessage.cs @@ -5,9 +5,9 @@ using Google.ProtocolBuffers.Descriptors; using Google.ProtocolBuffers.Collections; namespace Google.ProtocolBuffers { - public abstract class ExtendableMessage : GeneratedMessage + public abstract class ExtendableMessage : GeneratedMessage where TMessage : GeneratedMessage - where TBuilder : IBuilder { + where TBuilder : GeneratedBuilder { protected ExtendableMessage() {} private readonly FieldSet extensions = FieldSet.CreateFieldSet(); @@ -22,21 +22,21 @@ namespace Google.ProtocolBuffers { /// /// Checks if a singular extension is present. /// - public bool HasExtension(GeneratedExtensionBase extension) { + public bool HasExtension(GeneratedExtensionBase extension) { return extensions.HasField(extension.Descriptor); } /// /// Returns the number of elements in a repeated extension. /// - public int GetExtensionCount(GeneratedExtensionBase> extension) { + public int GetExtensionCount(GeneratedExtensionBase> extension) { return extensions.GetRepeatedFieldCount(extension.Descriptor); } /// /// Returns the value of an extension. /// - public TExtension GetExtension(GeneratedExtensionBase extension) { + public TExtension GetExtension(GeneratedExtensionBase extension) { object value = extensions[extension.Descriptor]; if (value == null) { return (TExtension) extension.MessageDefaultInstance; @@ -48,7 +48,7 @@ namespace Google.ProtocolBuffers { /// /// Returns one element of a repeated extension. /// - public TExtension GetExtension(GeneratedExtensionBase> extension, int index) { + public TExtension GetExtension(GeneratedExtensionBase> extension, int index) { return (TExtension) extension.SingularFromReflectionType(extensions[extension.Descriptor, index]); } @@ -169,7 +169,7 @@ namespace Google.ProtocolBuffers { get { return extensions.SerializedSize; } } - internal void VerifyExtensionContainingType(GeneratedExtensionBase extension) { + internal void VerifyExtensionContainingType(GeneratedExtensionBase extension) { if (extension.Descriptor.ContainingType != DescriptorForType) { // This can only happen if someone uses unchecked operations. throw new ArgumentException("Extension is for type \"" + extension.Descriptor.ContainingType.FullName diff --git a/csharp/ProtocolBuffers/ExtensionRegistry.cs b/csharp/ProtocolBuffers/ExtensionRegistry.cs index c8f31d37..c9e05308 100644 --- a/csharp/ProtocolBuffers/ExtensionRegistry.cs +++ b/csharp/ProtocolBuffers/ExtensionRegistry.cs @@ -88,8 +88,7 @@ namespace Google.ProtocolBuffers { /// /// Add an extension from a generated file to the registry. /// - public void Add (GeneratedExtensionBase extension) - where TContainer : IMessage { + public void Add (GeneratedExtensionBase extension) { if (extension.Descriptor.MappedType == MappedType.Message) { Add(new ExtensionInfo(extension.Descriptor, extension.MessageDefaultInstance)); } else { diff --git a/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs index 18da75c4..92cc2c94 100644 --- a/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs @@ -40,7 +40,7 @@ namespace Google.ProtocolBuffers.FieldAccess { // No... so let's create a builder of the right type, and merge the value in. IMessage message = (IMessage) value; - return CreateBuilder().MergeFrom(message).Build(); + return CreateBuilder().WeakMergeFrom(message).WeakBuild(); } public override void SetRepeated(IBuilder builder, int index, object value) { diff --git a/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs index 20e1ba13..8bdf95d1 100644 --- a/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs @@ -38,7 +38,7 @@ namespace Google.ProtocolBuffers.FieldAccess { // No... so let's create a builder of the right type, and merge the value in. IMessage message = (IMessage) value; - return CreateBuilder().MergeFrom(message).Build(); + return CreateBuilder().WeakMergeFrom(message).WeakBuild(); } public override void SetValue(IBuilder builder, object value) { diff --git a/csharp/ProtocolBuffers/FieldSet.cs b/csharp/ProtocolBuffers/FieldSet.cs index 4f660533..79394ca4 100644 --- a/csharp/ProtocolBuffers/FieldSet.cs +++ b/csharp/ProtocolBuffers/FieldSet.cs @@ -154,19 +154,19 @@ namespace Google.ProtocolBuffers { case FieldType.Message: { IBuilder subBuilder; if (defaultFieldInstance != null) { - subBuilder = defaultFieldInstance.CreateBuilderForType(); + subBuilder = defaultFieldInstance.WeakCreateBuilderForType(); } else { subBuilder = builder.CreateBuilderForField(field); } if (!field.IsRepeated) { - subBuilder.MergeFrom((IMessage) builder[field]); + subBuilder.WeakMergeFrom((IMessage) builder[field]); } if (field.FieldType == FieldType.Group) { input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry); } else { input.ReadMessage(subBuilder, extensionRegistry); } - value = subBuilder.Build(); + value = subBuilder.WeakBuild(); break; } case FieldType.Enum: { @@ -185,7 +185,7 @@ namespace Google.ProtocolBuffers { break; } if (field.IsRepeated) { - builder.AddRepeatedField(field, value); + builder.WeakAddRepeatedField(field, value); } else { builder[field] = value; } @@ -236,16 +236,16 @@ namespace Google.ProtocolBuffers { ExtensionInfo extension = extensionRegistry[type, typeId]; if (extension != null) { field = extension.Descriptor; - subBuilder = extension.DefaultInstance.CreateBuilderForType(); + subBuilder = extension.DefaultInstance.WeakCreateBuilderForType(); IMessage originalMessage = (IMessage) builder[field]; if (originalMessage != null) { - subBuilder.MergeFrom(originalMessage); + subBuilder.WeakMergeFrom(originalMessage); } if (rawBytes != null) { // We already encountered the message. Parse it now. // TODO(jonskeet): Check this is okay. It's subtly different from the Java, as it doesn't create an input stream from rawBytes. // In fact, why don't we just call MergeFrom(rawBytes)? And what about the extension registry? - subBuilder.MergeFrom(rawBytes.CreateCodedInput()); + subBuilder.WeakMergeFrom(rawBytes.CreateCodedInput()); rawBytes = null; } } else { @@ -286,7 +286,7 @@ namespace Google.ProtocolBuffers { input.CheckLastTagWas(WireFormat.MessageSetTag.ItemEnd); if (subBuilder != null) { - builder[field] = subBuilder.Build(); + builder[field] = subBuilder.WeakBuild(); } } @@ -381,7 +381,7 @@ namespace Google.ProtocolBuffers { } /// - /// See + /// See /// internal void AddRepeatedField(FieldDescriptor field, object value) { if (!field.IsRepeated) { @@ -449,7 +449,7 @@ namespace Google.ProtocolBuffers { } /// - /// See + /// See /// public void ClearField(FieldDescriptor field) { fields.Remove(field); @@ -495,10 +495,10 @@ namespace Google.ProtocolBuffers { } } else if (field.MappedType == MappedType.Message && existingValue != null) { IMessage existingMessage = (IMessage)existingValue; - IMessage merged = existingMessage.CreateBuilderForType() - .MergeFrom(existingMessage) - .MergeFrom((IMessage)entry.Value) - .Build(); + IMessage merged = existingMessage.WeakCreateBuilderForType() + .WeakMergeFrom(existingMessage) + .WeakMergeFrom((IMessage) entry.Value) + .WeakBuild(); this[field] = merged; } else { this[field] = entry.Value; diff --git a/csharp/ProtocolBuffers/GeneratedBuilder.cs b/csharp/ProtocolBuffers/GeneratedBuilder.cs index a4114b5d..72ecfd40 100644 --- a/csharp/ProtocolBuffers/GeneratedBuilder.cs +++ b/csharp/ProtocolBuffers/GeneratedBuilder.cs @@ -13,9 +13,9 @@ namespace Google.ProtocolBuffers { /// most of the IBuilder interface using reflection. Users can ignore this class /// as an implementation detail. /// - public abstract class GeneratedBuilder : AbstractBuilder, IBuilder + public abstract class GeneratedBuilder : AbstractBuilder where TMessage : GeneratedMessage - where TBuilder : GeneratedBuilder, IBuilder { + where TBuilder : GeneratedBuilder { /// /// Returns the message being built at the moment. @@ -43,7 +43,7 @@ namespace Google.ProtocolBuffers { : MessageBeingBuilt[field]; } set { - InternalFieldAccessors[field].SetValue(this, value); + InternalFieldAccessors[field].SetValue(ThisBuilder, value); } } @@ -87,40 +87,16 @@ namespace Google.ProtocolBuffers { return MessageBeingBuilt.HasField(field); } - protected override IMessage BuildImpl() { - return Build(); - } - - protected override IMessage BuildPartialImpl() { - return BuildPartial(); - } - - protected override IBuilder CloneImpl() { - return Clone(); - } - - protected override IMessage DefaultInstanceForTypeImpl { - get { return DefaultInstanceForType; } - } - public override IBuilder CreateBuilderForField(FieldDescriptor field) { return InternalFieldAccessors[field].CreateBuilder(); } - protected override IBuilder ClearFieldImpl(FieldDescriptor field) { - return ClearField(field); - } - - protected override IBuilder AddRepeatedFieldImpl(FieldDescriptor field, object value) { - return AddRepeatedField(field, value); - } - - public virtual IBuilder ClearField(FieldDescriptor field) { + public override TBuilder ClearField(FieldDescriptor field) { InternalFieldAccessors[field].Clear(this); - return this; + return ThisBuilder; } - public virtual IBuilder MergeFrom(TMessage other) { + public override TBuilder MergeFrom(TMessage other) { if (other.DescriptorForType != InternalFieldAccessors.Descriptor) { throw new ArgumentException("Message type mismatch"); } @@ -135,77 +111,31 @@ namespace Google.ProtocolBuffers { } else if (field.MappedType == MappedType.Message && HasField(field)) { // Merge singular embedded messages IMessage oldValue = (IMessage)this[field]; - this[field] = oldValue.CreateBuilderForType() - .MergeFrom(oldValue) - .MergeFrom((IMessage)entry.Value) - .BuildPartial(); + this[field] = oldValue.WeakCreateBuilderForType() + .WeakMergeFrom(oldValue) + .WeakMergeFrom((IMessage)entry.Value) + .WeakBuildPartial(); } else { // Just overwrite this[field] = entry.Value; } } - return this; + return ThisBuilder; } - public virtual IBuilder MergeUnknownFields(UnknownFieldSet unknownFields) { + public override TBuilder MergeUnknownFields(UnknownFieldSet unknownFields) { TMessage result = MessageBeingBuilt; result.SetUnknownFields(UnknownFieldSet.CreateBuilder(result.UnknownFields) .MergeFrom(unknownFields) .Build()); - return this; + return ThisBuilder; } - public virtual IBuilder AddRepeatedField(FieldDescriptor field, object value) { + public override TBuilder AddRepeatedField(FieldDescriptor field, object value) { InternalFieldAccessors[field].AddRepeated(this, value); - return this; - } - - public IBuilder MergeFrom(ByteString data) { - ((IBuilder) this).MergeFrom(data); - return this; - } - - public IBuilder MergeFrom(ByteString data, ExtensionRegistry extensionRegistry) { - ((IBuilder) this).MergeFrom(data, extensionRegistry); - return this; - } - - public IBuilder MergeFrom(byte[] data) { - ((IBuilder) this).MergeFrom(data); - return this; - } - - public IBuilder MergeFrom(byte[] data, ExtensionRegistry extensionRegistry) { - ((IBuilder) this).MergeFrom(data, extensionRegistry); - return this; - } - - public IBuilder MergeFrom(Stream input) { - ((IBuilder) this).MergeFrom(input); - return this; - } - - public IBuilder MergeFrom(Stream input, ExtensionRegistry extensionRegistry) { - ((IBuilder) this).MergeFrom(input, extensionRegistry); - return this; + return ThisBuilder; } - /// - /// Overridden when optimized for speed. - /// - public virtual IBuilder MergeFrom(CodedInputStream input) { - ((IBuilder)this).MergeFrom(input); - return this; - } - - /// - /// Overridden when optimized for speed. - /// - public virtual IBuilder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry) { - ((IBuilder)this).MergeFrom(input, extensionRegistry); - return this; - } - /// /// Like Build(), but will wrap UninitializedMessageException in /// InvalidProtocolBufferException. @@ -219,10 +149,10 @@ namespace Google.ProtocolBuffers { } /// - /// Implementation of . + /// Implementation of . /// TODO(jonskeet): This used to be generated for each class. Find out why. /// - public TMessage Build() { + public override TMessage Build() { if (!IsInitialized) { throw new UninitializedMessageException(MessageBeingBuilt); } @@ -233,13 +163,5 @@ namespace Google.ProtocolBuffers { get { return MessageBeingBuilt.UnknownFields; } set { MessageBeingBuilt.SetUnknownFields(value); } } - - public abstract TMessage BuildPartial(); - public abstract IBuilder Clone(); - public abstract new IBuilder Clear(); - public abstract TMessage DefaultInstanceForType { get; } - - public abstract class ExtendableBuilder : GeneratedBuilder { - } } } diff --git a/csharp/ProtocolBuffers/GeneratedExtensionBase.cs b/csharp/ProtocolBuffers/GeneratedExtensionBase.cs index 2ab6d7a6..028dc76a 100644 --- a/csharp/ProtocolBuffers/GeneratedExtensionBase.cs +++ b/csharp/ProtocolBuffers/GeneratedExtensionBase.cs @@ -29,7 +29,7 @@ namespace Google.ProtocolBuffers { /// The interface implemented by both GeneratedException and GeneratedRepeatException, /// to make it easier to cope with repeats separately. /// - public abstract class GeneratedExtensionBase { + public abstract class GeneratedExtensionBase { private readonly FieldDescriptor descriptor; private readonly IMessage messageDefaultInstance; @@ -73,8 +73,8 @@ namespace Google.ProtocolBuffers { // GeneratedExtension manually and gives it a different type. // This should not happen in normal use. But, to be nice, we'll // copy the message to whatever type the caller was expecting. - return MessageDefaultInstance.CreateBuilderForType() - .MergeFrom((IMessage)value).Build(); + return MessageDefaultInstance.WeakCreateBuilderForType() + .WeakMergeFrom((IMessage)value).WeakBuild(); } case MappedType.Enum: // Just return a boxed int - that can be unboxed to the enum diff --git a/csharp/ProtocolBuffers/GeneratedMessage.cs b/csharp/ProtocolBuffers/GeneratedMessage.cs index 37fd2e6b..0bdf0e3f 100644 --- a/csharp/ProtocolBuffers/GeneratedMessage.cs +++ b/csharp/ProtocolBuffers/GeneratedMessage.cs @@ -13,9 +13,9 @@ namespace Google.ProtocolBuffers { /// most of the IMessage interface using reflection. Users /// can ignore this class as an implementation detail. /// - public abstract class GeneratedMessage : AbstractMessage, IMessage + public abstract class GeneratedMessage : AbstractMessage where TMessage : GeneratedMessage - where TBuilder : IBuilder { + where TBuilder : GeneratedBuilder { private UnknownFieldSet unknownFields = UnknownFieldSet.DefaultInstance; @@ -29,18 +29,6 @@ namespace Google.ProtocolBuffers { get { return InternalFieldAccessors.Descriptor; } } - protected override IMessage DefaultInstanceForTypeImpl { - get { return DefaultInstanceForType; } - } - - protected override IBuilder CreateBuilderForTypeImpl() { - return CreateBuilderForType(); - } - - public abstract TMessage DefaultInstanceForType { get; } - - public abstract IBuilder CreateBuilderForType(); - internal IDictionary GetMutableFieldMap() { // Use a SortedList so we'll end up serializing fields in order diff --git a/csharp/ProtocolBuffers/GeneratedRepeatException.cs b/csharp/ProtocolBuffers/GeneratedRepeatException.cs index a38f5c1b..f7dee511 100644 --- a/csharp/ProtocolBuffers/GeneratedRepeatException.cs +++ b/csharp/ProtocolBuffers/GeneratedRepeatException.cs @@ -7,15 +7,15 @@ namespace Google.ProtocolBuffers { /// /// Class used to represent repeat extensions in generated classes. /// - public class GeneratedRepeatExtension : GeneratedExtensionBase> { + public class GeneratedRepeatExtension : GeneratedExtensionBase> { private GeneratedRepeatExtension(FieldDescriptor field) : base(field, typeof(TExtensionElement)) { } - public static GeneratedExtensionBase> CreateInstance(FieldDescriptor descriptor) { + public static GeneratedExtensionBase> CreateInstance(FieldDescriptor descriptor) { if (!descriptor.IsRepeated) { throw new ArgumentException("Must call GeneratedRepeatExtension.CreateInstance() for repeated types."); } - return new GeneratedRepeatExtension(descriptor); + return new GeneratedRepeatExtension(descriptor); } /// diff --git a/csharp/ProtocolBuffers/GeneratedSingleExtension.cs b/csharp/ProtocolBuffers/GeneratedSingleExtension.cs index 0adcd7ef..d9a0adcf 100644 --- a/csharp/ProtocolBuffers/GeneratedSingleExtension.cs +++ b/csharp/ProtocolBuffers/GeneratedSingleExtension.cs @@ -6,17 +6,15 @@ namespace Google.ProtocolBuffers { /// /// Generated extension for a singular field. /// - public class GeneratedSingleExtension : GeneratedExtensionBase - where TContainer : IMessage { - + public class GeneratedSingleExtension : GeneratedExtensionBase { internal GeneratedSingleExtension(FieldDescriptor descriptor) : base(descriptor, typeof(TExtension)) { } - public static GeneratedSingleExtension CreateInstance(FieldDescriptor descriptor) { + public static GeneratedSingleExtension CreateInstance(FieldDescriptor descriptor) { if (descriptor.IsRepeated) { throw new ArgumentException("Must call GeneratedRepeateExtension.CreateInstance() for repeated types."); } - return new GeneratedSingleExtension(descriptor); + return new GeneratedSingleExtension(descriptor); } public override object FromReflectionType(object value) { diff --git a/csharp/ProtocolBuffers/IBuilder.cs b/csharp/ProtocolBuffers/IBuilder.cs index dcb3d272..1671c84e 100644 --- a/csharp/ProtocolBuffers/IBuilder.cs +++ b/csharp/ProtocolBuffers/IBuilder.cs @@ -44,12 +44,18 @@ namespace Google.ProtocolBuffers { /// /// Allows getting and setting of a field. - /// + /// /// /// /// object this[FieldDescriptor field] { get; set; } + /// + /// Get the message's type's descriptor. + /// + /// + MessageDescriptor DescriptorForType { get; } + /// /// Only present in the nongeneric interface - useful for tests, but /// not as much in real life. @@ -63,13 +69,7 @@ namespace Google.ProtocolBuffers { IBuilder SetRepeatedField(FieldDescriptor field, int index, object value); /// - /// Get the message's type's descriptor. - /// - /// - MessageDescriptor DescriptorForType { get; } - - /// - /// + /// /// /// /// @@ -77,39 +77,40 @@ namespace Google.ProtocolBuffers { /// /// Allows getting and setting of a repeated field value. - /// + /// /// object this[FieldDescriptor field, int index] { get; set; } /// - /// + /// /// bool HasField(FieldDescriptor field); /// - /// + /// /// UnknownFieldSet UnknownFields { get; set; } - #region Non-generic versions of generic methods in IBuilder - IBuilder Clear(); - IBuilder MergeFrom(IMessage other); - IMessage Build(); - IMessage BuildPartial(); - IBuilder Clone(); - IBuilder MergeFrom(CodedInputStream input); - IBuilder MergeFrom(CodedInputStream codedInputStream, ExtensionRegistry extensionRegistry); - IMessage DefaultInstanceForType { get; } + /// + /// Create a builder for messages of the appropriate type for the given field. + /// Messages built with this can then be passed to the various mutation properties + /// and methods. + /// IBuilder CreateBuilderForField(FieldDescriptor field); - IBuilder ClearField(FieldDescriptor field); - IBuilder AddRepeatedField(FieldDescriptor field, object value); - IBuilder MergeUnknownFields(UnknownFieldSet unknownFields); - IBuilder MergeFrom(ByteString data); - IBuilder MergeFrom(ByteString data, ExtensionRegistry extensionRegistry); - IBuilder MergeFrom(byte[] data); - IBuilder MergeFrom(byte[] data, ExtensionRegistry extensionRegistry); - IBuilder MergeFrom(Stream input); - IBuilder MergeFrom(Stream input, ExtensionRegistry extensionRegistry); + + #region Methods which are like those of the generic form, but without any knowledge of the type parameters + IBuilder WeakAddRepeatedField(FieldDescriptor field, object value); + IBuilder WeakClear(); + IBuilder WeakClearField(FieldDescriptor field); + IBuilder WeakMergeFrom(IMessage message); + IBuilder WeakMergeFrom(ByteString data); + IBuilder WeakMergeFrom(ByteString data, ExtensionRegistry registry); + IBuilder WeakMergeFrom(CodedInputStream input); + IBuilder WeakMergeFrom(CodedInputStream input, ExtensionRegistry registry); + IMessage WeakBuild(); + IMessage WeakBuildPartial(); + IBuilder WeakClone(); + IMessage WeakDefaultInstanceForType { get; } #endregion } @@ -117,12 +118,15 @@ namespace Google.ProtocolBuffers { /// Interface implemented by Protocol Message builders. /// TODO(jonskeet): Consider "SetXXX" methods returning the builder, as well as the properties. /// - /// Type of message - public interface IBuilder : IBuilder where T : IMessage { + /// Type of message + /// Type of builder + public interface IBuilder : IBuilder + where TMessage : IMessage + where TBuilder : IBuilder { /// /// Resets all fields to their default values. /// - new IBuilder Clear(); + TBuilder Clear(); /// /// Merge the specified other message into the message being @@ -137,7 +141,13 @@ namespace Google.ProtocolBuffers { /// /// /// - IBuilder MergeFrom(T other); + TBuilder MergeFrom(TMessage other); + + /// + /// Merge the specified other message which may be a different implementation of + /// the same message descriptor. + /// + TBuilder MergeFrom(IMessage other); /// /// Constructs the final message. Once this is called, this Builder instance @@ -148,19 +158,19 @@ namespace Google.ProtocolBuffers { /// the message /// is missing one or more required fields; use BuildPartial to bypass /// this check - new T Build(); + TMessage Build(); /// /// Like Build(), but does not throw an exception if the message is missing /// required fields. Instead, a partial message is returned. /// - new T BuildPartial(); + TMessage BuildPartial(); /// /// Clones this builder. /// TODO(jonskeet): Explain depth of clone. /// - new IBuilder Clone(); + TBuilder Clone(); /// /// Parses a message of this type from the input and merges it with this @@ -181,7 +191,7 @@ namespace Google.ProtocolBuffers { /// Use BuildPartial to build, which ignores missing required fields. /// /// - new IBuilder MergeFrom(CodedInputStream input); + TBuilder MergeFrom(CodedInputStream input); /// /// Like MergeFrom(CodedInputStream), but also parses extensions. @@ -189,20 +199,13 @@ namespace Google.ProtocolBuffers { /// in . Extensions not in the registry /// will be treated as unknown fields. /// - new IBuilder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry); + TBuilder MergeFrom(CodedInputStream input, ExtensionRegistry extensionRegistry); /// /// Get's the message's type's default instance. - /// - /// - new T DefaultInstanceForType { get; } - - /// - /// Create a builder for messages of the appropriate type for the given field. - /// Messages built with this can then be passed to the various mutation properties - /// and methods. + /// /// - //new IBuilder NewBuilderForField(FieldDescriptor field) where TField : IMessage; + TMessage DefaultInstanceForType { get; } /// /// Clears the field. This is exactly equivalent to calling the generated @@ -210,7 +213,7 @@ namespace Google.ProtocolBuffers { /// /// /// - new IBuilder ClearField(FieldDescriptor field); + TBuilder ClearField(FieldDescriptor field); /// /// Appends the given value as a new element for the specified repeated field. @@ -219,12 +222,12 @@ namespace Google.ProtocolBuffers { /// the field does not belong to this builder's type, or the value is /// of the incorrect type /// - new IBuilder AddRepeatedField(FieldDescriptor field, object value); + TBuilder AddRepeatedField(FieldDescriptor field, object value); /// /// Merge some unknown fields into the set for this message. /// - new IBuilder MergeUnknownFields(UnknownFieldSet unknownFields); + TBuilder MergeUnknownFields(UnknownFieldSet unknownFields); #region Convenience methods // TODO(jonskeet): Implement these as extension methods? @@ -233,28 +236,28 @@ namespace Google.ProtocolBuffers { /// it with the message being built. This is just a small wrapper around /// MergeFrom(CodedInputStream). /// - new IBuilder MergeFrom(ByteString data); + TBuilder MergeFrom(ByteString data); /// /// Parse as a message of this type and merge /// it with the message being built. This is just a small wrapper around /// MergeFrom(CodedInputStream, ExtensionRegistry). /// - new IBuilder MergeFrom(ByteString data, ExtensionRegistry extensionRegistry); + TBuilder MergeFrom(ByteString data, ExtensionRegistry extensionRegistry); /// /// Parse as a message of this type and merge /// it with the message being built. This is just a small wrapper around /// MergeFrom(CodedInputStream). /// - new IBuilder MergeFrom(byte[] data); + TBuilder MergeFrom(byte[] data); /// /// Parse as a message of this type and merge /// it with the message being built. This is just a small wrapper around /// MergeFrom(CodedInputStream, ExtensionRegistry). /// - new IBuilder MergeFrom(byte[] data, ExtensionRegistry extensionRegistry); + TBuilder MergeFrom(byte[] data, ExtensionRegistry extensionRegistry); /// /// Parse as a message of this type and merge @@ -265,14 +268,14 @@ namespace Google.ProtocolBuffers { /// stream which limits reading. Despite usually reading the entire /// stream, this method never closes the stream. /// - new IBuilder MergeFrom(Stream input); + TBuilder MergeFrom(Stream input); /// /// Parse as a message of this type and merge /// it with the message being built. This is just a small wrapper around /// MergeFrom(CodedInputStream, ExtensionRegistry). /// - new IBuilder MergeFrom(Stream input, ExtensionRegistry extensionRegistry); + TBuilder MergeFrom(Stream input, ExtensionRegistry extensionRegistry); #endregion } } diff --git a/csharp/ProtocolBuffers/IMessage.cs b/csharp/ProtocolBuffers/IMessage.cs index abb29f72..1ce18a5c 100644 --- a/csharp/ProtocolBuffers/IMessage.cs +++ b/csharp/ProtocolBuffers/IMessage.cs @@ -21,11 +21,8 @@ using Google.ProtocolBuffers.Descriptors; namespace Google.ProtocolBuffers { /// - /// Non-generic interface implemented by all Protocol Buffers messages. - /// Some members are repeated in the generic interface but with a - /// type-specific signature. Type-safe implementations - /// are encouraged to implement these non-generic members explicitly, - /// and the generic members implicitly. + /// Non-generic interface used for all parts of the API which don't require + /// any type knowledge. /// public interface IMessage { /// @@ -152,27 +149,17 @@ namespace Google.ProtocolBuffers { void WriteTo(Stream output); #endregion - #region Weakly typed members /// - /// Returns an instance of this message type with all fields set to - /// their default values. This may or may not be a singleton. This differs - /// from the DefaultInstance property of each generated message class in that this - /// method is an abstract method of IMessage whereas DefaultInstance is - /// a static property of a specific class. They return the same thing. + /// Creates a builder for the type, but in a weakly typed manner. This + /// is typically implemented by strongly typed builders by just returning + /// the result of CreateBuilderForType. /// - IMessage DefaultInstanceForType { get; } + IBuilder WeakCreateBuilderForType(); - /// - /// Constructs a new builder for a message of the same type as this message. - /// - IBuilder CreateBuilderForType(); - #endregion + IMessage WeakDefaultInstanceForType { get; } } - /// - /// Type-safe interface for all generated messages to implement. - /// - public interface IMessage : IMessage where T : IMessage { + public interface IMessage : IMessage { /// /// Returns an instance of this message type with all fields set to /// their default values. This may or may not be a singleton. This differs @@ -180,13 +167,20 @@ namespace Google.ProtocolBuffers { /// method is an abstract method of IMessage whereas DefaultInstance is /// a static property of a specific class. They return the same thing. /// - new T DefaultInstanceForType { get; } + TMessage DefaultInstanceForType { get; } + } + /// + /// Type-safe interface for all generated messages to implement. + /// + public interface IMessage : IMessage + where TMessage : IMessage + where TBuilder : IBuilder { #region Builders /// /// Constructs a new builder for a message of the same type as this message. /// - new IBuilder CreateBuilderForType(); + TBuilder CreateBuilderForType(); #endregion } } diff --git a/csharp/ProtocolBuffers/InvalidProtocolBufferException.cs b/csharp/ProtocolBuffers/InvalidProtocolBufferException.cs index ba6950cf..48e86cc3 100644 --- a/csharp/ProtocolBuffers/InvalidProtocolBufferException.cs +++ b/csharp/ProtocolBuffers/InvalidProtocolBufferException.cs @@ -67,13 +67,13 @@ namespace Google.ProtocolBuffers { internal static InvalidProtocolBufferException RecursionLimitExceeded() { return new InvalidProtocolBufferException( "Protocol message had too many levels of nesting. May be malicious. " + - "Use CodedInputStream.setRecursionLimit() to increase the depth limit."); + "Use CodedInputStream.SetRecursionLimit() to increase the depth limit."); } internal static InvalidProtocolBufferException SizeLimitExceeded() { return new InvalidProtocolBufferException( "Protocol message was too large. May be malicious. " + - "Use CodedInputStream.setSizeLimit() to increase the size limit."); + "Use CodedInputStream.SetSizeLimit() to increase the size limit."); } } } diff --git a/csharp/ProtocolBuffers/RpcUtil.cs b/csharp/ProtocolBuffers/RpcUtil.cs index 75e6f34b..ebd3f47f 100644 --- a/csharp/ProtocolBuffers/RpcUtil.cs +++ b/csharp/ProtocolBuffers/RpcUtil.cs @@ -21,12 +21,13 @@ namespace Google.ProtocolBuffers { /// callback is given a message with a different descriptor, an /// exception will be thrown. /// - public static Action GeneralizeCallback(Action action, T defaultInstance) - where T : class, IMessage { + public static Action GeneralizeCallback(Action action, TMessage defaultInstance) + where TMessage : class, IMessage + where TBuilder : IBuilder { return message => { - T castMessage = message as T; + TMessage castMessage = message as TMessage; if (castMessage == null) { - castMessage = (T) defaultInstance.CreateBuilderForType().MergeFrom(message).Build(); + castMessage = defaultInstance.CreateBuilderForType().MergeFrom(message).Build(); } action(castMessage); }; diff --git a/csharp/ProtocolBuffers/TextFormat.cs b/csharp/ProtocolBuffers/TextFormat.cs index a9a4e1b8..46d19801 100644 --- a/csharp/ProtocolBuffers/TextFormat.cs +++ b/csharp/ProtocolBuffers/TextFormat.cs @@ -44,6 +44,7 @@ namespace Google.ProtocolBuffers { } private static void Print(IMessage message, TextGenerator generator) { + // TODO(jonskeet): Check why descriptor is never used. MessageDescriptor descriptor = message.DescriptorForType; foreach (KeyValuePair entry in message.AllFields) { PrintField(entry.Key, entry.Value, generator); -- cgit v1.2.3