From 272d384f6ad064756edc8d9778c5bcf667783821 Mon Sep 17 00:00:00 2001 From: Jon Skeet Date: Thu, 14 Aug 2008 20:37:12 +0100 Subject: Use delegates instead of dynamic reflection. --- .../TestProtos/MessageWithNoOuter.cs | 12 +- .../TestProtos/MultiFileProto.cs | 16 +- .../UnitTestEmbedOptimizeForProtoFile.cs | 14 +- .../TestProtos/UnitTestImportProtoFile.cs | 14 +- .../TestProtos/UnitTestMessageSetProtoFile.cs | 84 +++-- .../TestProtos/UnitTestOptimizeForProtoFile.cs | 14 +- .../TestProtos/UnitTestProtoFile.cs | 406 ++++++++++++--------- .../DescriptorProtos/DescriptorProtoFile.cs | 210 ++++++----- csharp/ProtocolBuffers/FieldAccess/Delegates.cs | 11 + .../FieldAccess/FieldAccessorTable.cs | 30 +- .../ProtocolBuffers/FieldAccess/IFieldAccessor.cs | 14 +- .../FieldAccess/RepeatedEnumAccessor.cs | 10 +- .../FieldAccess/RepeatedMessageAccessor.cs | 7 +- .../FieldAccess/RepeatedPrimitiveAccessor.cs | 41 ++- .../FieldAccess/SingleEnumAccessor.cs | 11 +- .../FieldAccess/SingleMessageAccessor.cs | 9 +- .../FieldAccess/SinglePrimitiveAccessor.cs | 34 +- csharp/ProtocolBuffers/GeneratedBuilder.cs | 6 +- csharp/ProtocolBuffers/GeneratedMessage.cs | 23 +- csharp/ProtocolBuffers/ProtocolBuffers.csproj | 3 + 20 files changed, 556 insertions(+), 413 deletions(-) create mode 100644 csharp/ProtocolBuffers/FieldAccess/Delegates.cs (limited to 'csharp') diff --git a/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs b/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs index dc318ce3..fc54b4ba 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/MessageWithNoOuter.cs @@ -16,11 +16,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override MessageWithNoOuter ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.MultiFileProto.internal__static_protobuf_unittest_MessageWithNoOuter__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.MultiFileProto.internal__static_protobuf_unittest_MessageWithNoOuter__FieldAccessorTable; } } @@ -40,11 +44,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override NestedMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.MultiFileProto.internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.MultiFileProto.internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs b/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs index 83bd5e51..33b719b4 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/MultiFileProto.cs @@ -64,18 +64,14 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_MessageWithNoOuter__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageWithNoOuter__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_MessageWithNoOuter__Descriptor, - new string[] { "Nested", "Foreign", "NestedEnum", "ForeignEnum", }, - typeof (global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter), - typeof (global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageWithNoOuter__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_MessageWithNoOuter__Descriptor, + new string[] { "Nested", "Foreign", "NestedEnum", "ForeignEnum", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__Descriptor = internal__static_protobuf_unittest_MessageWithNoOuter__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__Descriptor, - new string[] { "I", }, - typeof (global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter.Types.NestedMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.MessageWithNoOuter.Types.NestedMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_MessageWithNoOuter_NestedMessage__Descriptor, + new string[] { "I", }); #endregion } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs index e35f9b1d..dbb446e0 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestEmbedOptimizeForProtoFile.cs @@ -43,11 +43,9 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor, - new string[] { "OptionalMessage", "RepeatedMessage", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize), - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmbedOptimizedForSize.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor, + new string[] { "OptionalMessage", "RepeatedMessage", }); #endregion } @@ -66,11 +64,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestEmbedOptimizedForSize ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestEmbedOptimizeForProtoFile.internal__static_protobuf_unittest_TestEmbedOptimizedForSize__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestEmbedOptimizeForProtoFile.internal__static_protobuf_unittest_TestEmbedOptimizedForSize__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs index ff784d47..8a73c0db 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestImportProtoFile.cs @@ -37,11 +37,9 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_import_ImportMessage__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_import_ImportMessage__Descriptor, - new string[] { "D", }, - typeof (global::Google.ProtocolBuffers.TestProtos.ImportMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.ImportMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_import_ImportMessage__Descriptor, + new string[] { "D", }); #endregion } @@ -66,11 +64,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override ImportMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.internal__static_protobuf_unittest_import_ImportMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestImportProtoFile.internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs index 56dd1ca1..cdeebd20 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestMessageSetProtoFile.cs @@ -58,46 +58,34 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSet__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSet__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSet), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSet.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSet__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor = Descriptor.MessageTypes[1]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor, - new string[] { "MessageSet", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetContainer.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor, + new string[] { "MessageSet", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor = Descriptor.MessageTypes[2]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor, - new string[] { "I", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension1.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor, + new string[] { "I", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor = Descriptor.MessageTypes[3]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor, - new string[] { "Str", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMessageSetExtension2.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor, + new string[] { "Str", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet__Descriptor = Descriptor.MessageTypes[4]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RawMessageSet__Descriptor, - new string[] { "Item", }, - typeof (global::Google.ProtocolBuffers.TestProtos.RawMessageSet), - typeof (global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RawMessageSet__Descriptor, + new string[] { "Item", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor = internal__static_protobuf_unittest_RawMessageSet__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor, - new string[] { "TypeId", "Message", }, - typeof (global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item), - typeof (global::Google.ProtocolBuffers.TestProtos.RawMessageSet.Types.Item.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor, + new string[] { "TypeId", "Message", }); #endregion } @@ -116,11 +104,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMessageSet ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSet__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSet__FieldAccessorTable; } } @@ -281,11 +273,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMessageSetContainer ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetContainer__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetContainer__FieldAccessorTable; } } @@ -508,11 +504,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMessageSetExtension1 ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetExtension1__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetExtension1__FieldAccessorTable; } } @@ -718,11 +718,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMessageSetExtension2 ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetExtension2__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_TestMessageSetExtension2__FieldAccessorTable; } } @@ -928,11 +932,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override RawMessageSet ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_RawMessageSet__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_RawMessageSet__FieldAccessorTable; } } @@ -948,11 +956,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override Item ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_RawMessageSet_Item__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestMessageSetProtoFile.internal__static_protobuf_unittest_RawMessageSet_Item__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs index 5315b95e..2272e2b7 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestOptimizeForProtoFile.cs @@ -42,11 +42,9 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor, - new string[] { "I", "Msg", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize), - typeof (global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor, + new string[] { "I", "Msg", }); #endregion } @@ -65,11 +63,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestOptimizedForSize ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestOptimizeForProtoFile.internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs index 0c75f4a1..b638dc46 100644 --- a/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs +++ b/csharp/ProtocolBuffers.Test/TestProtos/UnitTestProtoFile.cs @@ -799,207 +799,149 @@ namespace Google.ProtocolBuffers.TestProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes__Descriptor, - new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes), - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes__Descriptor, + new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor, - new string[] { "Bb", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor, + new string[] { "Bb", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[1]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup), - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.OptionalGroup.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[2]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup), - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.RepeatedGroup.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor = Descriptor.MessageTypes[1]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_ForeignMessage__Descriptor, - new string[] { "C", }, - typeof (global::Google.ProtocolBuffers.TestProtos.ForeignMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_ForeignMessage__Descriptor, + new string[] { "C", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[2]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllExtensions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllExtensions), - typeof (global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestAllExtensions__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[3]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension), - typeof (global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[4]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension), - typeof (global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[5]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRequired__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRequired__Descriptor, - new string[] { "A", "Dummy2", "B", "Dummy4", "Dummy5", "Dummy6", "Dummy7", "Dummy8", "Dummy9", "Dummy10", "Dummy11", "Dummy12", "Dummy13", "Dummy14", "Dummy15", "Dummy16", "Dummy17", "Dummy18", "Dummy19", "Dummy20", "Dummy21", "Dummy22", "Dummy23", "Dummy24", "Dummy25", "Dummy26", "Dummy27", "Dummy28", "Dummy29", "Dummy30", "Dummy31", "Dummy32", "C", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestRequired), - typeof (global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRequired__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRequired__Descriptor, + new string[] { "A", "Dummy2", "B", "Dummy4", "Dummy5", "Dummy6", "Dummy7", "Dummy8", "Dummy9", "Dummy10", "Dummy11", "Dummy12", "Dummy13", "Dummy14", "Dummy15", "Dummy16", "Dummy17", "Dummy18", "Dummy19", "Dummy20", "Dummy21", "Dummy22", "Dummy23", "Dummy24", "Dummy25", "Dummy26", "Dummy27", "Dummy28", "Dummy29", "Dummy30", "Dummy31", "Dummy32", "C", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[6]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor, - new string[] { "OptionalMessage", "RepeatedMessage", "Dummy", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign), - typeof (global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor, + new string[] { "OptionalMessage", "RepeatedMessage", "Dummy", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[7]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestForeignNested__Descriptor, - new string[] { "ForeignNested", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestForeignNested), - typeof (global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestForeignNested__Descriptor, + new string[] { "ForeignNested", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[8]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[9]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions), - typeof (global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[10]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor, - new string[] { "A", "Bb", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber), - typeof (global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor, + new string[] { "A", "Bb", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[11]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor, - new string[] { "A", "I", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor, + new string[] { "A", "I", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[12]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor, - new string[] { "Bb", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor, + new string[] { "Bb", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[13]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor, - new string[] { "A", "OptionalInt32", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB), - typeof (global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor, + new string[] { "A", "OptionalInt32", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[14]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor, - new string[] { "A", "Foo", "Bar", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber), - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor, + new string[] { "A", "Foo", "Bar", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo), - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Foo.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor = internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor.NestedTypes[1]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor, - new string[] { "A", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar), - typeof (global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor, + new string[] { "A", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[15]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor, - new string[] { "OptionalNestedMessage", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits), - typeof (global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor, + new string[] { "OptionalNestedMessage", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor, - new string[] { "NestedmessageRepeatedInt32", "NestedmessageRepeatedForeignmessage", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage), - typeof (global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor, + new string[] { "NestedmessageRepeatedInt32", "NestedmessageRepeatedForeignmessage", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[16]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor, - new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "StringPieceField", "CordField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedStringPieceField", "RepeatedCordField", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames), - typeof (global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor, + new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "StringPieceField", "CordField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedStringPieceField", "RepeatedCordField", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[17]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor, - new string[] { "MyString", "MyInt", "MyFloat", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings), - typeof (global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor, + new string[] { "MyString", "MyInt", "MyFloat", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[18]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor, - new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "Utf8String", }, - typeof (global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues), - typeof (global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor, + new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "Utf8String", }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[19]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooRequest__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_FooRequest__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.FooRequest), - typeof (global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooRequest__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_FooRequest__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[20]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooResponse__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_FooResponse__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.FooResponse), - typeof (global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooResponse__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_FooResponse__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[21]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarRequest__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_BarRequest__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.BarRequest), - typeof (global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarRequest__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_BarRequest__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[22]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarResponse__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_BarResponse__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.TestProtos.BarResponse), - typeof (global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarResponse__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_protobuf_unittest_BarResponse__Descriptor, + new string[] { }); #endregion } @@ -1040,11 +982,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestAllTypes ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable; } } @@ -1066,11 +1012,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override NestedMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable; } } @@ -1269,11 +1219,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override OptionalGroup ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_OptionalGroup__FieldAccessorTable; } } @@ -1472,11 +1426,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override RepeatedGroup ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllTypes_RepeatedGroup__FieldAccessorTable; } } @@ -5363,11 +5321,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override ForeignMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_ForeignMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable; } } @@ -5566,11 +5528,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestAllExtensions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllExtensions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable; } } @@ -5731,11 +5697,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override OptionalGroup_extension ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable; } } @@ -5934,11 +5904,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override RepeatedGroup_extension ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable; } } @@ -6137,11 +6111,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestRequired ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRequired__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRequired__FieldAccessorTable; } } @@ -7697,11 +7675,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestRequiredForeign ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRequiredForeign__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable; } } @@ -8046,11 +8028,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestForeignNested ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestForeignNested__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable; } } @@ -8270,11 +8256,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestEmptyMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestEmptyMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable; } } @@ -8431,11 +8421,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestEmptyMessageWithExtensions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable; } } @@ -8596,11 +8590,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestReallyLargeTagNumber ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable; } } @@ -8841,11 +8839,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestRecursiveMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable; } } @@ -9107,11 +9109,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMutualRecursionA ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable; } } @@ -9331,11 +9337,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestMutualRecursionB ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable; } } @@ -9597,11 +9607,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestDupFieldNumber ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable; } } @@ -9617,11 +9631,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override Foo ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber_Foo__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber_Foo__FieldAccessorTable; } } @@ -9820,11 +9838,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override Bar ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable; } } @@ -10337,11 +10359,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestNestedMessageHasBits ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable; } } @@ -10357,11 +10383,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override NestedMessage ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable; } } @@ -10867,11 +10897,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestCamelCaseFieldNames ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable; } } @@ -11703,11 +11737,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestFieldOrderings ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestFieldOrderings__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable; } } @@ -11995,11 +12033,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override TestExtremeDefaultValues ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable; } } @@ -12408,11 +12450,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override FooRequest ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_FooRequest__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_FooRequest__FieldAccessorTable; } } @@ -12569,11 +12615,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override FooResponse ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_FooResponse__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_FooResponse__FieldAccessorTable; } } @@ -12730,11 +12780,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override BarRequest ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_BarRequest__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_BarRequest__FieldAccessorTable; } } @@ -12891,11 +12945,15 @@ namespace Google.ProtocolBuffers.TestProtos { get { return defaultInstance; } } + protected override BarResponse ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_BarResponse__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.TestProtos.UnitTestProtoFile.internal__static_protobuf_unittest_BarResponse__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs index ec7bf585..e61f80cf 100644 --- a/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs +++ b/csharp/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs @@ -164,109 +164,79 @@ namespace Google.ProtocolBuffers.DescriptorProtos { #region Static variables internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileDescriptorProto__Descriptor = Descriptor.MessageTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FileDescriptorProto__Descriptor, - new string[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FileDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FileDescriptorProto__Descriptor, + new string[] { "Name", "Package", "Dependency", "MessageType", "EnumType", "Service", "Extension", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto__Descriptor = Descriptor.MessageTypes[1]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_DescriptorProto__Descriptor, - new string[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_DescriptorProto__Descriptor, + new string[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor = internal__static_google_protobuf_DescriptorProto__Descriptor.NestedTypes[0]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor, - new string[] { "Start", "End", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor, + new string[] { "Start", "End", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldDescriptorProto__Descriptor = Descriptor.MessageTypes[2]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FieldDescriptorProto__Descriptor, - new string[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FieldDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FieldDescriptorProto__Descriptor, + new string[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumDescriptorProto__Descriptor = Descriptor.MessageTypes[3]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumDescriptorProto__Descriptor, - new string[] { "Name", "Value", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumDescriptorProto__Descriptor, + new string[] { "Name", "Value", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor = Descriptor.MessageTypes[4]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor, - new string[] { "Name", "Number", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor, + new string[] { "Name", "Number", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceDescriptorProto__Descriptor = Descriptor.MessageTypes[5]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_ServiceDescriptorProto__Descriptor, - new string[] { "Name", "Method", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.ServiceDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_ServiceDescriptorProto__Descriptor, + new string[] { "Name", "Method", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodDescriptorProto__Descriptor = Descriptor.MessageTypes[6]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MethodDescriptorProto__Descriptor, - new string[] { "Name", "InputType", "OutputType", "Options", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MethodDescriptorProto.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MethodDescriptorProto__Descriptor, + new string[] { "Name", "InputType", "OutputType", "Options", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FileOptions__Descriptor = Descriptor.MessageTypes[7]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FileOptions__Descriptor, - new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "CsharpNamespace", "CsharpFileClassname", "CsharpMultipleFiles", "CsharpNestClasses", "CsharpPublicClasses", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FileOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FileOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FileOptions__Descriptor, + new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "OptimizeFor", "CsharpNamespace", "CsharpFileClassname", "CsharpMultipleFiles", "CsharpNestClasses", "CsharpPublicClasses", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MessageOptions__Descriptor = Descriptor.MessageTypes[8]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MessageOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MessageOptions__Descriptor, - new string[] { "MessageSetWireFormat", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MessageOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MessageOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MessageOptions__Descriptor, + new string[] { "MessageSetWireFormat", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_FieldOptions__Descriptor = Descriptor.MessageTypes[9]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FieldOptions__Descriptor, - new string[] { "Ctype", "ExperimentalMapKey", }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.FieldOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_FieldOptions__Descriptor, + new string[] { "Ctype", "ExperimentalMapKey", }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumOptions__Descriptor = Descriptor.MessageTypes[10]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumOptions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumOptions__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_EnumValueOptions__Descriptor = Descriptor.MessageTypes[11]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumValueOptions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.EnumValueOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_EnumValueOptions__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_ServiceOptions__Descriptor = Descriptor.MessageTypes[12]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_ServiceOptions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.ServiceOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_ServiceOptions__Descriptor, + new string[] { }); internal static readonly pbd::MessageDescriptor internal__static_google_protobuf_MethodOptions__Descriptor = Descriptor.MessageTypes[13]; - internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodOptions__FieldAccessorTable - = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MethodOptions__Descriptor, - new string[] { }, - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions), - typeof (global::Google.ProtocolBuffers.DescriptorProtos.MethodOptions.Builder)); + internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodOptions__FieldAccessorTable + = new pb::FieldAccess.FieldAccessorTable(internal__static_google_protobuf_MethodOptions__Descriptor, + new string[] { }); #endregion } @@ -285,11 +255,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override FileDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable; } } @@ -964,11 +938,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override DescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__FieldAccessorTable; } } @@ -984,11 +962,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override ExtensionRange ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable; } } @@ -1865,11 +1847,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override FieldDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable; } } @@ -2423,11 +2409,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override EnumDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable; } } @@ -2766,11 +2756,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override EnumValueDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable; } } @@ -3074,11 +3068,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override ServiceDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable; } } @@ -3417,11 +3415,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override MethodDescriptorProto ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable; } } @@ -3767,11 +3769,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override FileOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__FieldAccessorTable; } } @@ -4320,11 +4326,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override MessageOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__FieldAccessorTable; } } @@ -4523,11 +4533,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override FieldOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__FieldAccessorTable; } } @@ -4782,11 +4796,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override EnumOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__FieldAccessorTable; } } @@ -4943,11 +4961,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override EnumValueOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable; } } @@ -5104,11 +5126,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override ServiceOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__FieldAccessorTable; } } @@ -5265,11 +5291,15 @@ namespace Google.ProtocolBuffers.DescriptorProtos { get { return defaultInstance; } } + protected override MethodOptions ThisMessage { + get { return this; } + } + public static pbd::MessageDescriptor Descriptor { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__Descriptor; } } - protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { + protected override pb::FieldAccess.FieldAccessorTable InternalFieldAccessors { get { return global::Google.ProtocolBuffers.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__FieldAccessorTable; } } diff --git a/csharp/ProtocolBuffers/FieldAccess/Delegates.cs b/csharp/ProtocolBuffers/FieldAccess/Delegates.cs new file mode 100644 index 00000000..04b1d94c --- /dev/null +++ b/csharp/ProtocolBuffers/FieldAccess/Delegates.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Google.ProtocolBuffers.FieldAccess { + + delegate bool HasDelegate(T message); + delegate T ClearDelegate(T builder); + delegate int RepeatedCountDelegate(T message); + delegate object GetValueDelegate(T message); +} diff --git a/csharp/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs b/csharp/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs index 24113b41..c7f5da6d 100644 --- a/csharp/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs +++ b/csharp/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs @@ -23,9 +23,11 @@ namespace Google.ProtocolBuffers.FieldAccess { /// create appropriate instances in the .proto file description class. /// TODO(jonskeet): See if we can hide it somewhere... /// - public sealed class FieldAccessorTable { + public sealed class FieldAccessorTable + where TMessage : IMessage + where TBuilder : IBuilder { - readonly IFieldAccessor[] accessors; + readonly IFieldAccessor[] accessors; readonly MessageDescriptor descriptor; @@ -39,36 +41,34 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// The type's descriptor /// The Pascal-case names of all the field-based properties in the message. - /// The .NET type representing the message - /// The .NET type representing the message's builder type - public FieldAccessorTable(MessageDescriptor descriptor, String[] propertyNames, Type messageType, Type builderType) { + public FieldAccessorTable(MessageDescriptor descriptor, String[] propertyNames) { this.descriptor = descriptor; - accessors = new IFieldAccessor[descriptor.Fields.Count]; + accessors = new IFieldAccessor[descriptor.Fields.Count]; for (int i=0; i < accessors.Length; i++) { - accessors[i] = CreateAccessor(descriptor.Fields[i], propertyNames[i], messageType, builderType); + accessors[i] = CreateAccessor(descriptor.Fields[i], propertyNames[i]); } } /// /// Creates an accessor for a single field /// - private static IFieldAccessor CreateAccessor(FieldDescriptor field, string name, Type messageType, Type builderType) { + private static IFieldAccessor CreateAccessor(FieldDescriptor field, string name) { if (field.IsRepeated) { switch (field.MappedType) { - case MappedType.Message: return new RepeatedMessageAccessor(name, messageType, builderType); - case MappedType.Enum: return new RepeatedEnumAccessor(field, name, messageType, builderType); - default: return new RepeatedPrimitiveAccessor(name, messageType, builderType); + case MappedType.Message: return new RepeatedMessageAccessor(name); + case MappedType.Enum: return new RepeatedEnumAccessor(field, name); + default: return new RepeatedPrimitiveAccessor(name); } } else { switch (field.MappedType) { - case MappedType.Message: return new SingleMessageAccessor(name, messageType, builderType); - case MappedType.Enum: return new SingleEnumAccessor(field, name, messageType, builderType); - default: return new SinglePrimitiveAccessor(name, messageType, builderType); + case MappedType.Message: return new SingleMessageAccessor(name); + case MappedType.Enum: return new SingleEnumAccessor(field, name); + default: return new SinglePrimitiveAccessor(name); } } } - internal IFieldAccessor this[FieldDescriptor field] { + internal IFieldAccessor this[FieldDescriptor field] { get { if (field.ContainingType != descriptor) { throw new ArgumentException("FieldDescriptor does not match message type."); diff --git a/csharp/ProtocolBuffers/FieldAccess/IFieldAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/IFieldAccessor.cs index 3e47fdc6..eb57c8c9 100644 --- a/csharp/ProtocolBuffers/FieldAccess/IFieldAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/IFieldAccessor.cs @@ -21,23 +21,25 @@ namespace Google.ProtocolBuffers.FieldAccess { /// The property descriptors for each field are created once and then cached. /// In addition, this interface holds knowledge of repeated fields, builders etc. /// - internal interface IFieldAccessor { + internal interface IFieldAccessor + where TMessage : IMessage + where TBuilder : IBuilder { /// /// Indicates whether the specified message contains the field. /// - bool Has(IMessage message); + bool Has(TMessage message); /// /// Gets the count of the repeated field in the specified message. /// - int GetRepeatedCount(IMessage message); + int GetRepeatedCount(TMessage message); /// /// Clears the field in the specified builder. /// /// - void Clear(IBuilder builder); + void Clear(TBuilder builder); /// /// Creates a builder for the type of this field (which must be a message field). @@ -47,11 +49,11 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Accessor for single fields /// - object GetValue(IMessage message); + object GetValue(TMessage message); /// /// Mutator for single fields /// - void SetValue(IBuilder builder, object value); + void SetValue(TBuilder builder, object value); /// /// Accessor for repeated fields diff --git a/csharp/ProtocolBuffers/FieldAccess/RepeatedEnumAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/RepeatedEnumAccessor.cs index f6b273ee..3082071b 100644 --- a/csharp/ProtocolBuffers/FieldAccess/RepeatedEnumAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/RepeatedEnumAccessor.cs @@ -24,17 +24,17 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Accessor for a repeated enum field. /// - internal sealed class RepeatedEnumAccessor : RepeatedPrimitiveAccessor { + internal sealed class RepeatedEnumAccessor : RepeatedPrimitiveAccessor + where TMessage : IMessage + where TBuilder : IBuilder { private readonly EnumDescriptor enumDescriptor; - internal RepeatedEnumAccessor(FieldDescriptor field, string name, Type messageType, Type builderType) - : base(name, messageType, builderType) { - + internal RepeatedEnumAccessor(FieldDescriptor field, string name) : base(name) { enumDescriptor = field.EnumType; } - public override object GetValue(IMessage message) { + public override object GetValue(TMessage message) { List ret = new List(); foreach (int rawValue in (IEnumerable) base.GetValue(message)) { ret.Add(enumDescriptor.FindValueByNumber(rawValue)); diff --git a/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs index d0c53dcc..f350752d 100644 --- a/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs @@ -24,7 +24,9 @@ namespace Google.ProtocolBuffers.FieldAccess { /// TODO(jonskeet): Try to extract the commonality between this and SingleMessageAccessor. /// We almost want multiple inheritance... /// - internal sealed class RepeatedMessageAccessor : RepeatedPrimitiveAccessor { + internal sealed class RepeatedMessageAccessor : RepeatedPrimitiveAccessor + where TMessage : IMessage + where TBuilder : IBuilder { /// /// The static method to create a builder for the property type. For example, @@ -33,8 +35,7 @@ namespace Google.ProtocolBuffers.FieldAccess { /// private readonly MethodInfo createBuilderMethod; - internal RepeatedMessageAccessor(string name, Type messageType, Type builderType) - : base(name, messageType, builderType) { + internal RepeatedMessageAccessor(string name) : base(name) { createBuilderMethod = ClrType.GetMethod("CreateBuilder", new Type[0]); if (createBuilderMethod == null) { throw new ArgumentException("No public static CreateBuilder method declared in " + ClrType.Name); diff --git a/csharp/ProtocolBuffers/FieldAccess/RepeatedPrimitiveAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/RepeatedPrimitiveAccessor.cs index ad44991d..39184b1f 100644 --- a/csharp/ProtocolBuffers/FieldAccess/RepeatedPrimitiveAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/RepeatedPrimitiveAccessor.cs @@ -21,12 +21,14 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Accesor for a repeated field of type int, ByteString etc. /// - internal class RepeatedPrimitiveAccessor : IFieldAccessor { + internal class RepeatedPrimitiveAccessor : IFieldAccessor + where TMessage : IMessage + where TBuilder : IBuilder { private readonly PropertyInfo messageProperty; private readonly PropertyInfo builderProperty; - private readonly PropertyInfo countProperty; - private readonly MethodInfo clearMethod; + private readonly RepeatedCountDelegate countDelegate; + private readonly ClearDelegate clearDelegate; private readonly MethodInfo addMethod; private readonly MethodInfo getElementMethod; private readonly MethodInfo setElementMethod; @@ -40,14 +42,14 @@ namespace Google.ProtocolBuffers.FieldAccess { get { return getElementMethod.ReturnType; } } - internal RepeatedPrimitiveAccessor(string name, Type messageType, Type builderType) { - messageProperty = messageType.GetProperty(name + "List"); - builderProperty = builderType.GetProperty(name + "List"); - countProperty = messageType.GetProperty(name + "Count"); - clearMethod = builderType.GetMethod("Clear" + name); - getElementMethod = messageType.GetMethod("Get" + name, new Type[] { typeof(int) }); - addMethod = builderType.GetMethod("Add" + name, new Type[] { ClrType }); - setElementMethod = builderType.GetMethod("Set" + name, new Type[] { typeof(int), ClrType }); + internal RepeatedPrimitiveAccessor(string name) { + messageProperty = typeof(TMessage).GetProperty(name + "List"); + builderProperty = typeof(TBuilder).GetProperty(name + "List"); + PropertyInfo countProperty = typeof(TMessage).GetProperty(name + "Count"); + MethodInfo clearMethod = typeof(TBuilder).GetMethod("Clear" + name); + getElementMethod = typeof(TMessage).GetMethod("Get" + name, new Type[] { typeof(int) }); + addMethod = typeof(TBuilder).GetMethod("Add" + name, new Type[] { ClrType }); + setElementMethod = typeof(TBuilder).GetMethod("Set" + name, new Type[] { typeof(int), ClrType }); if (messageProperty == null || builderProperty == null || countProperty == null @@ -57,9 +59,12 @@ namespace Google.ProtocolBuffers.FieldAccess { || setElementMethod == null) { throw new ArgumentException("Not all required properties/methods available"); } + clearDelegate = (ClearDelegate)Delegate.CreateDelegate(typeof(ClearDelegate), clearMethod); + countDelegate = (RepeatedCountDelegate)Delegate.CreateDelegate + (typeof(RepeatedCountDelegate), countProperty.GetGetMethod()); } - public bool Has(IMessage message) { + public bool Has(TMessage message) { throw new InvalidOperationException(); } @@ -67,11 +72,11 @@ namespace Google.ProtocolBuffers.FieldAccess { throw new InvalidOperationException(); } - public virtual object GetValue(IMessage message) { + public virtual object GetValue(TMessage message) { return messageProperty.GetValue(message, null); } - public void SetValue(IBuilder builder, object value) { + public void SetValue(TBuilder builder, object value) { // Add all the elements individually. This serves two purposes: // 1) Verifies that each element has the correct type. // 2) Insures that the caller cannot modify the list later on and @@ -82,12 +87,12 @@ namespace Google.ProtocolBuffers.FieldAccess { } } - public void Clear(IBuilder builder) { - clearMethod.Invoke(builder, null); + public void Clear(TBuilder builder) { + clearDelegate(builder); } - public int GetRepeatedCount(IMessage message) { - return (int) countProperty.GetValue(message, null); + public int GetRepeatedCount(TMessage message) { + return countDelegate(message); } public virtual object GetRepeatedValue(IMessage message, int index) { diff --git a/csharp/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs index 7db6b182..eb28160a 100644 --- a/csharp/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs @@ -20,12 +20,13 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Accessor for fields representing a non-repeated enum value. /// - internal sealed class SingleEnumAccessor : SinglePrimitiveAccessor { + internal sealed class SingleEnumAccessor : SinglePrimitiveAccessor + where TMessage : IMessage + where TBuilder : IBuilder { private readonly EnumDescriptor enumDescriptor; - internal SingleEnumAccessor(FieldDescriptor field, string name, Type messageType, Type builderType) - : base(name, messageType, builderType) { + internal SingleEnumAccessor(FieldDescriptor field, string name) : base(name) { enumDescriptor = field.EnumType; } @@ -34,7 +35,7 @@ namespace Google.ProtocolBuffers.FieldAccess { /// Note that if an enum has multiple values for the same number, the descriptor /// for the first value with that number will be returned. /// - public override object GetValue(IMessage message) { + public override object GetValue(TMessage message) { // Note: This relies on the fact that the CLR allows unboxing from an enum to // its underlying value int rawValue = (int) base.GetValue(message); @@ -45,7 +46,7 @@ namespace Google.ProtocolBuffers.FieldAccess { /// Sets the value as an enum (via an int) in the builder, /// from an EnumValueDescriptor parameter. /// - public override void SetValue(IBuilder builder, object value) { + public override void SetValue(TBuilder builder, object value) { EnumValueDescriptor valueDescriptor = (EnumValueDescriptor) value; base.SetValue(builder, valueDescriptor.Number); } diff --git a/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs index 7945f461..460d450d 100644 --- a/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs @@ -20,7 +20,9 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Accessor for fields representing a non-repeated message value. /// - internal sealed class SingleMessageAccessor : SinglePrimitiveAccessor { + internal sealed class SingleMessageAccessor : SinglePrimitiveAccessor + where TMessage : IMessage + where TBuilder : IBuilder { /// /// The static method to create a builder for the property type. For example, @@ -30,8 +32,7 @@ namespace Google.ProtocolBuffers.FieldAccess { private readonly MethodInfo createBuilderMethod; - internal SingleMessageAccessor(string name, Type messageType, Type builderType) - : base(name, messageType, builderType) { + internal SingleMessageAccessor(string name) : base(name) { createBuilderMethod = ClrType.GetMethod("CreateBuilder", new Type[0]);//BindingFlags.Public | BindingFlags.Static | BindingFlags.DeclaredOnly); if (createBuilderMethod == null) { @@ -55,7 +56,7 @@ namespace Google.ProtocolBuffers.FieldAccess { return CreateBuilder().WeakMergeFrom(message).WeakBuild(); } - public override void SetValue(IBuilder builder, object value) { + public override void SetValue(TBuilder builder, object value) { base.SetValue(builder, CoerceType(value)); } diff --git a/csharp/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs b/csharp/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs index efa77047..8d12b45c 100644 --- a/csharp/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs +++ b/csharp/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs @@ -20,12 +20,14 @@ namespace Google.ProtocolBuffers.FieldAccess { /// /// Access for a non-repeated field of a "primitive" type (i.e. not another message or an enum). /// - internal class SinglePrimitiveAccessor : IFieldAccessor { + internal class SinglePrimitiveAccessor : IFieldAccessor + where TMessage : IMessage + where TBuilder : IBuilder { private readonly PropertyInfo messageProperty; private readonly PropertyInfo builderProperty; - private readonly PropertyInfo hasProperty; - private readonly MethodInfo clearMethod; + private readonly HasDelegate hasDelegate; + private readonly ClearDelegate clearDelegate; /// /// The CLR type of the field (int, the enum type, ByteString, the message etc). @@ -35,22 +37,24 @@ namespace Google.ProtocolBuffers.FieldAccess { get { return messageProperty.PropertyType; } } - internal SinglePrimitiveAccessor(string name, Type messageType, Type builderType) { - messageProperty = messageType.GetProperty(name); - builderProperty = builderType.GetProperty(name); - hasProperty = messageType.GetProperty("Has" + name); - clearMethod = builderType.GetMethod("Clear" + name); + internal SinglePrimitiveAccessor(string name) { + messageProperty = typeof(TMessage).GetProperty(name); + builderProperty = typeof(TBuilder).GetProperty(name); + PropertyInfo hasProperty = typeof(TMessage).GetProperty("Has" + name); + MethodInfo clearMethod = typeof(TBuilder).GetMethod("Clear" + name); if (messageProperty == null || builderProperty == null || hasProperty == null || clearMethod == null) { throw new ArgumentException("Not all required properties/methods available"); } + hasDelegate = (HasDelegate)Delegate.CreateDelegate(typeof(HasDelegate), hasProperty.GetGetMethod()); + clearDelegate = (ClearDelegate)Delegate.CreateDelegate(typeof(ClearDelegate), clearMethod); } - public bool Has(IMessage message) { - return (bool) hasProperty.GetValue(message, null); + public bool Has(TMessage message) { + return hasDelegate(message); } - public void Clear(IBuilder builder) { - clearMethod.Invoke(builder, null); + public void Clear(TBuilder builder) { + clearDelegate(builder); } /// @@ -60,16 +64,16 @@ namespace Google.ProtocolBuffers.FieldAccess { throw new InvalidOperationException(); } - public virtual object GetValue(IMessage message) { + public virtual object GetValue(TMessage message) { return messageProperty.GetValue(message, null); } - public virtual void SetValue(IBuilder builder, object value) { + public virtual void SetValue(TBuilder builder, object value) { builderProperty.SetValue(builder, value, null); } #region Methods only related to repeated values - public int GetRepeatedCount(IMessage message) { + public int GetRepeatedCount(TMessage message) { throw new InvalidOperationException(); } diff --git a/csharp/ProtocolBuffers/GeneratedBuilder.cs b/csharp/ProtocolBuffers/GeneratedBuilder.cs index 35f22fc3..54d37392 100644 --- a/csharp/ProtocolBuffers/GeneratedBuilder.cs +++ b/csharp/ProtocolBuffers/GeneratedBuilder.cs @@ -34,8 +34,8 @@ namespace Google.ProtocolBuffers { /// protected abstract TMessage MessageBeingBuilt { get; } - protected internal FieldAccessorTable InternalFieldAccessors { - get { return MessageBeingBuilt.FieldAccesseorsFromBuilder; } + protected internal FieldAccessorTable InternalFieldAccessors { + get { return MessageBeingBuilt.FieldAccessorsFromBuilder; } } public override bool IsInitialized { @@ -104,7 +104,7 @@ namespace Google.ProtocolBuffers { } public override TBuilder ClearField(FieldDescriptor field) { - InternalFieldAccessors[field].Clear(this); + InternalFieldAccessors[field].Clear(ThisBuilder); return ThisBuilder; } diff --git a/csharp/ProtocolBuffers/GeneratedMessage.cs b/csharp/ProtocolBuffers/GeneratedMessage.cs index 479986f6..0fd54f6c 100644 --- a/csharp/ProtocolBuffers/GeneratedMessage.cs +++ b/csharp/ProtocolBuffers/GeneratedMessage.cs @@ -33,11 +33,16 @@ namespace Google.ProtocolBuffers { private UnknownFieldSet unknownFields = UnknownFieldSet.DefaultInstance; - internal FieldAccessorTable FieldAccesseorsFromBuilder { + /// + /// Returns the message as a TMessage. + /// + protected abstract TMessage ThisMessage { get; } + + internal FieldAccessorTable FieldAccessorsFromBuilder { get { return InternalFieldAccessors; } } - protected abstract FieldAccessorTable InternalFieldAccessors { get; } + protected abstract FieldAccessorTable InternalFieldAccessors { get; } public override MessageDescriptor DescriptorForType { get { return InternalFieldAccessors.Descriptor; } @@ -49,13 +54,13 @@ namespace Google.ProtocolBuffers { var ret = new SortedList(); MessageDescriptor descriptor = DescriptorForType; foreach (FieldDescriptor field in descriptor.Fields) { - IFieldAccessor accessor = InternalFieldAccessors[field]; + IFieldAccessor accessor = InternalFieldAccessors[field]; if (field.IsRepeated) { - if (accessor.GetRepeatedCount(this) != 0) { - ret[field] = accessor.GetValue(this); + if (accessor.GetRepeatedCount(ThisMessage) != 0) { + ret[field] = accessor.GetValue(ThisMessage); } } else if (HasField(field)) { - ret[field] = accessor.GetValue(this); + ret[field] = accessor.GetValue(ThisMessage); } } return ret; @@ -99,11 +104,11 @@ namespace Google.ProtocolBuffers { } public override bool HasField(FieldDescriptor field) { - return InternalFieldAccessors[field].Has(this); + return InternalFieldAccessors[field].Has(ThisMessage); } public override int GetRepeatedFieldCount(FieldDescriptor field) { - return InternalFieldAccessors[field].GetRepeatedCount(this); + return InternalFieldAccessors[field].GetRepeatedCount(ThisMessage); } public override object this[FieldDescriptor field, int index] { @@ -111,7 +116,7 @@ namespace Google.ProtocolBuffers { } public override object this[FieldDescriptor field] { - get { return InternalFieldAccessors[field].GetValue(this); } + get { return InternalFieldAccessors[field].GetValue(ThisMessage); } } public override UnknownFieldSet UnknownFields { diff --git a/csharp/ProtocolBuffers/ProtocolBuffers.csproj b/csharp/ProtocolBuffers/ProtocolBuffers.csproj index e74d94db..c057b414 100644 --- a/csharp/ProtocolBuffers/ProtocolBuffers.csproj +++ b/csharp/ProtocolBuffers/ProtocolBuffers.csproj @@ -34,6 +34,8 @@ + + @@ -69,6 +71,7 @@ + -- cgit v1.2.3