aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BUILD224
-rw-r--r--Makefile.am354
-rw-r--r--Protobuf.podspec24
-rw-r--r--WORKSPACE16
-rw-r--r--appveyor.bat29
-rw-r--r--appveyor.yml12
-rw-r--r--cmake/README.md2
-rw-r--r--cmake/extract_includes.bat.in1
-rw-r--r--conformance/ConformanceJava.java6
-rw-r--r--conformance/conformance.proto18
-rw-r--r--conformance/conformance_cpp.cc56
-rw-r--r--conformance/conformance_test.cc186
-rw-r--r--conformance/conformance_test.h25
-rw-r--r--conformance/failure_list_cpp.txt24
-rw-r--r--csharp/.gitignore14
-rw-r--r--csharp/build_packages.bat13
-rwxr-xr-xcsharp/generate_protos.sh14
-rw-r--r--csharp/src/AddressBook/Addressbook.cs52
-rw-r--r--csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs6
-rw-r--r--csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs40
-rw-r--r--csharp/src/ProtocolBuffers.Test/IssuesTest.cs2
-rw-r--r--csharp/src/ProtocolBuffers.Test/JsonFormatterTest.cs261
-rw-r--r--csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj3
-rw-r--r--csharp/src/ProtocolBuffers.Test/Reflection/DescriptorsTest.cs (renamed from csharp/src/ProtocolBuffers.Test/DescriptorsTest.cs)446
-rw-r--r--csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs5568
-rw-r--r--csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs24
-rw-r--r--csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs24
-rw-r--r--csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs108
-rw-r--r--csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs500
-rw-r--r--csharp/src/ProtocolBuffers/ByteString.cs2
-rw-r--r--csharp/src/ProtocolBuffers/Collections/RepeatedField.cs66
-rw-r--r--csharp/src/ProtocolBuffers/FrameworkPortability.cs1
-rw-r--r--csharp/src/ProtocolBuffers/Google.Protobuf.nuspec24
-rw-r--r--csharp/src/ProtocolBuffers/IMessage.cs8
-rw-r--r--csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs6
-rw-r--r--csharp/src/ProtocolBuffers/JsonFormatter.cs578
-rw-r--r--csharp/src/ProtocolBuffers/ProtocolBuffers.csproj64
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/DescriptorBase.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/DescriptorBase.cs)164
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/DescriptorPool.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/DescriptorPool.cs)728
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/DescriptorProtoFile.cs (renamed from csharp/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs)732
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/DescriptorUtil.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/DescriptorUtil.cs)128
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/DescriptorValidationException.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/DescriptorValidationException.cs)158
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/EnumDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/EnumDescriptor.cs)214
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/EnumValueDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/EnumValueDescriptor.cs)122
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/FieldAccessorBase.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorBase.cs)3
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/FieldAccessorTable.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs)194
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/FieldDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs)583
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/FieldType.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/FieldType.cs)118
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/FileDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/FileDescriptor.cs)704
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/IDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/IDescriptor.cs)86
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/IFieldAccessor.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/IFieldAccessor.cs)138
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/MapFieldAccessor.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/MapFieldAccessor.cs)3
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/MessageDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs)343
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/MethodDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/MethodDescriptor.cs)186
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/OneofAccessor.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs)176
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/OneofDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs)157
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/PackageDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/PackageDescriptor.cs)134
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/PartialClasses.cs (renamed from csharp/src/ProtocolBuffers/DescriptorProtos/PartialClasses.cs)2
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/ReflectionUtil.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/ReflectionUtil.cs)197
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/RepeatedFieldAccessor.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/RepeatedFieldAccessor.cs)3
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/ServiceDescriptor.cs (renamed from csharp/src/ProtocolBuffers/Descriptors/ServiceDescriptor.cs)177
-rw-r--r--csharp/src/ProtocolBuffers/Reflection/SingleFieldAccessor.cs (renamed from csharp/src/ProtocolBuffers/FieldAccess/SingleFieldAccessor.cs)5
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Any.cs195
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Api.cs528
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Duration.cs196
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Empty.cs141
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/FieldMask.cs160
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/SourceContext.cs169
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Struct.cs601
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Timestamp.cs196
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Type.cs1147
-rw-r--r--csharp/src/ProtocolBuffers/WellKnownTypes/Wrappers.cs1154
-rw-r--r--csharp/src/ProtocolBuffers/WireFormat.cs2
-rw-r--r--gmock.BUILD23
-rw-r--r--objectivec/GPBProtocolBuffers.h12
-rwxr-xr-xpython/google/protobuf/internal/test_util.py7
-rw-r--r--ruby/ext/google/protobuf_c/encode_decode.c14
-rw-r--r--src/Makefile.am1
-rw-r--r--src/google/protobuf/any.pb.cc5
-rw-r--r--src/google/protobuf/any.proto2
-rw-r--r--src/google/protobuf/api.proto1
-rw-r--r--src/google/protobuf/compiler/cpp/cpp_message.cc10
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_field_base.cc10
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_field_base.h1
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_helpers.cc8
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_helpers.h12
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_map_field.cc7
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_message.cc53
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_message.h2
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_umbrella_class.cc10
-rw-r--r--src/google/protobuf/compiler/objectivec/objectivec_helpers.cc1
-rw-r--r--src/google/protobuf/compiler/subprocess.cc2
-rw-r--r--src/google/protobuf/descriptor.pb.cc4
-rw-r--r--src/google/protobuf/descriptor.proto2
-rw-r--r--src/google/protobuf/duration.pb.cc6
-rw-r--r--src/google/protobuf/duration.proto2
-rw-r--r--src/google/protobuf/empty.proto1
-rw-r--r--src/google/protobuf/field_mask.pb.cc4
-rw-r--r--src/google/protobuf/field_mask.proto2
-rw-r--r--src/google/protobuf/map.h3
-rw-r--r--src/google/protobuf/map_entry_lite.h12
-rw-r--r--src/google/protobuf/source_context.proto1
-rw-r--r--src/google/protobuf/struct.pb.cc6
-rw-r--r--src/google/protobuf/struct.proto2
-rw-r--r--src/google/protobuf/stubs/atomicops_internals_generic_gcc.h4
-rw-r--r--src/google/protobuf/stubs/common.h36
-rwxr-xr-xsrc/google/protobuf/stubs/hash.h117
-rw-r--r--src/google/protobuf/stubs/pbconfig.h142
-rw-r--r--src/google/protobuf/stubs/strutil.cc10
-rw-r--r--src/google/protobuf/testing/zcgunzip.cc9
-rw-r--r--src/google/protobuf/testing/zcgzip.cc9
-rw-r--r--src/google/protobuf/text_format_unittest.cc10
-rw-r--r--src/google/protobuf/timestamp.pb.cc6
-rw-r--r--src/google/protobuf/timestamp.proto2
-rw-r--r--src/google/protobuf/type.proto1
-rw-r--r--src/google/protobuf/unknown_field_set.cc5
-rw-r--r--src/google/protobuf/util/field_comparator.cc1
-rw-r--r--src/google/protobuf/util/internal/datapiece.cc3
-rw-r--r--src/google/protobuf/util/internal/type_info_test_helper.cc3
-rw-r--r--src/google/protobuf/util/internal/utility.cc3
-rw-r--r--src/google/protobuf/util/message_differencer.h13
-rw-r--r--src/google/protobuf/wire_format.h2
-rw-r--r--src/google/protobuf/wire_format_unittest.cc144
-rw-r--r--src/google/protobuf/wrappers.pb.cc4
-rw-r--r--src/google/protobuf/wrappers.proto2
-rwxr-xr-xupdate_file_lists.sh3
126 files changed, 9965 insertions, 9535 deletions
diff --git a/BUILD b/BUILD
index e897617d..5177e43d 100644
--- a/BUILD
+++ b/BUILD
@@ -2,6 +2,10 @@
licenses(["notice"])
+################################################################################
+# Protobuf Runtime Library
+################################################################################
+
COPTS = [
"-DHAVE_PTHREAD",
"-Wall",
@@ -109,6 +113,34 @@ cc_library(
deps = [":protobuf_lite"],
)
+objc_library(
+ name = "protobuf_objc",
+ hdrs = ["objectivec/GPBProtocolBuffers.h"],
+ includes = ["objectivec"],
+ non_arc_srcs = ["objectivec/GPBProtocolBuffers.m"],
+ visibility = ["//visibility:public"],
+)
+
+WELL_KNOWN_PROTOS = [
+ # AUTOGEN(well_known_protos)
+ "google/protobuf/any.proto",
+ "google/protobuf/api.proto",
+ "google/protobuf/compiler/plugin.proto",
+ "google/protobuf/descriptor.proto",
+ "google/protobuf/duration.proto",
+ "google/protobuf/empty.proto",
+ "google/protobuf/field_mask.proto",
+ "google/protobuf/source_context.proto",
+ "google/protobuf/struct.proto",
+ "google/protobuf/timestamp.proto",
+ "google/protobuf/type.proto",
+ "google/protobuf/wrappers.proto",
+]
+
+################################################################################
+# Protocol Buffers Compiler
+################################################################################
+
cc_library(
name = "protoc_lib",
srcs = [
@@ -216,22 +248,6 @@ cc_binary(
deps = [":protoc_lib"],
)
-WELL_KNOWN_PROTOS = [
- # AUTOGEN(well_known_protos)
- "google/protobuf/any.proto",
- "google/protobuf/api.proto",
- "google/protobuf/compiler/plugin.proto",
- "google/protobuf/descriptor.proto",
- "google/protobuf/duration.proto",
- "google/protobuf/empty.proto",
- "google/protobuf/field_mask.proto",
- "google/protobuf/source_context.proto",
- "google/protobuf/struct.proto",
- "google/protobuf/timestamp.proto",
- "google/protobuf/type.proto",
- "google/protobuf/wrappers.proto",
-]
-
################################################################################
# Tests
################################################################################
@@ -286,11 +302,13 @@ PROTOS = LITE_TEST_PROTOS + TEST_PROTOS
INPUTS = PROTOS + WELL_KNOWN_PROTOS
+OUTPUTS = ["src/" + x[:-5] + "pb.h" for x in PROTOS] + \
+ ["src/" + x[:-5] + "pb.cc" for x in PROTOS]
+
genrule(
name = "gen_test_protos",
srcs = ["src/" + x for x in INPUTS],
- outs = ["src/" + x[:-5] + "pb.h" for x in PROTOS] +
- ["src/" + x[:-5] + "pb.cc" for x in PROTOS],
+ outs = OUTPUTS,
cmd =
"$(location :protoc) --cpp_out=$(@D)/src" +
"".join([" -I" + x + "=$(location src/" + x + ")" for x in INPUTS]) +
@@ -307,78 +325,98 @@ COMMON_TEST_SRCS = [
"src/google/protobuf/testing/googletest.cc",
]
-# TODO(liujisi): Add gtest dependency and enable tests.
-# cc_test(
-# name = "protobuf_test",
-# srcs = OUTPUTS + COMMON_TEST_SRCS + [
-# "src/google/protobuf/any_test.cc",
-# "src/google/protobuf/arena_unittest.cc",
-# "src/google/protobuf/arenastring_unittest.cc",
-# "src/google/protobuf/compiler/command_line_interface_unittest.cc",
-# "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc",
-# "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc",
-# "src/google/protobuf/compiler/cpp/cpp_unittest.cc",
-# "src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc",
-# "src/google/protobuf/compiler/importer_unittest.cc",
-# "src/google/protobuf/compiler/java/java_doc_comment_unittest.cc",
-# "src/google/protobuf/compiler/java/java_plugin_unittest.cc",
-# "src/google/protobuf/compiler/mock_code_generator.cc",
-# "src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc",
-# "src/google/protobuf/compiler/parser_unittest.cc",
-# "src/google/protobuf/compiler/python/python_plugin_unittest.cc",
-# "src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc",
-# "src/google/protobuf/descriptor_database_unittest.cc",
-# "src/google/protobuf/descriptor_unittest.cc",
-# "src/google/protobuf/drop_unknown_fields_test.cc",
-# "src/google/protobuf/dynamic_message_unittest.cc",
-# "src/google/protobuf/extension_set_unittest.cc",
-# "src/google/protobuf/generated_message_reflection_unittest.cc",
-# "src/google/protobuf/io/coded_stream_unittest.cc",
-# "src/google/protobuf/io/printer_unittest.cc",
-# "src/google/protobuf/io/tokenizer_unittest.cc",
-# "src/google/protobuf/io/zero_copy_stream_unittest.cc",
-# "src/google/protobuf/map_field_test.cc",
-# "src/google/protobuf/map_test.cc",
-# "src/google/protobuf/message_unittest.cc",
-# "src/google/protobuf/no_field_presence_test.cc",
-# "src/google/protobuf/preserve_unknown_enum_test.cc",
-# "src/google/protobuf/proto3_arena_unittest.cc",
-# "src/google/protobuf/reflection_ops_unittest.cc",
-# "src/google/protobuf/repeated_field_reflection_unittest.cc",
-# "src/google/protobuf/repeated_field_unittest.cc",
-# "src/google/protobuf/stubs/bytestream_unittest.cc",
-# "src/google/protobuf/stubs/common_unittest.cc",
-# "src/google/protobuf/stubs/once_unittest.cc",
-# "src/google/protobuf/stubs/status_test.cc",
-# "src/google/protobuf/stubs/statusor_test.cc",
-# "src/google/protobuf/stubs/stringpiece_unittest.cc",
-# "src/google/protobuf/stubs/stringprintf_unittest.cc",
-# "src/google/protobuf/stubs/structurally_valid_unittest.cc",
-# "src/google/protobuf/stubs/strutil_unittest.cc",
-# "src/google/protobuf/stubs/template_util_unittest.cc",
-# "src/google/protobuf/stubs/time_test.cc",
-# "src/google/protobuf/stubs/type_traits_unittest.cc",
-# "src/google/protobuf/text_format_unittest.cc",
-# "src/google/protobuf/unknown_field_set_unittest.cc",
-# "src/google/protobuf/util/field_comparator_test.cc",
-# "src/google/protobuf/util/internal/default_value_objectwriter_test.cc",
-# "src/google/protobuf/util/internal/json_objectwriter_test.cc",
-# "src/google/protobuf/util/internal/json_stream_parser_test.cc",
-# "src/google/protobuf/util/internal/protostream_objectsource_test.cc",
-# "src/google/protobuf/util/internal/protostream_objectwriter_test.cc",
-# "src/google/protobuf/util/internal/type_info_test_helper.cc",
-# "src/google/protobuf/util/json_util_test.cc",
-# "src/google/protobuf/util/type_resolver_util_test.cc",
-# "src/google/protobuf/well_known_types_unittest.cc",
-# "src/google/protobuf/wire_format_unittest.cc",
-# ],
-# copts = COPTS,
-# includes = [
-# "src/",
-# ],
-# linkopts = LINK_OPTS,
-# deps = [
-# ":protobuf",
-# ":protoc_lib",
-# ],
-# )
+cc_binary(
+ name = "test_plugin",
+ srcs = [
+ # AUTOGEN(test_plugin_srcs)
+ "src/google/protobuf/compiler/mock_code_generator.cc",
+ "src/google/protobuf/compiler/test_plugin.cc",
+ "src/google/protobuf/testing/file.cc",
+ ],
+ deps = [
+ ":protobuf",
+ ":protoc_lib",
+ "//external:gtest",
+ ],
+)
+
+cc_test(
+ name = "protobuf_test",
+ srcs = OUTPUTS + COMMON_TEST_SRCS + [
+ # AUTOGEN(test_srcs)
+ "src/google/protobuf/any_test.cc",
+ "src/google/protobuf/arena_unittest.cc",
+ "src/google/protobuf/arenastring_unittest.cc",
+ "src/google/protobuf/compiler/command_line_interface_unittest.cc",
+ "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc",
+ "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc",
+ "src/google/protobuf/compiler/cpp/cpp_unittest.cc",
+ "src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc",
+ "src/google/protobuf/compiler/importer_unittest.cc",
+ "src/google/protobuf/compiler/java/java_doc_comment_unittest.cc",
+ "src/google/protobuf/compiler/java/java_plugin_unittest.cc",
+ "src/google/protobuf/compiler/mock_code_generator.cc",
+ "src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc",
+ "src/google/protobuf/compiler/parser_unittest.cc",
+ "src/google/protobuf/compiler/python/python_plugin_unittest.cc",
+ "src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc",
+ "src/google/protobuf/descriptor_database_unittest.cc",
+ "src/google/protobuf/descriptor_unittest.cc",
+ "src/google/protobuf/drop_unknown_fields_test.cc",
+ "src/google/protobuf/dynamic_message_unittest.cc",
+ "src/google/protobuf/extension_set_unittest.cc",
+ "src/google/protobuf/generated_message_reflection_unittest.cc",
+ "src/google/protobuf/io/coded_stream_unittest.cc",
+ "src/google/protobuf/io/printer_unittest.cc",
+ "src/google/protobuf/io/tokenizer_unittest.cc",
+ "src/google/protobuf/io/zero_copy_stream_unittest.cc",
+ "src/google/protobuf/map_field_test.cc",
+ "src/google/protobuf/map_test.cc",
+ "src/google/protobuf/message_unittest.cc",
+ "src/google/protobuf/no_field_presence_test.cc",
+ "src/google/protobuf/preserve_unknown_enum_test.cc",
+ "src/google/protobuf/proto3_arena_unittest.cc",
+ "src/google/protobuf/reflection_ops_unittest.cc",
+ "src/google/protobuf/repeated_field_reflection_unittest.cc",
+ "src/google/protobuf/repeated_field_unittest.cc",
+ "src/google/protobuf/stubs/bytestream_unittest.cc",
+ "src/google/protobuf/stubs/common_unittest.cc",
+ "src/google/protobuf/stubs/once_unittest.cc",
+ "src/google/protobuf/stubs/status_test.cc",
+ "src/google/protobuf/stubs/statusor_test.cc",
+ "src/google/protobuf/stubs/stringpiece_unittest.cc",
+ "src/google/protobuf/stubs/stringprintf_unittest.cc",
+ "src/google/protobuf/stubs/structurally_valid_unittest.cc",
+ "src/google/protobuf/stubs/strutil_unittest.cc",
+ "src/google/protobuf/stubs/template_util_unittest.cc",
+ "src/google/protobuf/stubs/time_test.cc",
+ "src/google/protobuf/stubs/type_traits_unittest.cc",
+ "src/google/protobuf/text_format_unittest.cc",
+ "src/google/protobuf/unknown_field_set_unittest.cc",
+ "src/google/protobuf/util/field_comparator_test.cc",
+ "src/google/protobuf/util/internal/default_value_objectwriter_test.cc",
+ "src/google/protobuf/util/internal/json_objectwriter_test.cc",
+ "src/google/protobuf/util/internal/json_stream_parser_test.cc",
+ "src/google/protobuf/util/internal/protostream_objectsource_test.cc",
+ "src/google/protobuf/util/internal/protostream_objectwriter_test.cc",
+ "src/google/protobuf/util/internal/type_info_test_helper.cc",
+ "src/google/protobuf/util/json_util_test.cc",
+ "src/google/protobuf/util/type_resolver_util_test.cc",
+ "src/google/protobuf/well_known_types_unittest.cc",
+ "src/google/protobuf/wire_format_unittest.cc",
+ ],
+ copts = COPTS,
+ data = [
+ ":test_plugin",
+ ],
+ includes = [
+ "src/",
+ ],
+ linkopts = LINK_OPTS,
+ deps = [
+ ":protobuf",
+ ":protoc_lib",
+ "//external:gtest_main",
+ ],
+)
+
diff --git a/Makefile.am b/Makefile.am
index 37862005..c6694243 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -40,254 +40,112 @@ clean-local:
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = protobuf.pc protobuf-lite.pc
-csharp_EXTRA_DIST= \
- csharp/src/ProtocolBuffers.sln \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublicLite.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasLite.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestExtrasFull.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImport.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLiteImportsNonlite.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportLite.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs \
- csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestImportPublic.cs \
- csharp/src/ProtocolBuffersLite.Test/ExtendableMessageLiteTest.cs \
- csharp/src/ProtocolBuffersLite.Test/packages.config \
- csharp/src/ProtocolBuffersLite.Test/LiteTest.cs \
- csharp/src/ProtocolBuffersLite.Test/AbstractMessageLiteTest.cs \
- csharp/src/ProtocolBuffersLite.Test/MissingFieldAndExtensionTest.cs \
- csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLite.Test.csproj \
- csharp/src/ProtocolBuffersLite.Test/App.xaml.cs \
- csharp/src/ProtocolBuffersLite.Test/InteropLiteTest.cs \
- csharp/src/ProtocolBuffersLite.Test/ExtendableBuilderLiteTest.cs \
- csharp/src/ProtocolBuffersLite.Test/App.xaml \
- csharp/src/ProtocolBuffersLite.Test/TestLiteByApi.cs \
- csharp/src/ProtocolBuffersLite.Test/Properties/AppManifest.xml \
- csharp/src/ProtocolBuffersLite.Test/Properties/OutOfBrowserSettings.xml \
- csharp/src/ProtocolBuffersLite.Test/ProtocolBuffersLiteMixed.Test.csproj \
- csharp/src/ProtocolBuffersLite.Test/AbstractBuilderLiteTest.cs \
- csharp/src/ProtoDump/ProtoDump.csproj \
- csharp/src/ProtoDump/app.config \
- csharp/src/ProtoDump/Program.cs \
- csharp/src/ProtoDump/Properties/AssemblyInfo.cs \
- csharp/src/ProtocolBuffers.Serialization/AbstractReader.cs \
- csharp/src/ProtocolBuffers.Serialization/JsonFormatReader.cs \
- csharp/src/ProtocolBuffers.Serialization/JsonTextCursor.cs \
- csharp/src/ProtocolBuffers.Serialization/ProtocolBuffers.Serialization.csproj \
- csharp/src/ProtocolBuffers.Serialization/DictionaryWriter.cs \
- csharp/src/ProtocolBuffers.Serialization/AbstractWriter.cs \
- csharp/src/ProtocolBuffers.Serialization/ProtocolBuffersLite.Serialization.csproj \
- csharp/src/ProtocolBuffers.Serialization/XmlReaderOptions.cs \
- csharp/src/ProtocolBuffers.Serialization/AbstractTextReader.cs \
- csharp/src/ProtocolBuffers.Serialization/XmlWriterOptions.cs \
- csharp/src/ProtocolBuffers.Serialization/JsonFormatWriter.cs \
- csharp/src/ProtocolBuffers.Serialization/Properties/AssemblyInfo.cs \
- csharp/src/ProtocolBuffers.Serialization/DictionaryReader.cs \
- csharp/src/ProtocolBuffers.Serialization/Extensions.cs \
- csharp/src/ProtocolBuffers.Serialization/AbstractTextWriter.cs \
- csharp/src/ProtocolBuffers.Serialization/XmlFormatWriter.cs \
- csharp/src/ProtocolBuffers.Serialization/Http/FormUrlEncodedReader.cs \
- csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatOptions.cs \
- csharp/src/ProtocolBuffers.Serialization/Http/MessageFormatFactory.cs \
- csharp/src/ProtocolBuffers.Serialization/XmlFormatReader.cs \
- csharp/src/ProtocolBuffers.Serialization/RecursionLimitExceeded.cs \
- csharp/src/ProtoBench/GoogleSize.cs \
- csharp/src/ProtoBench/GoogleSpeed.cs \
- csharp/src/ProtoBench/UnittestImport.cs \
- csharp/src/ProtoBench/google_message1.dat \
- csharp/src/ProtoBench/ProtoBench.csproj \
- csharp/src/ProtoBench/app.config \
- csharp/src/ProtoBench/Program.cs \
- csharp/src/ProtoBench/google_message2.dat \
- csharp/src/ProtoBench/Properties/AssemblyInfo.cs \
- csharp/src/ProtoBench/Unittest.cs \
- csharp/src/ProtoBench/UnittestImportPublic.cs \
- csharp/src/ProtoMunge/app.config \
- csharp/src/ProtoMunge/Program.cs \
- csharp/src/ProtoMunge/Properties/AssemblyInfo.cs \
- csharp/src/ProtoMunge/ProtoMunge.csproj \
- csharp/src/ProtocolBuffers/GeneratedMessage.cs \
- csharp/src/ProtocolBuffers/ICodedInputStream.cs \
- csharp/src/ProtocolBuffers/AbstractBuilder.cs \
- csharp/src/ProtocolBuffers/FieldSet.cs \
- csharp/src/ProtocolBuffers/TextGenerator.cs \
- csharp/src/ProtocolBuffers/CodedInputStream.cs \
- csharp/src/ProtocolBuffers/GeneratedExtensionLite.cs \
- csharp/src/ProtocolBuffers/FrameworkPortability.cs \
- csharp/src/ProtocolBuffers/SortedList.cs \
- csharp/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs \
- csharp/src/ProtocolBuffers/ExtendableMessage.cs \
- csharp/src/ProtocolBuffers/Descriptors/ServiceDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/DescriptorBase.cs \
- csharp/src/ProtocolBuffers/Descriptors/EnumDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/PackageDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/FileDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/DescriptorValidationException.cs \
- csharp/src/ProtocolBuffers/Descriptors/IndexedDescriptorBase.cs \
- csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/MethodDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/DescriptorUtil.cs \
- csharp/src/ProtocolBuffers/Descriptors/MappedType.cs \
- csharp/src/ProtocolBuffers/Descriptors/FieldType.cs \
- csharp/src/ProtocolBuffers/Descriptors/FieldMappingAttribute.cs \
- csharp/src/ProtocolBuffers/Descriptors/IDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/EnumValueDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs \
- csharp/src/ProtocolBuffers/Descriptors/DescriptorPool.cs \
- csharp/src/ProtocolBuffers/Delegates.cs \
- csharp/src/ProtocolBuffers/AbstractMessageLite.cs \
- csharp/src/ProtocolBuffers/IMessageLite.cs \
- csharp/src/ProtocolBuffers/TextFormat.cs \
- csharp/src/ProtocolBuffers/Collections/Enumerables.cs \
- csharp/src/ProtocolBuffers/Collections/PopsicleList.cs \
- csharp/src/ProtocolBuffers/Collections/IPopsicleList.cs \
- csharp/src/ProtocolBuffers/Collections/ReadOnlyDictionary.cs \
- csharp/src/ProtocolBuffers/Collections/Dictionaries.cs \
- csharp/src/ProtocolBuffers/Collections/Lists.cs \
- csharp/src/ProtocolBuffers/IMessage.cs \
- csharp/src/ProtocolBuffers/TextTokenizer.cs \
- csharp/src/ProtocolBuffers/ByteString.cs \
- csharp/src/ProtocolBuffers/AbstractBuilderLite.cs \
- csharp/src/ProtocolBuffers/GeneratedExtensionBase.cs \
- csharp/src/ProtocolBuffers/EnumLite.cs \
- csharp/src/ProtocolBuffers/ByteArray.cs \
- csharp/src/ProtocolBuffers/ExtensionInfo.cs \
- csharp/src/ProtocolBuffers/MessageStreamIterator.cs \
- csharp/src/ProtocolBuffers/DynamicMessage.cs \
- csharp/src/ProtocolBuffers/ExtendableMessageLite.cs \
- csharp/src/ProtocolBuffers/ICodedOutputStream.cs \
- csharp/src/ProtocolBuffers/GeneratedRepeatExtension.cs \
- csharp/src/ProtocolBuffers/IBuilderLite.cs \
- csharp/src/ProtocolBuffers/UnknownField.cs \
- csharp/src/ProtocolBuffers/ThrowHelper.cs \
- csharp/src/ProtocolBuffers/UnknownFieldSet.cs \
- csharp/src/ProtocolBuffers/AbstractMessage.cs \
- csharp/src/ProtocolBuffers/GeneratedBuilderLite.cs \
- csharp/src/ProtocolBuffers/NameHelpers.cs \
- csharp/src/ProtocolBuffers/DescriptorProtos/PartialClasses.cs \
- csharp/src/ProtocolBuffers/DescriptorProtos/IDescriptorProto.cs \
- csharp/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs \
- csharp/src/ProtocolBuffers/ExtendableBuilder.cs \
- csharp/src/ProtocolBuffers/FieldAccess/IFieldAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/RepeatedPrimitiveAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs \
- csharp/src/ProtocolBuffers/FieldAccess/RepeatedMessageAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/RepeatedEnumAccessor.cs \
- csharp/src/ProtocolBuffers/FieldAccess/ReflectionUtil.cs \
- csharp/src/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs \
- csharp/src/ProtocolBuffers/Properties/AssemblyInfo.cs \
- csharp/src/ProtocolBuffers/IBuilder.cs \
- csharp/src/ProtocolBuffers/ExtensionRegistry.cs \
- csharp/src/ProtocolBuffers/CodedOutputStream.cs \
- csharp/src/ProtocolBuffers/MessageStreamWriter.cs \
- csharp/src/ProtocolBuffers/MessageUtil.cs \
- csharp/src/ProtocolBuffers/UninitializedMessageException.cs \
- csharp/src/ProtocolBuffers/ProtocolBuffersLite.csproj \
- csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs \
- csharp/src/ProtocolBuffers/ProtocolBuffers.csproj \
- csharp/src/ProtocolBuffers/ExtendableBuilderLite.cs \
- csharp/src/ProtocolBuffers/GeneratedMessageLite.cs \
- csharp/src/ProtocolBuffers/GeneratedSingleExtension.cs \
- csharp/src/ProtocolBuffers/ExtensionRegistryLite.cs \
- csharp/src/ProtocolBuffers/WireFormat.cs \
- csharp/src/ProtocolBuffers/GeneratedBuilder.cs \
- csharp/src/AddressBook/ListPeople.cs \
- csharp/src/AddressBook/Addressbook.cs \
- csharp/src/AddressBook/AddPerson.cs \
- csharp/src/AddressBook/AddressBook.csproj \
- csharp/src/AddressBook/SampleUsage.cs \
- csharp/src/AddressBook/app.config \
- csharp/src/AddressBook/Program.cs \
- csharp/src/AddressBook/Properties/AssemblyInfo.cs \
- csharp/src/packages/repositories.config \
- csharp/src/ProtocolBuffers.Test/AbstractMessageTest.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/GoogleSize.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/GoogleSpeed.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestEnormousDescriptor.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnknownEnumTest.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestMset.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImport.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestCustomOptions.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestOptimizeFor.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/Unittest.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestExtrasXmltest.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublic.cs \
- csharp/src/ProtocolBuffers.Test/TestProtos/UnittestDropUnknownFields.cs \
- csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs \
- csharp/src/ProtocolBuffers.Test/packages.config \
- csharp/src/ProtocolBuffers.Test/TestReaderForUrlEncoded.cs \
- csharp/src/ProtocolBuffers.Test/ByteStringTest.cs \
- csharp/src/ProtocolBuffers.Test/ReusableBuilderTest.cs \
- csharp/src/ProtocolBuffers.Test/TestUtil.cs \
- csharp/src/ProtocolBuffers.Test/TestResources.cs \
- csharp/src/ProtocolBuffers.Test/Collections/PopsicleListTest.cs \
- csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj \
- csharp/src/ProtocolBuffers.Test/IssuesTest.cs \
- csharp/src/ProtocolBuffers.Test/UnknownFieldSetTest.cs \
- csharp/src/ProtocolBuffers.Test/TestMimeMessageFormats.cs \
- csharp/src/ProtocolBuffers.Test/App.xaml.cs \
- csharp/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs \
- csharp/src/ProtocolBuffers.Test/DynamicMessageTest.cs \
- csharp/src/ProtocolBuffers.Test/MessageStreamWriterTest.cs \
- csharp/src/ProtocolBuffers.Test/NameHelpersTest.cs \
- csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs \
- csharp/src/ProtocolBuffers.Test/TestWriterFormatXml.cs \
- csharp/src/ProtocolBuffers.Test/ExtendableMessageTest.cs \
- csharp/src/ProtocolBuffers.Test/WireFormatTest.cs \
- csharp/src/ProtocolBuffers.Test/TestWriterFormatJson.cs \
- csharp/src/ProtocolBuffers.Test/MessageUtilTest.cs \
- csharp/src/ProtocolBuffers.Test/App.xaml \
- csharp/src/ProtocolBuffers.Test/Properties/AppManifest.xml \
- csharp/src/ProtocolBuffers.Test/Properties/AssemblyInfo.cs \
- csharp/src/ProtocolBuffers.Test/Properties/OutOfBrowserSettings.xml \
- csharp/src/ProtocolBuffers.Test/TextFormatTest.cs \
- csharp/src/ProtocolBuffers.Test/CodedOutputStreamTest.cs \
- csharp/src/ProtocolBuffers.Test/MessageTest.cs \
- csharp/src/ProtocolBuffers.Test/DescriptorsTest.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/DictionaryCompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/JsonCompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/TextCompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/TestResources.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/google_message1.dat \
- csharp/src/ProtocolBuffers.Test/Compatibility/CompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/google_message2.dat \
- csharp/src/ProtocolBuffers.Test/Compatibility/XmlCompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/Compatibility/BinaryCompatibilityTests.cs \
- csharp/src/ProtocolBuffers.Test/GeneratedBuilderTest.cs \
- csharp/src/ProtocolBuffers.Test/ReflectionTester.cs \
- csharp/src/ProtocolBuffers.Test/FieldPresenceTest.cs \
- csharp/src/ProtocolBuffers.Test/TestCornerCases.cs \
- csharp/src/ProtocolBuffers.Test/MessageStreamIteratorTest.cs \
- csharp/buildall.sh \
- csharp/README.md \
- csharp/.gitignore \
- csharp/protos/extest/unittest_extras_lite.proto \
- csharp/protos/extest/unittest_extras_xmltest.proto \
- csharp/protos/extest/unittest_extras_full.proto \
- csharp/protos/extest/unittest_issues.proto \
- csharp/generate_protos.sh \
- csharp/CHANGES.txt \
- csharp/keys/generate_new_key.bat \
- csharp/keys/Google.ProtocolBuffers.snk \
- csharp/testdata/golden_message \
- csharp/testdata/text_format_unittest_data.txt \
- csharp/testdata/golden_packed_fields_message \
- csharp/testdata/text_format_unittest_extensions_data.txt \
- csharp/build/build.bat \
- csharp/build/googlecode_upload.py \
- csharp/build/build.csproj \
- csharp/build/Google.ProtocolBuffersLite.nuspec \
- csharp/build/Common.targets \
- csharp/build/Google.ProtocolBuffers.nuspec \
- csharp/build/target.csproj \
- csharp/build/nuspec.xsd \
- csharp/build/BuildAll.bat \
- csharp/build/RunBenchmarks.bat \
- csharp/build/publish.csproj
+csharp_EXTRA_DIST= \
+ csharp/CHANGES.txt \
+ csharp/README.md \
+ csharp/build_packages.bat \
+ csharp/buildall.sh \
+ csharp/generate_protos.sh \
+ csharp/keys/Google.ProtocolBuffers.snk \
+ csharp/keys/generate_new_key.bat \
+ csharp/protos/extest/unittest_issues.proto \
+ csharp/src/AddressBook/AddPerson.cs \
+ csharp/src/AddressBook/AddressBook.csproj \
+ csharp/src/AddressBook/Addressbook.cs \
+ csharp/src/AddressBook/ListPeople.cs \
+ csharp/src/AddressBook/Program.cs \
+ csharp/src/AddressBook/Properties/AssemblyInfo.cs \
+ csharp/src/AddressBook/SampleUsage.cs \
+ csharp/src/AddressBook/app.config \
+ csharp/src/ProtoDump/Program.cs \
+ csharp/src/ProtoDump/Properties/AssemblyInfo.cs \
+ csharp/src/ProtoDump/ProtoDump.csproj \
+ csharp/src/ProtoDump/app.config \
+ csharp/src/ProtocolBuffers.Test/ByteStringTest.cs \
+ csharp/src/ProtocolBuffers.Test/CodedInputStreamExtensions.cs \
+ csharp/src/ProtocolBuffers.Test/CodedInputStreamTest.cs \
+ csharp/src/ProtocolBuffers.Test/CodedOutputStreamTest.cs \
+ csharp/src/ProtocolBuffers.Test/Collections/MapFieldTest.cs \
+ csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs \
+ csharp/src/ProtocolBuffers.Test/DeprecatedMemberTest.cs \
+ csharp/src/ProtocolBuffers.Test/EqualityTester.cs \
+ csharp/src/ProtocolBuffers.Test/FieldCodecTest.cs \
+ csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs \
+ csharp/src/ProtocolBuffers.Test/IssuesTest.cs \
+ csharp/src/ProtocolBuffers.Test/JsonFormatterTest.cs \
+ csharp/src/ProtocolBuffers.Test/Properties/AppManifest.xml \
+ csharp/src/ProtocolBuffers.Test/Properties/AssemblyInfo.cs \
+ csharp/src/ProtocolBuffers.Test/Properties/OutOfBrowserSettings.xml \
+ csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj \
+ csharp/src/ProtocolBuffers.Test/Reflection/DescriptorsTest.cs \
+ csharp/src/ProtocolBuffers.Test/SampleEnum.cs \
+ csharp/src/ProtocolBuffers.Test/SampleMessages.cs \
+ csharp/src/ProtocolBuffers.Test/TestCornerCases.cs \
+ csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs \
+ csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs \
+ csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs \
+ csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs \
+ csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs \
+ csharp/src/ProtocolBuffers.Test/packages.config \
+ csharp/src/ProtocolBuffers.sln \
+ csharp/src/ProtocolBuffers/ByteArray.cs \
+ csharp/src/ProtocolBuffers/ByteString.cs \
+ csharp/src/ProtocolBuffers/CodedInputStream.cs \
+ csharp/src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs \
+ csharp/src/ProtocolBuffers/CodedOutputStream.cs \
+ csharp/src/ProtocolBuffers/Collections/MapField.cs \
+ csharp/src/ProtocolBuffers/Collections/ReadOnlyDictionary.cs \
+ csharp/src/ProtocolBuffers/Collections/RepeatedField.cs \
+ csharp/src/ProtocolBuffers/FieldCodec.cs \
+ csharp/src/ProtocolBuffers/FrameworkPortability.cs \
+ csharp/src/ProtocolBuffers/Freezable.cs \
+ csharp/src/ProtocolBuffers/Google.Protobuf.nuspec \
+ csharp/src/ProtocolBuffers/IMessage.cs \
+ csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs \
+ csharp/src/ProtocolBuffers/JsonFormatter.cs \
+ csharp/src/ProtocolBuffers/LimitedInputStream.cs \
+ csharp/src/ProtocolBuffers/MessageExtensions.cs \
+ csharp/src/ProtocolBuffers/MessageParser.cs \
+ csharp/src/ProtocolBuffers/Properties/AssemblyInfo.cs \
+ csharp/src/ProtocolBuffers/ProtocolBuffers.csproj \
+ csharp/src/ProtocolBuffers/Reflection/DescriptorBase.cs \
+ csharp/src/ProtocolBuffers/Reflection/DescriptorPool.cs \
+ csharp/src/ProtocolBuffers/Reflection/DescriptorProtoFile.cs \
+ csharp/src/ProtocolBuffers/Reflection/DescriptorUtil.cs \
+ csharp/src/ProtocolBuffers/Reflection/DescriptorValidationException.cs \
+ csharp/src/ProtocolBuffers/Reflection/EnumDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/EnumValueDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/FieldAccessorBase.cs \
+ csharp/src/ProtocolBuffers/Reflection/FieldAccessorTable.cs \
+ csharp/src/ProtocolBuffers/Reflection/FieldDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/FieldType.cs \
+ csharp/src/ProtocolBuffers/Reflection/FileDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/IDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/IFieldAccessor.cs \
+ csharp/src/ProtocolBuffers/Reflection/MapFieldAccessor.cs \
+ csharp/src/ProtocolBuffers/Reflection/MessageDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/MethodDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/OneofAccessor.cs \
+ csharp/src/ProtocolBuffers/Reflection/OneofDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/PackageDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/PartialClasses.cs \
+ csharp/src/ProtocolBuffers/Reflection/ReflectionUtil.cs \
+ csharp/src/ProtocolBuffers/Reflection/RepeatedFieldAccessor.cs \
+ csharp/src/ProtocolBuffers/Reflection/ServiceDescriptor.cs \
+ csharp/src/ProtocolBuffers/Reflection/SingleFieldAccessor.cs \
+ csharp/src/ProtocolBuffers/ThrowHelper.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Any.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Api.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Duration.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Empty.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/FieldMask.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/SourceContext.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Struct.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Timestamp.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Type.cs \
+ csharp/src/ProtocolBuffers/WellKnownTypes/Wrappers.cs \
+ csharp/src/ProtocolBuffers/WireFormat.cs \
+ csharp/src/packages/repositories.config
java_EXTRA_DIST= \
java/src/main/java/com/google/protobuf/AbstractMessage.java \
diff --git a/Protobuf.podspec b/Protobuf.podspec
index b6b831c2..6aa89902 100644
--- a/Protobuf.podspec
+++ b/Protobuf.podspec
@@ -11,25 +11,11 @@ Pod::Spec.new do |s|
s.license = 'New BSD'
s.authors = { 'The Protocol Buffers contributors' => 'protobuf@googlegroups.com' }
- s.source_files = 'objectivec/*.{h,m}',
- 'objectivec/google/protobuf/Any.pbobjc.{h,m}',
- 'objectivec/google/protobuf/Api.pbobjc.{h,m}',
- 'objectivec/google/protobuf/Descriptor.pbobjc.{h,m}',
- 'objectivec/google/protobuf/Duration.pbobjc.h',
- 'objectivec/google/protobuf/Empty.pbobjc.{h,m}',
- 'objectivec/google/protobuf/FieldMask.pbobjc.{h,m}',
- 'objectivec/google/protobuf/SourceContext.pbobjc.{h,m}',
- 'objectivec/google/protobuf/Struct.pbobjc.{h,m}',
- 'objectivec/google/protobuf/Timestamp.pbobjc.h',
- 'objectivec/google/protobuf/Type.pbobjc.{h,m}'
- 'objectivec/google/protobuf/Wrappers.pbobjc.{h,m}'
- # Timestamp.pbobjc.m and Duration.pbobjc.m are #imported by GPBWellKnownTypes.m. So we can't
- # compile them (duplicate symbols), but we need them available for the importing:
- s.preserve_paths = 'objectivec/google/protobuf/Duration.pbobjc.m',
- 'objectivec/google/protobuf/Timestamp.pbobjc.m'
- # The following would cause duplicate symbol definitions. GPBProtocolBuffers is expected to be
- # left out, as it's an umbrella implementation file.
- s.exclude_files = 'objectivec/GPBProtocolBuffers.m'
+ s.source_files = 'objectivec/GPBProtocolBuffers.{h,m}'
+ # GPBProtocolBuffers.{h,m} are umbrella files. We need Cocoapods to preserve the files imported by
+ # them.
+ s.preserve_paths = 'objectivec/*.{h,m}',
+ 'objectivec/google/protobuf/*.pbobjc.{h,m}'
s.header_mappings_dir = 'objectivec'
s.ios.deployment_target = '6.0'
diff --git a/WORKSPACE b/WORKSPACE
index e69de29b..f72f239a 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -0,0 +1,16 @@
+new_http_archive(
+ name = "gmock_archive",
+ url = "https://googlemock.googlecode.com/files/gmock-1.7.0.zip",
+ sha256 = "26fcbb5925b74ad5fc8c26b0495dfc96353f4d553492eb97e85a8a6d2f43095b",
+ build_file = "gmock.BUILD",
+)
+
+bind(
+ name = "gtest",
+ actual = "@gmock_archive//:gtest",
+)
+
+bind(
+ name = "gtest_main",
+ actual = "@gmock_archive//:gtest_main",
+)
diff --git a/appveyor.bat b/appveyor.bat
new file mode 100644
index 00000000..c50616f3
--- /dev/null
+++ b/appveyor.bat
@@ -0,0 +1,29 @@
+setlocal
+
+IF %language%==cpp GOTO build_cpp
+IF %language%==csharp GOTO build_csharp
+
+echo Unsupported language %language%. Exiting.
+goto :error
+
+:build_cpp
+echo Building C++
+mkdir build_msvc
+cd build_msvc
+cmake -G "%generator%" -DBUILD_SHARED_LIBS=%BUILD_DLL% ../cmake
+msbuild protobuf.sln /p:Platform=%vcplatform% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" || goto error
+cd %configuration%
+tests.exe || goto error
+goto :EOF
+
+:build_csharp
+echo Building C#
+cd csharp\src
+nuget restore
+msbuild ProtocolBuffers.sln /p:Platform="Any CPU" /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" || goto error
+nunit-console ProtocolBuffers.Test\bin\%configuration%\Google.Protobuf.Test.dll || goto error
+goto :EOF
+
+:error
+echo Failed!
+EXIT /b %ERRORLEVEL% \ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
index 476a1179..3447602e 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -9,7 +9,10 @@ configuration:
environment:
matrix:
- - BUILD_DLL: ON
+ - language: cpp
+ BUILD_DLL: ON
+
+ - language: csharp
install:
- ps: Start-FileDownload https://googlemock.googlecode.com/files/gmock-1.7.0.zip
@@ -23,12 +26,7 @@ before_build:
- if %platform%==Win64 set vcplatform=x64
build_script:
- - mkdir build_msvc
- - cd build_msvc
- - cmake -G "%generator%" -DBUILD_SHARED_LIBS=%BUILD_DLL% ../cmake
- - msbuild protobuf.sln /p:Platform=%vcplatform% /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
- - cd %configuration%
- - tests.exe
+ - CALL appveyor.bat
skip_commits:
message: /.*\[skip appveyor\].*/
diff --git a/cmake/README.md b/cmake/README.md
index 0abe078e..c68defd8 100644
--- a/cmake/README.md
+++ b/cmake/README.md
@@ -32,7 +32,7 @@ Compiling and Installing
If you don't have gmock, skip the build of tests by turning off the
BUILD_TESTING option:
- $ cmake -G "Visutal Studio 9 2008" -DBUILD_TESTING=OFF ..
+ $ cmake -G "Visual Studio 9 2008" -DBUILD_TESTING=OFF ..
3. Open the generated protobuf.sln file in Microsoft Visual Studio.
4. Choose "Debug" or "Release" configuration as desired.
diff --git a/cmake/extract_includes.bat.in b/cmake/extract_includes.bat.in
index 500975bb..6ee657bc 100644
--- a/cmake/extract_includes.bat.in
+++ b/cmake/extract_includes.bat.in
@@ -90,7 +90,6 @@ copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\common.h include
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\fastmem.h include\google\protobuf\stubs\fastmem.h
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\hash.h include\google\protobuf\stubs\hash.h
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\once.h include\google\protobuf\stubs\once.h
-copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\pbconfig.h include\google\protobuf\stubs\pbconfig.h
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\platform_macros.h include\google\protobuf\stubs\platform_macros.h
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\shared_ptr.h include\google\protobuf\stubs\shared_ptr.h
copy ${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\singleton.h include\google\protobuf\stubs\singleton.h
diff --git a/conformance/ConformanceJava.java b/conformance/ConformanceJava.java
index c1a53141..25646b85 100644
--- a/conformance/ConformanceJava.java
+++ b/conformance/ConformanceJava.java
@@ -54,7 +54,7 @@ class ConformanceJava {
break;
}
case JSON_PAYLOAD: {
- return Conformance.ConformanceResponse.newBuilder().setRuntimeError("JSON not yet supported.").build();
+ return Conformance.ConformanceResponse.newBuilder().setSkipped("JSON not yet supported.").build();
}
case PAYLOAD_NOT_SET: {
throw new RuntimeException("Request didn't have payload.");
@@ -65,7 +65,7 @@ class ConformanceJava {
}
}
- switch (request.getRequestedOutput()) {
+ switch (request.getRequestedOutputFormat()) {
case UNSPECIFIED:
throw new RuntimeException("Unspecified output format.");
@@ -73,7 +73,7 @@ class ConformanceJava {
return Conformance.ConformanceResponse.newBuilder().setProtobufPayload(testMessage.toByteString()).build();
case JSON:
- return Conformance.ConformanceResponse.newBuilder().setRuntimeError("JSON not yet supported.").build();
+ return Conformance.ConformanceResponse.newBuilder().setSkipped("JSON not yet supported.").build();
default: {
throw new RuntimeException("Unexpected request output.");
diff --git a/conformance/conformance.proto b/conformance/conformance.proto
index 39eafdbb..714cbe78 100644
--- a/conformance/conformance.proto
+++ b/conformance/conformance.proto
@@ -51,6 +51,12 @@ option java_package = "com.google.protobuf.conformance";
// - running as a sub-process may be more tricky in unusual environments like
// iOS apps, where fork/stdin/stdout are not available.
+enum WireFormat {
+ UNSPECIFIED = 0;
+ PROTOBUF = 1;
+ JSON = 2;
+}
+
// Represents a single test case's input. The testee should:
//
// 1. parse this proto (which should always succeed)
@@ -64,14 +70,8 @@ message ConformanceRequest {
string json_payload = 2;
}
- enum RequestedOutput {
- UNSPECIFIED = 0;
- PROTOBUF = 1;
- JSON = 2;
- }
-
// Which format should the testee serialize its message to?
- RequestedOutput requested_output = 3;
+ WireFormat requested_output_format = 3;
}
// Represents a single test case's output.
@@ -96,6 +96,10 @@ message ConformanceResponse {
// If the input was successfully parsed and the requested output was JSON,
// serialize to JSON and set it in this field.
string json_payload = 4;
+
+ // For when the testee skipped the test, likely because a certain feature
+ // wasn't supported, like JSON input/output.
+ string skipped = 5;
}
}
diff --git a/conformance/conformance_cpp.cc b/conformance/conformance_cpp.cc
index ff47fbbf..863b6a5b 100644
--- a/conformance/conformance_cpp.cc
+++ b/conformance/conformance_cpp.cc
@@ -33,14 +33,33 @@
#include <unistd.h>
#include "conformance.pb.h"
+#include <google/protobuf/util/json_util.h>
+#include <google/protobuf/util/type_resolver_util.h>
-using std::string;
using conformance::ConformanceRequest;
using conformance::ConformanceResponse;
using conformance::TestAllTypes;
+using google::protobuf::Descriptor;
+using google::protobuf::DescriptorPool;
+using google::protobuf::internal::scoped_ptr;
+using google::protobuf::util::BinaryToJsonString;
+using google::protobuf::util::JsonToBinaryString;
+using google::protobuf::util::NewTypeResolverForDescriptorPool;
+using google::protobuf::util::Status;
+using google::protobuf::util::TypeResolver;
+using std::string;
+
+static const char kTypeUrlPrefix[] = "type.googleapis.com";
+
+static string GetTypeUrl(const Descriptor* message) {
+ return string(kTypeUrlPrefix) + "/" + message->full_name();
+}
int test_count = 0;
bool verbose = false;
+TypeResolver* type_resolver;
+string* type_url;
+
bool CheckedRead(int fd, void *buf, size_t len) {
size_t ofs = 0;
@@ -79,27 +98,43 @@ void DoTest(const ConformanceRequest& request, ConformanceResponse* response) {
}
break;
- case ConformanceRequest::kJsonPayload:
- response->set_runtime_error("JSON input is not yet supported.");
+ case ConformanceRequest::kJsonPayload: {
+ string proto_binary;
+ Status status = JsonToBinaryString(type_resolver, *type_url,
+ request.json_payload(), &proto_binary);
+ if (!status.ok()) {
+ response->set_parse_error(string("Parse error: ") +
+ status.error_message().as_string());
+ return;
+ }
+
+ GOOGLE_CHECK(test_message.ParseFromString(proto_binary));
break;
+ }
case ConformanceRequest::PAYLOAD_NOT_SET:
GOOGLE_LOG(FATAL) << "Request didn't have payload.";
break;
}
- switch (request.requested_output()) {
- case ConformanceRequest::UNSPECIFIED:
+ switch (request.requested_output_format()) {
+ case conformance::UNSPECIFIED:
GOOGLE_LOG(FATAL) << "Unspecified output format";
break;
- case ConformanceRequest::PROTOBUF:
- test_message.SerializeToString(response->mutable_protobuf_payload());
+ case conformance::PROTOBUF:
+ GOOGLE_CHECK(
+ test_message.SerializeToString(response->mutable_protobuf_payload()));
break;
- case ConformanceRequest::JSON:
- response->set_runtime_error("JSON output is not yet supported.");
+ case conformance::JSON: {
+ string proto_binary;
+ GOOGLE_CHECK(test_message.SerializeToString(&proto_binary));
+ Status status = BinaryToJsonString(type_resolver, *type_url, proto_binary,
+ response->mutable_json_payload());
+ GOOGLE_CHECK(status.ok());
break;
+ }
}
}
@@ -146,6 +181,9 @@ bool DoTestIo() {
}
int main() {
+ type_resolver = NewTypeResolverForDescriptorPool(
+ kTypeUrlPrefix, DescriptorPool::generated_pool());
+ type_url = new string(GetTypeUrl(TestAllTypes::descriptor()));
while (1) {
if (!DoTestIo()) {
fprintf(stderr, "conformance-cpp: received EOF from test runner "
diff --git a/conformance/conformance_test.cc b/conformance/conformance_test.cc
index 7a7fc6f5..0ee201f3 100644
--- a/conformance/conformance_test.cc
+++ b/conformance/conformance_test.cc
@@ -35,18 +35,34 @@
#include "conformance_test.h"
#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/stringprintf.h>
+#include <google/protobuf/text_format.h>
+#include <google/protobuf/util/json_util.h>
+#include <google/protobuf/util/message_differencer.h>
+#include <google/protobuf/util/type_resolver_util.h>
#include <google/protobuf/wire_format_lite.h>
using conformance::ConformanceRequest;
using conformance::ConformanceResponse;
using conformance::TestAllTypes;
+using conformance::WireFormat;
using google::protobuf::Descriptor;
using google::protobuf::FieldDescriptor;
using google::protobuf::internal::WireFormatLite;
+using google::protobuf::TextFormat;
+using google::protobuf::util::JsonToBinaryString;
+using google::protobuf::util::MessageDifferencer;
+using google::protobuf::util::NewTypeResolverForDescriptorPool;
+using google::protobuf::util::Status;
using std::string;
namespace {
+static const char kTypeUrlPrefix[] = "type.googleapis.com";
+
+static string GetTypeUrl(const Descriptor* message) {
+ return string(kTypeUrlPrefix) + "/" + message->full_name();
+}
+
/* Routines for building arbitrary protos *************************************/
// We would use CodedOutputStream except that we want more freedom to build
@@ -162,9 +178,13 @@ void ConformanceTestSuite::ReportSuccess(const string& test_name) {
}
void ConformanceTestSuite::ReportFailure(const string& test_name,
+ const ConformanceRequest& request,
+ const ConformanceResponse& response,
const char* fmt, ...) {
if (expected_to_fail_.erase(test_name) == 1) {
- StringAppendF(&output_, "FAILED AS EXPECTED, test=%s: ", test_name.c_str());
+ expected_failures_++;
+ if (!verbose_)
+ return;
} else {
StringAppendF(&output_, "ERROR, test=%s: ", test_name.c_str());
unexpected_failing_tests_.insert(test_name);
@@ -173,7 +193,20 @@ void ConformanceTestSuite::ReportFailure(const string& test_name,
va_start(args, fmt);
StringAppendV(&output_, fmt, args);
va_end(args);
- failures_++;
+ StringAppendF(&output_, " request=%s, response=%s\n",
+ request.ShortDebugString().c_str(),
+ response.ShortDebugString().c_str());
+}
+
+void ConformanceTestSuite::ReportSkip(const string& test_name,
+ const ConformanceRequest& request,
+ const ConformanceResponse& response) {
+ if (verbose_) {
+ StringAppendF(&output_, "SKIPPED, test=%s request=%s, response=%s\n",
+ test_name.c_str(), request.ShortDebugString().c_str(),
+ response.ShortDebugString().c_str());
+ }
+ skipped_.insert(test_name);
}
void ConformanceTestSuite::RunTest(const string& test_name,
@@ -202,26 +235,117 @@ void ConformanceTestSuite::RunTest(const string& test_name,
}
}
+void ConformanceTestSuite::RunValidInputTest(
+ const string& test_name, const string& input, WireFormat input_format,
+ const string& equivalent_text_format, WireFormat requested_output) {
+ TestAllTypes reference_message;
+ GOOGLE_CHECK(
+ TextFormat::ParseFromString(equivalent_text_format, &reference_message));
+
+ ConformanceRequest request;
+ ConformanceResponse response;
+
+ switch (input_format) {
+ case conformance::PROTOBUF:
+ request.set_protobuf_payload(input);
+ break;
+
+ case conformance::JSON:
+ request.set_json_payload(input);
+ break;
+
+ case conformance::UNSPECIFIED:
+ GOOGLE_LOG(FATAL) << "Unspecified input format";
+
+ }
+
+ request.set_requested_output_format(requested_output);
+
+ RunTest(test_name, request, &response);
+
+ TestAllTypes test_message;
+
+ switch (response.result_case()) {
+ case ConformanceResponse::kParseError:
+ case ConformanceResponse::kRuntimeError:
+ ReportFailure(test_name, request, response,
+ "Failed to parse valid JSON input.");
+ return;
+
+ case ConformanceResponse::kSkipped:
+ ReportSkip(test_name, request, response);
+ return;
+
+ case ConformanceResponse::kJsonPayload: {
+ if (requested_output != conformance::JSON) {
+ ReportFailure(
+ test_name, request, response,
+ "Test was asked for protobuf output but provided JSON instead.");
+ return;
+ }
+ string binary_protobuf;
+ Status status =
+ JsonToBinaryString(type_resolver_.get(), type_url_,
+ response.json_payload(), &binary_protobuf);
+ if (!status.ok()) {
+ ReportFailure(test_name, request, response,
+ "JSON output we received from test was unparseable.");
+ return;
+ }
+
+ GOOGLE_CHECK(test_message.ParseFromString(binary_protobuf));
+ break;
+ }
+
+ case ConformanceResponse::kProtobufPayload: {
+ if (requested_output != conformance::PROTOBUF) {
+ ReportFailure(
+ test_name, request, response,
+ "Test was asked for JSON output but provided protobuf instead.");
+ return;
+ }
+
+ if (!test_message.ParseFromString(response.protobuf_payload())) {
+ ReportFailure(test_name, request, response,
+ "Protobuf output we received from test was unparseable.");
+ return;
+ }
+
+ break;
+ }
+ }
+
+ MessageDifferencer differencer;
+ string differences;
+ differencer.ReportDifferencesToString(&differences);
+
+ if (differencer.Equals(reference_message, test_message)) {
+ ReportSuccess(test_name);
+ } else {
+ ReportFailure(test_name, request, response,
+ "Output was not equivalent to reference message: %s.",
+ differences.c_str());
+ }
+}
+
// Expect that this precise protobuf will cause a parse error.
void ConformanceTestSuite::ExpectParseFailureForProto(
const string& proto, const string& test_name) {
ConformanceRequest request;
ConformanceResponse response;
request.set_protobuf_payload(proto);
+ string effective_test_name = "ProtobufInput." + test_name;
// We don't expect output, but if the program erroneously accepts the protobuf
// we let it send its response as this. We must not leave it unspecified.
- request.set_requested_output(ConformanceRequest::PROTOBUF);
+ request.set_requested_output_format(conformance::PROTOBUF);
- RunTest(test_name, request, &response);
+ RunTest(effective_test_name, request, &response);
if (response.result_case() == ConformanceResponse::kParseError) {
- ReportSuccess(test_name);
+ ReportSuccess(effective_test_name);
} else {
- ReportFailure(test_name,
- "Should have failed to parse, but didn't. Request: %s, "
- "response: %s\n",
- request.ShortDebugString().c_str(),
- response.ShortDebugString().c_str());
+ ReportFailure(effective_test_name, request, response,
+ "Should have failed to parse, but didn't.");
}
}
@@ -235,6 +359,16 @@ void ConformanceTestSuite::ExpectHardParseFailureForProto(
return ExpectParseFailureForProto(proto, test_name);
}
+void ConformanceTestSuite::RunValidJsonTest(
+ const string& test_name, const string& input_json,
+ const string& equivalent_text_format) {
+ RunValidInputTest("JsonInput." + test_name + ".JsonOutput", input_json,
+ conformance::JSON, equivalent_text_format,
+ conformance::PROTOBUF);
+ RunValidInputTest("JsonInput." + test_name + ".ProtobufOutput", input_json, conformance::JSON,
+ equivalent_text_format, conformance::JSON);
+}
+
void ConformanceTestSuite::TestPrematureEOFForType(FieldDescriptor::Type type) {
// Incomplete values for each wire type.
static const string incompletes[6] = {
@@ -333,11 +467,12 @@ bool ConformanceTestSuite::CheckSetEmpty(const set<string>& set_to_check,
return true;
} else {
StringAppendF(&output_, "\n");
- StringAppendF(&output_, "ERROR: %s:\n", msg);
+ StringAppendF(&output_, "%s:\n", msg);
for (set<string>::const_iterator iter = set_to_check.begin();
iter != set_to_check.end(); ++iter) {
- StringAppendF(&output_, "%s\n", iter->c_str());
+ StringAppendF(&output_, " %s\n", iter->c_str());
}
+ StringAppendF(&output_, "\n");
return false;
}
}
@@ -345,23 +480,25 @@ bool ConformanceTestSuite::CheckSetEmpty(const set<string>& set_to_check,
bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
std::string* output) {
runner_ = runner;
- output_.clear();
successes_ = 0;
- failures_ = 0;
+ expected_failures_ = 0;
+ skipped_.clear();
test_names_.clear();
unexpected_failing_tests_.clear();
unexpected_succeeding_tests_.clear();
+ type_resolver_.reset(NewTypeResolverForDescriptorPool(
+ kTypeUrlPrefix, DescriptorPool::generated_pool()));
+ type_url_ = GetTypeUrl(TestAllTypes::descriptor());
+
+ output_ = "\nCONFORMANCE TEST BEGIN ====================================\n\n";
for (int i = 1; i <= FieldDescriptor::MAX_TYPE; i++) {
if (i == FieldDescriptor::TYPE_GROUP) continue;
TestPrematureEOFForType(static_cast<FieldDescriptor::Type>(i));
}
- StringAppendF(&output_, "\n");
- StringAppendF(&output_,
- "CONFORMANCE SUITE FINISHED: completed %d tests, %d successes, "
- "%d failures.\n",
- successes_ + failures_, successes_, failures_);
+ RunValidJsonTest("HelloWorld", "{\"optionalString\":\"Hello, World!\"}",
+ "optional_string: 'Hello, World!'");
bool ok =
CheckSetEmpty(expected_to_fail_,
@@ -377,6 +514,17 @@ bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner,
"These tests succeeded, even though they were listed in "
"the failure list. Remove them from the failure list");
+ CheckSetEmpty(skipped_,
+ "These tests were skipped (probably because support for some "
+ "features is not implemented)");
+
+ StringAppendF(&output_,
+ "CONFORMANCE SUITE %s: %d successes, %d skipped, "
+ "%d expected failures, %d unexpected failures.\n",
+ ok ? "PASSED" : "FAILED", successes_, skipped_.size(),
+ expected_failures_, unexpected_failing_tests_.size());
+ StringAppendF(&output_, "\n");
+
output->assign(output_);
return ok;
diff --git a/conformance/conformance_test.h b/conformance/conformance_test.h
index 764a8d33..cadda828 100644
--- a/conformance/conformance_test.h
+++ b/conformance/conformance_test.h
@@ -39,6 +39,8 @@
#define CONFORMANCE_CONFORMANCE_TEST_H
#include <string>
+#include <google/protobuf/stubs/common.h>
+#include <google/protobuf/util/type_resolver.h>
#include <google/protobuf/wire_format_lite.h>
namespace conformance {
@@ -98,10 +100,22 @@ class ConformanceTestSuite {
private:
void ReportSuccess(const std::string& test_name);
- void ReportFailure(const std::string& test_name, const char* fmt, ...);
+ void ReportFailure(const string& test_name,
+ const conformance::ConformanceRequest& request,
+ const conformance::ConformanceResponse& response,
+ const char* fmt, ...);
+ void ReportSkip(const string& test_name,
+ const conformance::ConformanceRequest& request,
+ const conformance::ConformanceResponse& response);
void RunTest(const std::string& test_name,
const conformance::ConformanceRequest& request,
conformance::ConformanceResponse* response);
+ void RunValidInputTest(const string& test_name, const string& input,
+ conformance::WireFormat input_format,
+ const string& equivalent_text_format,
+ conformance::WireFormat requested_output);
+ void RunValidJsonTest(const string& test_name, const string& input_json,
+ const string& equivalent_text_format);
void ExpectParseFailureForProto(const std::string& proto,
const std::string& test_name);
void ExpectHardParseFailureForProto(const std::string& proto,
@@ -110,7 +124,7 @@ class ConformanceTestSuite {
bool CheckSetEmpty(const set<string>& set_to_check, const char* msg);
ConformanceTestRunner* runner_;
int successes_;
- int failures_;
+ int expected_failures_;
bool verbose_;
std::string output_;
@@ -127,6 +141,13 @@ class ConformanceTestSuite {
// The set of tests that succeeded, but weren't expected to.
std::set<std::string> unexpected_succeeding_tests_;
+
+ // The set of tests that the testee opted out of;
+ std::set<std::string> skipped_;
+
+ google::protobuf::internal::scoped_ptr<google::protobuf::util::TypeResolver>
+ type_resolver_;
+ std::string type_url_;
};
} // namespace protobuf
diff --git a/conformance/failure_list_cpp.txt b/conformance/failure_list_cpp.txt
index d792eddd..53d90c99 100644
--- a/conformance/failure_list_cpp.txt
+++ b/conformance/failure_list_cpp.txt
@@ -7,15 +7,15 @@
# TODO(haberman): insert links to corresponding bugs tracking the issue.
# Should we use GitHub issues or the Google-internal bug tracker?
-PrematureEofBeforeKnownRepeatedValue.MESSAGE
-PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE
-PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE
-PrematureEofInPackedField.BOOL
-PrematureEofInPackedField.ENUM
-PrematureEofInPackedField.INT32
-PrematureEofInPackedField.INT64
-PrematureEofInPackedField.SINT32
-PrematureEofInPackedField.SINT64
-PrematureEofInPackedField.UINT32
-PrematureEofInPackedField.UINT64
-PrematureEofInsideKnownRepeatedValue.MESSAGE
+ProtobufInput.PrematureEofBeforeKnownRepeatedValue.MESSAGE
+ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE
+ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE
+ProtobufInput.PrematureEofInPackedField.BOOL
+ProtobufInput.PrematureEofInPackedField.ENUM
+ProtobufInput.PrematureEofInPackedField.INT32
+ProtobufInput.PrematureEofInPackedField.INT64
+ProtobufInput.PrematureEofInPackedField.SINT32
+ProtobufInput.PrematureEofInPackedField.SINT64
+ProtobufInput.PrematureEofInPackedField.UINT32
+ProtobufInput.PrematureEofInPackedField.UINT64
+ProtobufInput.PrematureEofInsideKnownRepeatedValue.MESSAGE
diff --git a/csharp/.gitignore b/csharp/.gitignore
index d7dcef59..91baa54e 100644
--- a/csharp/.gitignore
+++ b/csharp/.gitignore
@@ -5,23 +5,10 @@ src/AddressBook/bin
src/AddressBook/obj
src/ProtocolBuffers/bin/
src/ProtocolBuffers/obj/
-src/ProtocolBuffers/objCF
-src/ProtocolBuffers.Serialization/bin/
-src/ProtocolBuffers.Serialization/obj/
src/ProtocolBuffers.Test/bin/
src/ProtocolBuffers.Test/obj/
-src/ProtocolBuffersLite.Test/bin/
-src/ProtocolBuffersLite.Test/obj/
-src/ProtoBench/bin/
-src/ProtoBench/obj/
src/ProtoDump/bin/
src/ProtoDump/obj/
-src/ProtoGen/bin/
-src/ProtoGen/obj/
-src/ProtoGen.Test/bin/
-src/ProtoGen.Test/obj/
-src/ProtoMunge/bin/
-src/ProtoMunge/obj/
mono/bin
mono/tmp
mono/protoc
@@ -36,6 +23,7 @@ lib/NUnit
#
*.user
*.suo
+*.nupkg
_ReSharper.*
*.sln.cache
mono/TestResult.xml
diff --git a/csharp/build_packages.bat b/csharp/build_packages.bat
new file mode 100644
index 00000000..315c1501
--- /dev/null
+++ b/csharp/build_packages.bat
@@ -0,0 +1,13 @@
+@rem Builds Google.Protobuf NuGet packages
+
+@rem Adjust the location of nuget.exe
+set NUGET=C:\nuget\nuget.exe
+
+@rem Build src/ProtocolBuffers.sln solution in Release configuration first.
+%NUGET% pack src\ProtocolBuffers\Google.Protobuf.nuspec -Symbols || goto :error
+
+goto :EOF
+
+:error
+echo Failed!
+exit /b %errorlevel%
diff --git a/csharp/generate_protos.sh b/csharp/generate_protos.sh
index e861f16f..b7f837e1 100755
--- a/csharp/generate_protos.sh
+++ b/csharp/generate_protos.sh
@@ -38,10 +38,22 @@ fi
# Descriptor proto
# TODO(jonskeet): Remove fixup
cp src/google/protobuf/descriptor.proto src/google/protobuf/descriptor_proto_file.proto
-$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffers/DescriptorProtos \
+$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffers/Reflection \
src/google/protobuf/descriptor_proto_file.proto
rm src/google/protobuf/descriptor_proto_file.proto
+$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffers/WellKnownTypes \
+ src/google/protobuf/any.proto \
+ src/google/protobuf/api.proto \
+ src/google/protobuf/duration.proto \
+ src/google/protobuf/empty.proto \
+ src/google/protobuf/field_mask.proto \
+ src/google/protobuf/source_context.proto \
+ src/google/protobuf/struct.proto \
+ src/google/protobuf/timestamp.proto \
+ src/google/protobuf/type.proto \
+ src/google/protobuf/wrappers.proto
+
$PROTOC -Isrc --csharp_out=csharp/src/ProtocolBuffers.Test/TestProtos \
src/google/protobuf/map_unittest_proto3.proto \
src/google/protobuf/unittest_proto3.proto \
diff --git a/csharp/src/AddressBook/Addressbook.cs b/csharp/src/AddressBook/Addressbook.cs
index 5f4a5139..494ee9eb 100644
--- a/csharp/src/AddressBook/Addressbook.cs
+++ b/csharp/src/AddressBook/Addressbook.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.Examples.AddressBook {
@@ -13,15 +13,15 @@ namespace Google.Protobuf.Examples.AddressBook {
public static partial class Addressbook {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_Person__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_tutorial_AddressBook__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_tutorial_Person__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_tutorial_AddressBook__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static Addressbook() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -35,18 +35,18 @@ namespace Google.Protobuf.Examples.AddressBook {
"ASADKAsyEC50dXRvcmlhbC5QZXJzb25CUAoUY29tLmV4YW1wbGUudHV0b3Jp",
"YWxCEUFkZHJlc3NCb29rUHJvdG9zqgIkR29vZ2xlLlByb3RvYnVmLkV4YW1w",
"bGVzLkFkZHJlc3NCb29rYgZwcm90bzM="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
});
internal__static_tutorial_Person__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.Person), descriptor.MessageTypes[0],
- new string[] { "Name", "Id", "Email", "Phone", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.Person), descriptor.MessageTypes[0],
+ new string[] { "Name", "Id", "Email", "Phone", }, new string[] { });
internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneNumber), descriptor.MessageTypes[0].NestedTypes[0],
- new string[] { "Number", "Type", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneNumber), descriptor.MessageTypes[0].NestedTypes[0],
+ new string[] { "Number", "Type", }, new string[] { });
internal__static_tutorial_AddressBook__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.AddressBook), descriptor.MessageTypes[1],
- new string[] { "Person", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Examples.AddressBook.AddressBook), descriptor.MessageTypes[1],
+ new string[] { "Person", }, new string[] { });
}
#endregion
@@ -59,11 +59,11 @@ namespace Google.Protobuf.Examples.AddressBook {
private static readonly string[] _fieldNames = new string[] { "email", "id", "name", "phone" };
private static readonly uint[] _fieldTags = new uint[] { 26, 16, 10, 34 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.Examples.AddressBook.Addressbook.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.Examples.AddressBook.Addressbook.internal__static_tutorial_Person__FieldAccessorTable; }
}
@@ -160,6 +160,10 @@ namespace Google.Protobuf.Examples.AddressBook {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -254,11 +258,11 @@ namespace Google.Protobuf.Examples.AddressBook {
private static readonly string[] _fieldNames = new string[] { "number", "type" };
private static readonly uint[] _fieldTags = new uint[] { 10, 16 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.Examples.AddressBook.Person.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.Examples.AddressBook.Addressbook.internal__static_tutorial_Person_PhoneNumber__FieldAccessorTable; }
}
@@ -330,6 +334,10 @@ namespace Google.Protobuf.Examples.AddressBook {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Number.Length != 0) {
output.WriteRawTag(10);
@@ -401,11 +409,11 @@ namespace Google.Protobuf.Examples.AddressBook {
private static readonly string[] _fieldNames = new string[] { "person" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.Examples.AddressBook.Addressbook.Descriptor.MessageTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.Examples.AddressBook.Addressbook.internal__static_tutorial_AddressBook__FieldAccessorTable; }
}
@@ -463,6 +471,10 @@ namespace Google.Protobuf.Examples.AddressBook {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
person_.WriteTo(output, _repeated_person_codec);
}
diff --git a/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs b/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
index 6eff8683..25be7731 100644
--- a/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/Collections/RepeatedFieldTest.cs
@@ -241,18 +241,12 @@ namespace Google.Protobuf.Collections
var list = new RepeatedField<string> { "first", "second" };
using (var enumerator = list.GetEnumerator())
{
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
Assert.IsTrue(enumerator.MoveNext());
Assert.AreEqual("first", enumerator.Current);
Assert.IsTrue(enumerator.MoveNext());
Assert.AreEqual("second", enumerator.Current);
Assert.IsFalse(enumerator.MoveNext());
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
Assert.IsFalse(enumerator.MoveNext());
- enumerator.Reset();
- Assert.Throws<InvalidOperationException>(() => enumerator.Current.GetHashCode());
- Assert.IsTrue(enumerator.MoveNext());
- Assert.AreEqual("first", enumerator.Current);
}
}
diff --git a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
index 8cee9820..acb20b15 100644
--- a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs
@@ -604,7 +604,7 @@ namespace Google.Protobuf
public void Reflection_GetValue()
{
var message = SampleMessages.CreateFullTestAllTypes();
- var fields = message.Fields;
+ var fields = ((IReflectedMessage) message).Fields;
Assert.AreEqual(message.SingleBool, fields[TestAllTypes.SingleBoolFieldNumber].GetValue(message));
Assert.AreEqual(message.SingleBytes, fields[TestAllTypes.SingleBytesFieldNumber].GetValue(message));
Assert.AreEqual(message.SingleDouble, fields[TestAllTypes.SingleDoubleFieldNumber].GetValue(message));
@@ -639,7 +639,8 @@ namespace Google.Protobuf
// Just a single map field, for the same reason
var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } };
- var dictionary = (IDictionary)mapMessage.Fields[TestMap.MapStringStringFieldNumber].GetValue(mapMessage);
+ fields = ((IReflectedMessage) mapMessage).Fields;
+ var dictionary = (IDictionary) fields[TestMap.MapStringStringFieldNumber].GetValue(mapMessage);
Assert.AreEqual(mapMessage.MapStringString, dictionary);
Assert.AreEqual("value1", dictionary["key1"]);
}
@@ -647,7 +648,7 @@ namespace Google.Protobuf
[Test]
public void Reflection_Clear()
{
- var message = SampleMessages.CreateFullTestAllTypes();
+ IReflectedMessage message = SampleMessages.CreateFullTestAllTypes();
var fields = message.Fields;
fields[TestAllTypes.SingleBoolFieldNumber].Clear(message);
fields[TestAllTypes.SingleInt32FieldNumber].Clear(message);
@@ -672,7 +673,8 @@ namespace Google.Protobuf
// Separately, maps.
var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } };
- mapMessage.Fields[TestMap.MapStringStringFieldNumber].Clear(mapMessage);
+ fields = ((IReflectedMessage) mapMessage).Fields;
+ fields[TestMap.MapStringStringFieldNumber].Clear(mapMessage);
Assert.AreEqual(0, mapMessage.MapStringString.Count);
}
@@ -680,7 +682,7 @@ namespace Google.Protobuf
public void Reflection_SetValue_SingleFields()
{
// Just a sample (primitives, messages, enums, strings, byte strings)
- var message = SampleMessages.CreateFullTestAllTypes();
+ IReflectedMessage message = SampleMessages.CreateFullTestAllTypes();
var fields = message.Fields;
fields[TestAllTypes.SingleBoolFieldNumber].SetValue(message, false);
fields[TestAllTypes.SingleInt32FieldNumber].SetValue(message, 500);
@@ -707,7 +709,7 @@ namespace Google.Protobuf
[Test]
public void Reflection_SetValue_SingleFields_WrongType()
{
- var message = SampleMessages.CreateFullTestAllTypes();
+ IReflectedMessage message = SampleMessages.CreateFullTestAllTypes();
var fields = message.Fields;
Assert.Throws<InvalidCastException>(() => fields[TestAllTypes.SingleBoolFieldNumber].SetValue(message, "This isn't a bool"));
}
@@ -715,7 +717,7 @@ namespace Google.Protobuf
[Test]
public void Reflection_SetValue_MapFields()
{
- var message = new TestMap();
+ IReflectedMessage message = new TestMap();
var fields = message.Fields;
Assert.Throws<InvalidOperationException>(() => fields[TestMap.MapStringStringFieldNumber].SetValue(message, new Dictionary<string, string>()));
}
@@ -723,7 +725,7 @@ namespace Google.Protobuf
[Test]
public void Reflection_SetValue_RepeatedFields()
{
- var message = SampleMessages.CreateFullTestAllTypes();
+ IReflectedMessage message = SampleMessages.CreateFullTestAllTypes();
var fields = message.Fields;
Assert.Throws<InvalidOperationException>(() => fields[TestAllTypes.RepeatedDoubleFieldNumber].SetValue(message, new double[10]));
}
@@ -731,8 +733,28 @@ namespace Google.Protobuf
[Test]
public void Reflection_GetValue_IncorrectType()
{
- var message = SampleMessages.CreateFullTestAllTypes();
+ IReflectedMessage message = SampleMessages.CreateFullTestAllTypes();
Assert.Throws<InvalidCastException>(() => message.Fields[TestAllTypes.SingleBoolFieldNumber].GetValue(new TestMap()));
}
+
+ [Test]
+ public void Reflection_Oneof()
+ {
+ var message = new TestAllTypes();
+ var fields = ((IReflectedMessage) message).Fields;
+ Assert.AreEqual(1, fields.Oneofs.Count);
+ var oneof = fields.Oneofs[0];
+ Assert.AreEqual("oneof_field", oneof.Descriptor.Name);
+ Assert.IsNull(oneof.GetCaseFieldDescriptor(message));
+
+ message.OneofString = "foo";
+ Assert.AreSame(fields[TestAllTypes.OneofStringFieldNumber].Descriptor, oneof.GetCaseFieldDescriptor(message));
+
+ message.OneofUint32 = 10;
+ Assert.AreSame(fields[TestAllTypes.OneofUint32FieldNumber].Descriptor, oneof.GetCaseFieldDescriptor(message));
+
+ oneof.Clear(message);
+ Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase);
+ }
}
}
diff --git a/csharp/src/ProtocolBuffers.Test/IssuesTest.cs b/csharp/src/ProtocolBuffers.Test/IssuesTest.cs
index d2248158..b5ad34ae 100644
--- a/csharp/src/ProtocolBuffers.Test/IssuesTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/IssuesTest.cs
@@ -30,7 +30,7 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endregion
-using Google.Protobuf.Descriptors;
+using Google.Protobuf.Reflection;
using UnitTest.Issues.TestProtos;
using NUnit.Framework;
diff --git a/csharp/src/ProtocolBuffers.Test/JsonFormatterTest.cs b/csharp/src/ProtocolBuffers.Test/JsonFormatterTest.cs
new file mode 100644
index 00000000..5441bf47
--- /dev/null
+++ b/csharp/src/ProtocolBuffers.Test/JsonFormatterTest.cs
@@ -0,0 +1,261 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Google.Protobuf.TestProtos;
+using NUnit.Framework;
+
+namespace Google.Protobuf
+{
+ public class JsonFormatterTest
+ {
+ [Test]
+ public void DefaultValues_WhenOmitted()
+ {
+ var formatter = new JsonFormatter(new JsonFormatter.Settings(formatDefaultValues: false));
+
+ Assert.AreEqual("{ }", formatter.Format(new ForeignMessage()));
+ Assert.AreEqual("{ }", formatter.Format(new TestAllTypes()));
+ Assert.AreEqual("{ }", formatter.Format(new TestMap()));
+ }
+
+ [Test]
+ public void DefaultValues_WhenIncluded()
+ {
+ var formatter = new JsonFormatter(new JsonFormatter.Settings(formatDefaultValues: true));
+ Assert.AreEqual("{ \"c\": 0 }", formatter.Format(new ForeignMessage()));
+ }
+
+ [Test]
+ public void AllSingleFields()
+ {
+ var message = new TestAllTypes
+ {
+ SingleBool = true,
+ SingleBytes = ByteString.CopyFrom(1, 2, 3, 4),
+ SingleDouble = 23.5,
+ SingleFixed32 = 23,
+ SingleFixed64 = 1234567890123,
+ SingleFloat = 12.25f,
+ SingleForeignEnum = ForeignEnum.FOREIGN_BAR,
+ SingleForeignMessage = new ForeignMessage { C = 10 },
+ SingleImportEnum = ImportEnum.IMPORT_BAZ,
+ SingleImportMessage = new ImportMessage { D = 20 },
+ SingleInt32 = 100,
+ SingleInt64 = 3210987654321,
+ SingleNestedEnum = TestAllTypes.Types.NestedEnum.FOO,
+ SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 },
+ SinglePublicImportMessage = new PublicImportMessage { E = 54 },
+ SingleSfixed32 = -123,
+ SingleSfixed64 = -12345678901234,
+ SingleSint32 = -456,
+ SingleSint64 = -12345678901235,
+ SingleString = "test\twith\ttabs",
+ SingleUint32 = uint.MaxValue,
+ SingleUint64 = ulong.MaxValue,
+ };
+ var actualText = JsonFormatter.Default.Format(message);
+
+ // Fields in declaration order, which matches numeric order.
+ var expectedText = "{ " +
+ "\"singleInt32\": 100, " +
+ "\"singleInt64\": \"3210987654321\", " +
+ "\"singleUint32\": 4294967295, " +
+ "\"singleUint64\": \"18446744073709551615\", " +
+ "\"singleSint32\": -456, " +
+ "\"singleSint64\": \"-12345678901235\", " +
+ "\"singleFixed32\": 23, " +
+ "\"singleFixed64\": \"1234567890123\", " +
+ "\"singleSfixed32\": -123, " +
+ "\"singleSfixed64\": \"-12345678901234\", " +
+ "\"singleFloat\": 12.25, " +
+ "\"singleDouble\": 23.5, " +
+ "\"singleBool\": true, " +
+ "\"singleString\": \"test\\twith\\ttabs\", " +
+ "\"singleBytes\": \"AQIDBA==\", " +
+ "\"singleNestedMessage\": { \"bb\": 35 }, " +
+ "\"singleForeignMessage\": { \"c\": 10 }, " +
+ "\"singleImportMessage\": { \"d\": 20 }, " +
+ "\"singleNestedEnum\": \"FOO\", " +
+ "\"singleForeignEnum\": \"FOREIGN_BAR\", " +
+ "\"singleImportEnum\": \"IMPORT_BAZ\", " +
+ "\"singlePublicImportMessage\": { \"e\": 54 }" +
+ " }";
+ Assert.AreEqual(expectedText, actualText);
+ }
+
+ [Test]
+ public void RepeatedField()
+ {
+ Assert.AreEqual("{ \"repeatedInt32\": [ 1, 2, 3, 4, 5 ] }",
+ JsonFormatter.Default.Format(new TestAllTypes { RepeatedInt32 = { 1, 2, 3, 4, 5 } }));
+ }
+
+ [Test]
+ public void MapField_StringString()
+ {
+ Assert.AreEqual("{ \"mapStringString\": { \"with spaces\": \"bar\", \"a\": \"b\" } }",
+ JsonFormatter.Default.Format(new TestMap { MapStringString = { { "with spaces", "bar" }, { "a", "b" } } }));
+ }
+
+ [Test]
+ public void MapField_Int32Int32()
+ {
+ // The keys are quoted, but the values aren't.
+ Assert.AreEqual("{ \"mapInt32Int32\": { \"0\": 1, \"2\": 3 } }",
+ JsonFormatter.Default.Format(new TestMap { MapInt32Int32 = { { 0, 1 }, { 2, 3 } } }));
+ }
+
+ [Test]
+ public void MapField_BoolBool()
+ {
+ // The keys are quoted, but the values aren't.
+ Assert.AreEqual("{ \"mapBoolBool\": { \"false\": true, \"true\": false } }",
+ JsonFormatter.Default.Format(new TestMap { MapBoolBool = { { false, true }, { true, false } } }));
+ }
+
+ [TestCase(1.0, "1")]
+ [TestCase(double.NaN, "\"NaN\"")]
+ [TestCase(double.PositiveInfinity, "\"Infinity\"")]
+ [TestCase(double.NegativeInfinity, "\"-Infinity\"")]
+ public void DoubleRepresentations(double value, string expectedValueText)
+ {
+ var message = new TestAllTypes { SingleDouble = value };
+ string actualText = JsonFormatter.Default.Format(message);
+ string expectedText = "{ \"singleDouble\": " + expectedValueText + " }";
+ Assert.AreEqual(expectedText, actualText);
+ }
+
+ [Test]
+ public void UnknownEnumValueOmitted_SingleField()
+ {
+ var message = new TestAllTypes { SingleForeignEnum = (ForeignEnum) 100 };
+ Assert.AreEqual("{ }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void UnknownEnumValueOmitted_RepeatedField()
+ {
+ var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.FOREIGN_BAZ, (ForeignEnum) 100, ForeignEnum.FOREIGN_FOO } };
+ Assert.AreEqual("{ \"repeatedForeignEnum\": [ \"FOREIGN_BAZ\", \"FOREIGN_FOO\" ] }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void UnknownEnumValueOmitted_MapField()
+ {
+ // This matches the C++ behaviour.
+ var message = new TestMap { MapInt32Enum = { { 1, MapEnum.MAP_ENUM_FOO }, { 2, (MapEnum) 100 }, { 3, MapEnum.MAP_ENUM_BAR } } };
+ Assert.AreEqual("{ \"mapInt32Enum\": { \"1\": \"MAP_ENUM_FOO\", \"3\": \"MAP_ENUM_BAR\" } }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void UnknownEnumValueOmitted_RepeatedField_AllEntriesUnknown()
+ {
+ // *Maybe* we should hold off on writing the "[" until we find that we've got at least one value to write...
+ // but this is what happens at the moment, and it doesn't seem too awful.
+ var message = new TestAllTypes { RepeatedForeignEnum = { (ForeignEnum) 200, (ForeignEnum) 100 } };
+ Assert.AreEqual("{ \"repeatedForeignEnum\": [ ] }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void NullValueForMessage()
+ {
+ var message = new TestMap { MapInt32ForeignMessage = { { 10, null } } };
+ Assert.AreEqual("{ \"mapInt32ForeignMessage\": { \"10\": null } }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ [TestCase("a\u17b4b", "a\\u17b4b")] // Explicit
+ [TestCase("a\u0601b", "a\\u0601b")] // Ranged
+ [TestCase("a\u0605b", "a\u0605b")] // Passthrough (note lack of double backslash...)
+ public void SimpleNonAscii(string text, string encoded)
+ {
+ var message = new TestAllTypes { SingleString = text };
+ Assert.AreEqual("{ \"singleString\": \"" + encoded + "\" }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void SurrogatePairEscaping()
+ {
+ var message = new TestAllTypes { SingleString = "a\uD801\uDC01b" };
+ Assert.AreEqual("{ \"singleString\": \"a\\ud801\\udc01b\" }", JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ public void InvalidSurrogatePairsFail()
+ {
+ // Note: don't use TestCase for these, as the strings can't be reliably represented
+ // See http://codeblog.jonskeet.uk/2014/11/07/when-is-a-string-not-a-string/
+
+ // Lone low surrogate
+ var message = new TestAllTypes { SingleString = "a\uDC01b" };
+ Assert.Throws<ArgumentException>(() => JsonFormatter.Default.Format(message));
+
+ // Lone high surrogate
+ message = new TestAllTypes { SingleString = "a\uD801b" };
+ Assert.Throws<ArgumentException>(() => JsonFormatter.Default.Format(message));
+ }
+
+ [Test]
+ [TestCase("foo_bar", "fooBar")]
+ [TestCase("bananaBanana", "bananaBanana")]
+ [TestCase("BANANABanana", "bananaBanana")]
+ public void ToCamelCase(string original, string expected)
+ {
+ Assert.AreEqual(expected, JsonFormatter.ToCamelCase(original));
+ }
+
+ [Test]
+ [TestCase(null, "{ }")]
+ [TestCase("x", "{ \"fooString\": \"x\" }")]
+ [TestCase("", "{ \"fooString\": \"\" }")]
+ [TestCase(null, "{ }")]
+ public void Oneof(string fooStringValue, string expectedJson)
+ {
+ var message = new TestOneof();
+ if (fooStringValue != null)
+ {
+ message.FooString = fooStringValue;
+ }
+
+ // We should get the same result both with and without "format default values".
+ var formatter = new JsonFormatter(new JsonFormatter.Settings(false));
+ Assert.AreEqual(expectedJson, formatter.Format(message));
+ formatter = new JsonFormatter(new JsonFormatter.Settings(true));
+ Assert.AreEqual(expectedJson, formatter.Format(message));
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj b/csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
index b02abe70..45c75bae 100644
--- a/csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
+++ b/csharp/src/ProtocolBuffers.Test/ProtocolBuffers.Test.csproj
@@ -80,6 +80,8 @@
<Compile Include="GeneratedMessageTest.cs" />
<Compile Include="Collections\MapFieldTest.cs" />
<Compile Include="Collections\RepeatedFieldTest.cs" />
+ <Compile Include="JsonFormatterTest.cs" />
+ <Compile Include="Reflection\DescriptorsTest.cs" />
<Compile Include="SampleEnum.cs" />
<Compile Include="SampleMessages.cs" />
<Compile Include="TestProtos\MapUnittestProto3.cs" />
@@ -88,7 +90,6 @@
<Compile Include="TestProtos\UnittestIssues.cs" />
<Compile Include="TestProtos\UnittestProto3.cs" />
<Compile Include="DeprecatedMemberTest.cs" />
- <Compile Include="DescriptorsTest.cs" />
<Compile Include="IssuesTest.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="TestCornerCases.cs" />
diff --git a/csharp/src/ProtocolBuffers.Test/DescriptorsTest.cs b/csharp/src/ProtocolBuffers.Test/Reflection/DescriptorsTest.cs
index d5c622bc..0db01a5e 100644
--- a/csharp/src/ProtocolBuffers.Test/DescriptorsTest.cs
+++ b/csharp/src/ProtocolBuffers.Test/Reflection/DescriptorsTest.cs
@@ -1,225 +1,223 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System.Linq;
-using Google.Protobuf.DescriptorProtos;
-using Google.Protobuf.Descriptors;
-using Google.Protobuf.TestProtos;
-using NUnit.Framework;
-
-namespace Google.Protobuf
-{
- /// <summary>
- /// Tests for descriptors. (Not in its own namespace or broken up into individual classes as the
- /// size doesn't warrant it. On the other hand, this makes me feel a bit dirty...)
- /// </summary>
- public class DescriptorsTest
- {
- [Test]
- public void FileDescriptor()
- {
- FileDescriptor file = UnittestProto3.Descriptor;
-
- Assert.AreEqual("google/protobuf/unittest_proto3.proto", file.Name);
- Assert.AreEqual("protobuf_unittest", file.Package);
-
- Assert.AreEqual("UnittestProto", file.Proto.Options.JavaOuterClassname);
- Assert.AreEqual("google/protobuf/unittest_proto3.proto", file.Proto.Name);
-
- // unittest.proto doesn't have any public imports, but unittest_import.proto does.
- Assert.AreEqual(0, file.PublicDependencies.Count);
- Assert.AreEqual(1, UnittestImportProto3.Descriptor.PublicDependencies.Count);
- Assert.AreEqual(UnittestImportPublicProto3.Descriptor, UnittestImportProto3.Descriptor.PublicDependencies[0]);
-
- Assert.AreEqual(1, file.Dependencies.Count);
- Assert.AreEqual(UnittestImportProto3.Descriptor, file.Dependencies[0]);
-
- MessageDescriptor messageType = TestAllTypes.Descriptor;
- Assert.AreEqual(messageType, file.MessageTypes[0]);
- Assert.AreEqual(messageType, file.FindTypeByName<MessageDescriptor>("TestAllTypes"));
- Assert.Null(file.FindTypeByName<MessageDescriptor>("NoSuchType"));
- Assert.Null(file.FindTypeByName<MessageDescriptor>("protobuf_unittest.TestAllTypes"));
- for (int i = 0; i < file.MessageTypes.Count; i++)
- {
- Assert.AreEqual(i, file.MessageTypes[i].Index);
- }
-
- Assert.AreEqual(file.EnumTypes[0], file.FindTypeByName<EnumDescriptor>("ForeignEnum"));
- Assert.Null(file.FindTypeByName<EnumDescriptor>("NoSuchType"));
- Assert.Null(file.FindTypeByName<EnumDescriptor>("protobuf_unittest.ForeignEnum"));
- Assert.AreEqual(1, UnittestImportProto3.Descriptor.EnumTypes.Count);
- Assert.AreEqual("ImportEnum", UnittestImportProto3.Descriptor.EnumTypes[0].Name);
- for (int i = 0; i < file.EnumTypes.Count; i++)
- {
- Assert.AreEqual(i, file.EnumTypes[i].Index);
- }
- }
-
- [Test]
- public void MessageDescriptor()
- {
- MessageDescriptor messageType = TestAllTypes.Descriptor;
- MessageDescriptor nestedType = TestAllTypes.Types.NestedMessage.Descriptor;
-
- Assert.AreEqual("TestAllTypes", messageType.Name);
- Assert.AreEqual("protobuf_unittest.TestAllTypes", messageType.FullName);
- Assert.AreEqual(UnittestProto3.Descriptor, messageType.File);
- Assert.IsNull(messageType.ContainingType);
- Assert.IsNull(messageType.Proto.Options);
-
- Assert.AreEqual("TestAllTypes", messageType.Name);
-
- Assert.AreEqual("NestedMessage", nestedType.Name);
- Assert.AreEqual("protobuf_unittest.TestAllTypes.NestedMessage", nestedType.FullName);
- Assert.AreEqual(UnittestProto3.Descriptor, nestedType.File);
- Assert.AreEqual(messageType, nestedType.ContainingType);
-
- FieldDescriptor field = messageType.Fields[0];
- Assert.AreEqual("single_int32", field.Name);
- Assert.AreEqual(field, messageType.FindDescriptor<FieldDescriptor>("single_int32"));
- Assert.Null(messageType.FindDescriptor<FieldDescriptor>("no_such_field"));
- Assert.AreEqual(field, messageType.FindFieldByNumber(1));
- Assert.Null(messageType.FindFieldByNumber(571283));
- for (int i = 0; i < messageType.Fields.Count; i++)
- {
- Assert.AreEqual(i, messageType.Fields[i].Index);
- }
-
- Assert.AreEqual(nestedType, messageType.NestedTypes[0]);
- Assert.AreEqual(nestedType, messageType.FindDescriptor<MessageDescriptor>("NestedMessage"));
- Assert.Null(messageType.FindDescriptor<MessageDescriptor>("NoSuchType"));
- for (int i = 0; i < messageType.NestedTypes.Count; i++)
- {
- Assert.AreEqual(i, messageType.NestedTypes[i].Index);
- }
-
- Assert.AreEqual(messageType.EnumTypes[0], messageType.FindDescriptor<EnumDescriptor>("NestedEnum"));
- Assert.Null(messageType.FindDescriptor<EnumDescriptor>("NoSuchType"));
- for (int i = 0; i < messageType.EnumTypes.Count; i++)
- {
- Assert.AreEqual(i, messageType.EnumTypes[i].Index);
- }
- }
-
- [Test]
- public void FieldDescriptor()
- {
- MessageDescriptor messageType = TestAllTypes.Descriptor;
- FieldDescriptor primitiveField = messageType.FindDescriptor<FieldDescriptor>("single_int32");
- FieldDescriptor enumField = messageType.FindDescriptor<FieldDescriptor>("single_nested_enum");
- FieldDescriptor messageField = messageType.FindDescriptor<FieldDescriptor>("single_foreign_message");
-
- Assert.AreEqual("single_int32", primitiveField.Name);
- Assert.AreEqual("protobuf_unittest.TestAllTypes.single_int32",
- primitiveField.FullName);
- Assert.AreEqual(1, primitiveField.FieldNumber);
- Assert.AreEqual(messageType, primitiveField.ContainingType);
- Assert.AreEqual(UnittestProto3.Descriptor, primitiveField.File);
- Assert.AreEqual(FieldType.Int32, primitiveField.FieldType);
- Assert.IsNull(primitiveField.Proto.Options);
-
- Assert.AreEqual("single_nested_enum", enumField.Name);
- Assert.AreEqual(FieldType.Enum, enumField.FieldType);
- // Assert.AreEqual(TestAllTypes.Types.NestedEnum.DescriptorProtoFile, enumField.EnumType);
-
- Assert.AreEqual("single_foreign_message", messageField.Name);
- Assert.AreEqual(FieldType.Message, messageField.FieldType);
- Assert.AreEqual(ForeignMessage.Descriptor, messageField.MessageType);
- }
-
- [Test]
- public void FieldDescriptorLabel()
- {
- FieldDescriptor singleField =
- TestAllTypes.Descriptor.FindDescriptor<FieldDescriptor>("single_int32");
- FieldDescriptor repeatedField =
- TestAllTypes.Descriptor.FindDescriptor<FieldDescriptor>("repeated_int32");
-
- Assert.IsFalse(singleField.IsRepeated);
- Assert.IsTrue(repeatedField.IsRepeated);
- }
-
- [Test]
- public void EnumDescriptor()
- {
- // Note: this test is a bit different to the Java version because there's no static way of getting to the descriptor
- EnumDescriptor enumType = UnittestProto3.Descriptor.FindTypeByName<EnumDescriptor>("ForeignEnum");
- EnumDescriptor nestedType = TestAllTypes.Descriptor.FindDescriptor<EnumDescriptor>("NestedEnum");
-
- Assert.AreEqual("ForeignEnum", enumType.Name);
- Assert.AreEqual("protobuf_unittest.ForeignEnum", enumType.FullName);
- Assert.AreEqual(UnittestProto3.Descriptor, enumType.File);
- Assert.Null(enumType.ContainingType);
- Assert.Null(enumType.Proto.Options);
-
- Assert.AreEqual("NestedEnum", nestedType.Name);
- Assert.AreEqual("protobuf_unittest.TestAllTypes.NestedEnum",
- nestedType.FullName);
- Assert.AreEqual(UnittestProto3.Descriptor, nestedType.File);
- Assert.AreEqual(TestAllTypes.Descriptor, nestedType.ContainingType);
-
- EnumValueDescriptor value = enumType.FindValueByName("FOREIGN_FOO");
- Assert.AreEqual(value, enumType.Values[1]);
- Assert.AreEqual("FOREIGN_FOO", value.Name);
- Assert.AreEqual(4, value.Number);
- Assert.AreEqual((int) ForeignEnum.FOREIGN_FOO, value.Number);
- Assert.AreEqual(value, enumType.FindValueByNumber(4));
- Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
- for (int i = 0; i < enumType.Values.Count; i++)
- {
- Assert.AreEqual(i, enumType.Values[i].Index);
- }
- }
-
- [Test]
- public void OneofDescriptor()
- {
- OneofDescriptor descriptor = TestAllTypes.Descriptor.FindDescriptor<OneofDescriptor>("oneof_field");
- Assert.AreEqual("oneof_field", descriptor.Name);
- Assert.AreEqual("protobuf_unittest.TestAllTypes.oneof_field", descriptor.FullName);
-
- var expectedFields = new[] {
- TestAllTypes.OneofBytesFieldNumber,
- TestAllTypes.OneofNestedMessageFieldNumber,
- TestAllTypes.OneofStringFieldNumber,
- TestAllTypes.OneofUint32FieldNumber }
- .Select(fieldNumber => TestAllTypes.Descriptor.FindFieldByNumber(fieldNumber))
- .ToList();
- foreach (var field in expectedFields)
- {
- Assert.AreSame(descriptor, field.ContainingOneof);
- }
-
- CollectionAssert.AreEquivalent(expectedFields, descriptor.Fields);
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System.Linq;
+using Google.Protobuf.TestProtos;
+using NUnit.Framework;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Tests for descriptors. (Not in its own namespace or broken up into individual classes as the
+ /// size doesn't warrant it. On the other hand, this makes me feel a bit dirty...)
+ /// </summary>
+ public class DescriptorsTest
+ {
+ [Test]
+ public void FileDescriptor()
+ {
+ FileDescriptor file = UnittestProto3.Descriptor;
+
+ Assert.AreEqual("google/protobuf/unittest_proto3.proto", file.Name);
+ Assert.AreEqual("protobuf_unittest", file.Package);
+
+ Assert.AreEqual("UnittestProto", file.Proto.Options.JavaOuterClassname);
+ Assert.AreEqual("google/protobuf/unittest_proto3.proto", file.Proto.Name);
+
+ // unittest.proto doesn't have any public imports, but unittest_import.proto does.
+ Assert.AreEqual(0, file.PublicDependencies.Count);
+ Assert.AreEqual(1, UnittestImportProto3.Descriptor.PublicDependencies.Count);
+ Assert.AreEqual(UnittestImportPublicProto3.Descriptor, UnittestImportProto3.Descriptor.PublicDependencies[0]);
+
+ Assert.AreEqual(1, file.Dependencies.Count);
+ Assert.AreEqual(UnittestImportProto3.Descriptor, file.Dependencies[0]);
+
+ MessageDescriptor messageType = TestAllTypes.Descriptor;
+ Assert.AreEqual(messageType, file.MessageTypes[0]);
+ Assert.AreEqual(messageType, file.FindTypeByName<MessageDescriptor>("TestAllTypes"));
+ Assert.Null(file.FindTypeByName<MessageDescriptor>("NoSuchType"));
+ Assert.Null(file.FindTypeByName<MessageDescriptor>("protobuf_unittest.TestAllTypes"));
+ for (int i = 0; i < file.MessageTypes.Count; i++)
+ {
+ Assert.AreEqual(i, file.MessageTypes[i].Index);
+ }
+
+ Assert.AreEqual(file.EnumTypes[0], file.FindTypeByName<EnumDescriptor>("ForeignEnum"));
+ Assert.Null(file.FindTypeByName<EnumDescriptor>("NoSuchType"));
+ Assert.Null(file.FindTypeByName<EnumDescriptor>("protobuf_unittest.ForeignEnum"));
+ Assert.AreEqual(1, UnittestImportProto3.Descriptor.EnumTypes.Count);
+ Assert.AreEqual("ImportEnum", UnittestImportProto3.Descriptor.EnumTypes[0].Name);
+ for (int i = 0; i < file.EnumTypes.Count; i++)
+ {
+ Assert.AreEqual(i, file.EnumTypes[i].Index);
+ }
+ }
+
+ [Test]
+ public void MessageDescriptor()
+ {
+ MessageDescriptor messageType = TestAllTypes.Descriptor;
+ MessageDescriptor nestedType = TestAllTypes.Types.NestedMessage.Descriptor;
+
+ Assert.AreEqual("TestAllTypes", messageType.Name);
+ Assert.AreEqual("protobuf_unittest.TestAllTypes", messageType.FullName);
+ Assert.AreEqual(UnittestProto3.Descriptor, messageType.File);
+ Assert.IsNull(messageType.ContainingType);
+ Assert.IsNull(messageType.Proto.Options);
+
+ Assert.AreEqual("TestAllTypes", messageType.Name);
+
+ Assert.AreEqual("NestedMessage", nestedType.Name);
+ Assert.AreEqual("protobuf_unittest.TestAllTypes.NestedMessage", nestedType.FullName);
+ Assert.AreEqual(UnittestProto3.Descriptor, nestedType.File);
+ Assert.AreEqual(messageType, nestedType.ContainingType);
+
+ FieldDescriptor field = messageType.Fields[0];
+ Assert.AreEqual("single_int32", field.Name);
+ Assert.AreEqual(field, messageType.FindDescriptor<FieldDescriptor>("single_int32"));
+ Assert.Null(messageType.FindDescriptor<FieldDescriptor>("no_such_field"));
+ Assert.AreEqual(field, messageType.FindFieldByNumber(1));
+ Assert.Null(messageType.FindFieldByNumber(571283));
+ for (int i = 0; i < messageType.Fields.Count; i++)
+ {
+ Assert.AreEqual(i, messageType.Fields[i].Index);
+ }
+
+ Assert.AreEqual(nestedType, messageType.NestedTypes[0]);
+ Assert.AreEqual(nestedType, messageType.FindDescriptor<MessageDescriptor>("NestedMessage"));
+ Assert.Null(messageType.FindDescriptor<MessageDescriptor>("NoSuchType"));
+ for (int i = 0; i < messageType.NestedTypes.Count; i++)
+ {
+ Assert.AreEqual(i, messageType.NestedTypes[i].Index);
+ }
+
+ Assert.AreEqual(messageType.EnumTypes[0], messageType.FindDescriptor<EnumDescriptor>("NestedEnum"));
+ Assert.Null(messageType.FindDescriptor<EnumDescriptor>("NoSuchType"));
+ for (int i = 0; i < messageType.EnumTypes.Count; i++)
+ {
+ Assert.AreEqual(i, messageType.EnumTypes[i].Index);
+ }
+ }
+
+ [Test]
+ public void FieldDescriptor()
+ {
+ MessageDescriptor messageType = TestAllTypes.Descriptor;
+ FieldDescriptor primitiveField = messageType.FindDescriptor<FieldDescriptor>("single_int32");
+ FieldDescriptor enumField = messageType.FindDescriptor<FieldDescriptor>("single_nested_enum");
+ FieldDescriptor messageField = messageType.FindDescriptor<FieldDescriptor>("single_foreign_message");
+
+ Assert.AreEqual("single_int32", primitiveField.Name);
+ Assert.AreEqual("protobuf_unittest.TestAllTypes.single_int32",
+ primitiveField.FullName);
+ Assert.AreEqual(1, primitiveField.FieldNumber);
+ Assert.AreEqual(messageType, primitiveField.ContainingType);
+ Assert.AreEqual(UnittestProto3.Descriptor, primitiveField.File);
+ Assert.AreEqual(FieldType.Int32, primitiveField.FieldType);
+ Assert.IsNull(primitiveField.Proto.Options);
+
+ Assert.AreEqual("single_nested_enum", enumField.Name);
+ Assert.AreEqual(FieldType.Enum, enumField.FieldType);
+ // Assert.AreEqual(TestAllTypes.Types.NestedEnum.DescriptorProtoFile, enumField.EnumType);
+
+ Assert.AreEqual("single_foreign_message", messageField.Name);
+ Assert.AreEqual(FieldType.Message, messageField.FieldType);
+ Assert.AreEqual(ForeignMessage.Descriptor, messageField.MessageType);
+ }
+
+ [Test]
+ public void FieldDescriptorLabel()
+ {
+ FieldDescriptor singleField =
+ TestAllTypes.Descriptor.FindDescriptor<FieldDescriptor>("single_int32");
+ FieldDescriptor repeatedField =
+ TestAllTypes.Descriptor.FindDescriptor<FieldDescriptor>("repeated_int32");
+
+ Assert.IsFalse(singleField.IsRepeated);
+ Assert.IsTrue(repeatedField.IsRepeated);
+ }
+
+ [Test]
+ public void EnumDescriptor()
+ {
+ // Note: this test is a bit different to the Java version because there's no static way of getting to the descriptor
+ EnumDescriptor enumType = UnittestProto3.Descriptor.FindTypeByName<EnumDescriptor>("ForeignEnum");
+ EnumDescriptor nestedType = TestAllTypes.Descriptor.FindDescriptor<EnumDescriptor>("NestedEnum");
+
+ Assert.AreEqual("ForeignEnum", enumType.Name);
+ Assert.AreEqual("protobuf_unittest.ForeignEnum", enumType.FullName);
+ Assert.AreEqual(UnittestProto3.Descriptor, enumType.File);
+ Assert.Null(enumType.ContainingType);
+ Assert.Null(enumType.Proto.Options);
+
+ Assert.AreEqual("NestedEnum", nestedType.Name);
+ Assert.AreEqual("protobuf_unittest.TestAllTypes.NestedEnum",
+ nestedType.FullName);
+ Assert.AreEqual(UnittestProto3.Descriptor, nestedType.File);
+ Assert.AreEqual(TestAllTypes.Descriptor, nestedType.ContainingType);
+
+ EnumValueDescriptor value = enumType.FindValueByName("FOREIGN_FOO");
+ Assert.AreEqual(value, enumType.Values[1]);
+ Assert.AreEqual("FOREIGN_FOO", value.Name);
+ Assert.AreEqual(4, value.Number);
+ Assert.AreEqual((int) ForeignEnum.FOREIGN_FOO, value.Number);
+ Assert.AreEqual(value, enumType.FindValueByNumber(4));
+ Assert.Null(enumType.FindValueByName("NO_SUCH_VALUE"));
+ for (int i = 0; i < enumType.Values.Count; i++)
+ {
+ Assert.AreEqual(i, enumType.Values[i].Index);
+ }
+ }
+
+ [Test]
+ public void OneofDescriptor()
+ {
+ OneofDescriptor descriptor = TestAllTypes.Descriptor.FindDescriptor<OneofDescriptor>("oneof_field");
+ Assert.AreEqual("oneof_field", descriptor.Name);
+ Assert.AreEqual("protobuf_unittest.TestAllTypes.oneof_field", descriptor.FullName);
+
+ var expectedFields = new[] {
+ TestAllTypes.OneofBytesFieldNumber,
+ TestAllTypes.OneofNestedMessageFieldNumber,
+ TestAllTypes.OneofStringFieldNumber,
+ TestAllTypes.OneofUint32FieldNumber }
+ .Select(fieldNumber => TestAllTypes.Descriptor.FindFieldByNumber(fieldNumber))
+ .ToList();
+ foreach (var field in expectedFields)
+ {
+ Assert.AreSame(descriptor, field.ContainingOneof);
+ }
+
+ CollectionAssert.AreEquivalent(expectedFields, descriptor.Fields);
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs
index 55434c53..5f6eae0c 100644
--- a/csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs
+++ b/csharp/src/ProtocolBuffers.Test/TestProtos/MapUnittestProto3.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.TestProtos {
@@ -13,56 +13,19 @@ namespace Google.Protobuf.TestProtos {
public static partial class MapUnittestProto3 {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32Int32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt64Int64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapUint32Uint32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapUint64Uint64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapSint32Sint32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapSint64Sint64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapFixed32Fixed32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapFixed64Fixed64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapSfixed32Sfixed32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapSfixed64Sfixed64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32FloatEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32DoubleEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapBoolBoolEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapStringStringEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32BytesEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32EnumEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMap_MapInt32ForeignMessageEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMapSubmessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageMap__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMessageMap_MapInt32MessageEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestSameTypeMap__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestSameTypeMap_Map1Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestSameTypeMap_Map2Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt32Int32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt64Int64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapUint32Uint32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapUint64Uint64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapSint32Sint32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapSint64Sint64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapFixed32Fixed32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapFixed64Fixed64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapSfixed32Sfixed32Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapSfixed64Sfixed64Entry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt32FloatEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt32DoubleEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapBoolBoolEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt32EnumEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap_MapInt32ForeignMessageEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageContainingEnumCalledType__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageContainingEnumCalledType_TypeEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageContainingMapCalledEntry__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MessageContainingMapCalledEntry_EntryEntry__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestMap__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestMapSubmessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestMessageMap__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestSameTypeMap__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestArenaMap__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_MessageContainingEnumCalledType__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_MessageContainingMapCalledEntry__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static MapUnittestProto3() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -191,142 +154,31 @@ namespace Google.Protobuf.TestProtos {
"dmFsdWUYAiABKAU6AjgBKj8KB01hcEVudW0SEAoMTUFQX0VOVU1fRk9PEAAS",
"EAoMTUFQX0VOVU1fQkFSEAESEAoMTUFQX0VOVU1fQkFaEAJCIPgBAaoCGkdv",
"b2dsZS5Qcm90b2J1Zi5UZXN0UHJvdG9zYgZwcm90bzM="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor,
});
internal__static_protobuf_unittest_TestMap__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap), descriptor.MessageTypes[0],
- new string[] { "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapInt32Bytes", "MapInt32Enum", "MapInt32ForeignMessage", });
- internal__static_protobuf_unittest_TestMap_MapInt32Int32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32Int32Entry), descriptor.MessageTypes[0].NestedTypes[0],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt64Int64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt64Int64Entry), descriptor.MessageTypes[0].NestedTypes[1],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapUint32Uint32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapUint32Uint32Entry), descriptor.MessageTypes[0].NestedTypes[2],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapUint64Uint64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapUint64Uint64Entry), descriptor.MessageTypes[0].NestedTypes[3],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapSint32Sint32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapSint32Sint32Entry), descriptor.MessageTypes[0].NestedTypes[4],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapSint64Sint64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapSint64Sint64Entry), descriptor.MessageTypes[0].NestedTypes[5],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapFixed32Fixed32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapFixed32Fixed32Entry), descriptor.MessageTypes[0].NestedTypes[6],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapFixed64Fixed64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapFixed64Fixed64Entry), descriptor.MessageTypes[0].NestedTypes[7],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapSfixed32Sfixed32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapSfixed32Sfixed32Entry), descriptor.MessageTypes[0].NestedTypes[8],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapSfixed64Sfixed64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapSfixed64Sfixed64Entry), descriptor.MessageTypes[0].NestedTypes[9],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt32FloatEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32FloatEntry), descriptor.MessageTypes[0].NestedTypes[10],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt32DoubleEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32DoubleEntry), descriptor.MessageTypes[0].NestedTypes[11],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapBoolBoolEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapBoolBoolEntry), descriptor.MessageTypes[0].NestedTypes[12],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapStringStringEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapStringStringEntry), descriptor.MessageTypes[0].NestedTypes[13],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt32BytesEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32BytesEntry), descriptor.MessageTypes[0].NestedTypes[14],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt32EnumEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32EnumEntry), descriptor.MessageTypes[0].NestedTypes[15],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestMap_MapInt32ForeignMessageEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap.Types.MapInt32ForeignMessageEntry), descriptor.MessageTypes[0].NestedTypes[16],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMap), descriptor.MessageTypes[0],
+ new string[] { "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapInt32Bytes", "MapInt32Enum", "MapInt32ForeignMessage", }, new string[] { });
internal__static_protobuf_unittest_TestMapSubmessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMapSubmessage), descriptor.MessageTypes[1],
- new string[] { "TestMap", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMapSubmessage), descriptor.MessageTypes[1],
+ new string[] { "TestMap", }, new string[] { });
internal__static_protobuf_unittest_TestMessageMap__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMessageMap), descriptor.MessageTypes[2],
- new string[] { "MapInt32Message", });
- internal__static_protobuf_unittest_TestMessageMap_MapInt32MessageEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMessageMap.Types.MapInt32MessageEntry), descriptor.MessageTypes[2].NestedTypes[0],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMessageMap), descriptor.MessageTypes[2],
+ new string[] { "MapInt32Message", }, new string[] { });
internal__static_protobuf_unittest_TestSameTypeMap__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestSameTypeMap), descriptor.MessageTypes[3],
- new string[] { "Map1", "Map2", });
- internal__static_protobuf_unittest_TestSameTypeMap_Map1Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestSameTypeMap.Types.Map1Entry), descriptor.MessageTypes[3].NestedTypes[0],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestSameTypeMap_Map2Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestSameTypeMap.Types.Map2Entry), descriptor.MessageTypes[3].NestedTypes[1],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestSameTypeMap), descriptor.MessageTypes[3],
+ new string[] { "Map1", "Map2", }, new string[] { });
internal__static_protobuf_unittest_TestArenaMap__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap), descriptor.MessageTypes[4],
- new string[] { "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapInt32Enum", "MapInt32ForeignMessage", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt32Int32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt32Int32Entry), descriptor.MessageTypes[4].NestedTypes[0],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt64Int64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt64Int64Entry), descriptor.MessageTypes[4].NestedTypes[1],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapUint32Uint32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapUint32Uint32Entry), descriptor.MessageTypes[4].NestedTypes[2],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapUint64Uint64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapUint64Uint64Entry), descriptor.MessageTypes[4].NestedTypes[3],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapSint32Sint32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapSint32Sint32Entry), descriptor.MessageTypes[4].NestedTypes[4],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapSint64Sint64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapSint64Sint64Entry), descriptor.MessageTypes[4].NestedTypes[5],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapFixed32Fixed32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapFixed32Fixed32Entry), descriptor.MessageTypes[4].NestedTypes[6],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapFixed64Fixed64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapFixed64Fixed64Entry), descriptor.MessageTypes[4].NestedTypes[7],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapSfixed32Sfixed32Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapSfixed32Sfixed32Entry), descriptor.MessageTypes[4].NestedTypes[8],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapSfixed64Sfixed64Entry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapSfixed64Sfixed64Entry), descriptor.MessageTypes[4].NestedTypes[9],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt32FloatEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt32FloatEntry), descriptor.MessageTypes[4].NestedTypes[10],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt32DoubleEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt32DoubleEntry), descriptor.MessageTypes[4].NestedTypes[11],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapBoolBoolEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapBoolBoolEntry), descriptor.MessageTypes[4].NestedTypes[12],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt32EnumEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt32EnumEntry), descriptor.MessageTypes[4].NestedTypes[13],
- new string[] { "Key", "Value", });
- internal__static_protobuf_unittest_TestArenaMap_MapInt32ForeignMessageEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap.Types.MapInt32ForeignMessageEntry), descriptor.MessageTypes[4].NestedTypes[14],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestArenaMap), descriptor.MessageTypes[4],
+ new string[] { "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapInt32Enum", "MapInt32ForeignMessage", }, new string[] { });
internal__static_protobuf_unittest_MessageContainingEnumCalledType__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType), descriptor.MessageTypes[5],
- new string[] { "Type", });
- internal__static_protobuf_unittest_MessageContainingEnumCalledType_TypeEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType.Types.TypeEntry), descriptor.MessageTypes[5].NestedTypes[0],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType), descriptor.MessageTypes[5],
+ new string[] { "Type", }, new string[] { });
internal__static_protobuf_unittest_MessageContainingMapCalledEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry), descriptor.MessageTypes[6],
- new string[] { "Entry", });
- internal__static_protobuf_unittest_MessageContainingMapCalledEntry_EntryEntry__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry.Types.EntryEntry), descriptor.MessageTypes[6].NestedTypes[0],
- new string[] { "Key", "Value", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry), descriptor.MessageTypes[6],
+ new string[] { "Entry", }, new string[] { });
}
#endregion
@@ -348,11 +200,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "map_bool_bool", "map_fixed32_fixed32", "map_fixed64_fixed64", "map_int32_bytes", "map_int32_double", "map_int32_enum", "map_int32_float", "map_int32_foreign_message", "map_int32_int32", "map_int64_int64", "map_sfixed32_sfixed32", "map_sfixed64_sfixed64", "map_sint32_sint32", "map_sint64_sint64", "map_string_string", "map_uint32_uint32", "map_uint64_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 106, 58, 66, 122, 98, 130, 90, 138, 10, 18, 74, 82, 42, 50, 114, 26, 34 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap__FieldAccessorTable; }
}
@@ -602,6 +454,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
mapInt32Int32_.WriteTo(output, _map_mapInt32Int32_codec);
mapInt64Int64_.WriteTo(output, _map_mapInt64Int64_codec);
@@ -750,2433 +606,6 @@ namespace Google.Protobuf.TestProtos {
}
}
- #region Nested types
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public static partial class Types {
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32Int32Entry : pb::IMessage<MapInt32Int32Entry> {
- private static readonly pb::MessageParser<MapInt32Int32Entry> _parser = new pb::MessageParser<MapInt32Int32Entry>(() => new MapInt32Int32Entry());
- public static pb::MessageParser<MapInt32Int32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32Int32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32Int32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32Int32Entry(MapInt32Int32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32Int32Entry Clone() {
- return new MapInt32Int32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32Int32Entry);
- }
-
- public bool Equals(MapInt32Int32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32Int32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- Value = input.ReadInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt64Int64Entry : pb::IMessage<MapInt64Int64Entry> {
- private static readonly pb::MessageParser<MapInt64Int64Entry> _parser = new pb::MessageParser<MapInt64Int64Entry>(() => new MapInt64Int64Entry());
- public static pb::MessageParser<MapInt64Int64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[1]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt64Int64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt64Int64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt64Int64Entry(MapInt64Int64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt64Int64Entry Clone() {
- return new MapInt64Int64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt64Int64Entry);
- }
-
- public bool Equals(MapInt64Int64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(8);
- output.WriteInt64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(16);
- output.WriteInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeInt64Size(Key);
- }
- if (Value != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt64Int64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt64();
- break;
- }
- case 16: {
- Value = input.ReadInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapUint32Uint32Entry : pb::IMessage<MapUint32Uint32Entry> {
- private static readonly pb::MessageParser<MapUint32Uint32Entry> _parser = new pb::MessageParser<MapUint32Uint32Entry>(() => new MapUint32Uint32Entry());
- public static pb::MessageParser<MapUint32Uint32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[2]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapUint32Uint32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapUint32Uint32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapUint32Uint32Entry(MapUint32Uint32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapUint32Uint32Entry Clone() {
- return new MapUint32Uint32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private uint key_;
- public uint Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private uint value_;
- public uint Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapUint32Uint32Entry);
- }
-
- public bool Equals(MapUint32Uint32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteUInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteUInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapUint32Uint32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadUInt32();
- break;
- }
- case 16: {
- Value = input.ReadUInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapUint64Uint64Entry : pb::IMessage<MapUint64Uint64Entry> {
- private static readonly pb::MessageParser<MapUint64Uint64Entry> _parser = new pb::MessageParser<MapUint64Uint64Entry>(() => new MapUint64Uint64Entry());
- public static pb::MessageParser<MapUint64Uint64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[3]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapUint64Uint64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapUint64Uint64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapUint64Uint64Entry(MapUint64Uint64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapUint64Uint64Entry Clone() {
- return new MapUint64Uint64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private ulong key_;
- public ulong Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private ulong value_;
- public ulong Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapUint64Uint64Entry);
- }
-
- public bool Equals(MapUint64Uint64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0UL) hash ^= Key.GetHashCode();
- if (Value != 0UL) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0UL) {
- output.WriteRawTag(8);
- output.WriteUInt64(Key);
- }
- if (Value != 0UL) {
- output.WriteRawTag(16);
- output.WriteUInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0UL) {
- size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Key);
- }
- if (Value != 0UL) {
- size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapUint64Uint64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0UL) {
- Key = other.Key;
- }
- if (other.Value != 0UL) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadUInt64();
- break;
- }
- case 16: {
- Value = input.ReadUInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSint32Sint32Entry : pb::IMessage<MapSint32Sint32Entry> {
- private static readonly pb::MessageParser<MapSint32Sint32Entry> _parser = new pb::MessageParser<MapSint32Sint32Entry>(() => new MapSint32Sint32Entry());
- public static pb::MessageParser<MapSint32Sint32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[4]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapSint32Sint32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSint32Sint32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSint32Sint32Entry(MapSint32Sint32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSint32Sint32Entry Clone() {
- return new MapSint32Sint32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSint32Sint32Entry);
- }
-
- public bool Equals(MapSint32Sint32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteSInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteSInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapSint32Sint32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadSInt32();
- break;
- }
- case 16: {
- Value = input.ReadSInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSint64Sint64Entry : pb::IMessage<MapSint64Sint64Entry> {
- private static readonly pb::MessageParser<MapSint64Sint64Entry> _parser = new pb::MessageParser<MapSint64Sint64Entry>(() => new MapSint64Sint64Entry());
- public static pb::MessageParser<MapSint64Sint64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[5]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapSint64Sint64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSint64Sint64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSint64Sint64Entry(MapSint64Sint64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSint64Sint64Entry Clone() {
- return new MapSint64Sint64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSint64Sint64Entry);
- }
-
- public bool Equals(MapSint64Sint64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(8);
- output.WriteSInt64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(16);
- output.WriteSInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Key);
- }
- if (Value != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapSint64Sint64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadSInt64();
- break;
- }
- case 16: {
- Value = input.ReadSInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapFixed32Fixed32Entry : pb::IMessage<MapFixed32Fixed32Entry> {
- private static readonly pb::MessageParser<MapFixed32Fixed32Entry> _parser = new pb::MessageParser<MapFixed32Fixed32Entry>(() => new MapFixed32Fixed32Entry());
- public static pb::MessageParser<MapFixed32Fixed32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 13, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[6]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapFixed32Fixed32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapFixed32Fixed32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapFixed32Fixed32Entry(MapFixed32Fixed32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapFixed32Fixed32Entry Clone() {
- return new MapFixed32Fixed32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private uint key_;
- public uint Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private uint value_;
- public uint Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapFixed32Fixed32Entry);
- }
-
- public bool Equals(MapFixed32Fixed32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(13);
- output.WriteFixed32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(21);
- output.WriteFixed32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + 4;
- }
- if (Value != 0) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapFixed32Fixed32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 13: {
- Key = input.ReadFixed32();
- break;
- }
- case 21: {
- Value = input.ReadFixed32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapFixed64Fixed64Entry : pb::IMessage<MapFixed64Fixed64Entry> {
- private static readonly pb::MessageParser<MapFixed64Fixed64Entry> _parser = new pb::MessageParser<MapFixed64Fixed64Entry>(() => new MapFixed64Fixed64Entry());
- public static pb::MessageParser<MapFixed64Fixed64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 9, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[7]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapFixed64Fixed64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapFixed64Fixed64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapFixed64Fixed64Entry(MapFixed64Fixed64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapFixed64Fixed64Entry Clone() {
- return new MapFixed64Fixed64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private ulong key_;
- public ulong Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private ulong value_;
- public ulong Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapFixed64Fixed64Entry);
- }
-
- public bool Equals(MapFixed64Fixed64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0UL) hash ^= Key.GetHashCode();
- if (Value != 0UL) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0UL) {
- output.WriteRawTag(9);
- output.WriteFixed64(Key);
- }
- if (Value != 0UL) {
- output.WriteRawTag(17);
- output.WriteFixed64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0UL) {
- size += 1 + 8;
- }
- if (Value != 0UL) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapFixed64Fixed64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0UL) {
- Key = other.Key;
- }
- if (other.Value != 0UL) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 9: {
- Key = input.ReadFixed64();
- break;
- }
- case 17: {
- Value = input.ReadFixed64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSfixed32Sfixed32Entry : pb::IMessage<MapSfixed32Sfixed32Entry> {
- private static readonly pb::MessageParser<MapSfixed32Sfixed32Entry> _parser = new pb::MessageParser<MapSfixed32Sfixed32Entry>(() => new MapSfixed32Sfixed32Entry());
- public static pb::MessageParser<MapSfixed32Sfixed32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 13, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[8]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapSfixed32Sfixed32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSfixed32Sfixed32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSfixed32Sfixed32Entry(MapSfixed32Sfixed32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSfixed32Sfixed32Entry Clone() {
- return new MapSfixed32Sfixed32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSfixed32Sfixed32Entry);
- }
-
- public bool Equals(MapSfixed32Sfixed32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(13);
- output.WriteSFixed32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(21);
- output.WriteSFixed32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + 4;
- }
- if (Value != 0) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapSfixed32Sfixed32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 13: {
- Key = input.ReadSFixed32();
- break;
- }
- case 21: {
- Value = input.ReadSFixed32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSfixed64Sfixed64Entry : pb::IMessage<MapSfixed64Sfixed64Entry> {
- private static readonly pb::MessageParser<MapSfixed64Sfixed64Entry> _parser = new pb::MessageParser<MapSfixed64Sfixed64Entry>(() => new MapSfixed64Sfixed64Entry());
- public static pb::MessageParser<MapSfixed64Sfixed64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 9, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[9]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapSfixed64Sfixed64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSfixed64Sfixed64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSfixed64Sfixed64Entry(MapSfixed64Sfixed64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSfixed64Sfixed64Entry Clone() {
- return new MapSfixed64Sfixed64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSfixed64Sfixed64Entry);
- }
-
- public bool Equals(MapSfixed64Sfixed64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(9);
- output.WriteSFixed64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(17);
- output.WriteSFixed64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + 8;
- }
- if (Value != 0L) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapSfixed64Sfixed64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 9: {
- Key = input.ReadSFixed64();
- break;
- }
- case 17: {
- Value = input.ReadSFixed64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32FloatEntry : pb::IMessage<MapInt32FloatEntry> {
- private static readonly pb::MessageParser<MapInt32FloatEntry> _parser = new pb::MessageParser<MapInt32FloatEntry>(() => new MapInt32FloatEntry());
- public static pb::MessageParser<MapInt32FloatEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[10]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32FloatEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32FloatEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32FloatEntry(MapInt32FloatEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32FloatEntry Clone() {
- return new MapInt32FloatEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private float value_;
- public float Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32FloatEntry);
- }
-
- public bool Equals(MapInt32FloatEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0F) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0F) {
- output.WriteRawTag(21);
- output.WriteFloat(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0F) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapInt32FloatEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0F) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 21: {
- Value = input.ReadFloat();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32DoubleEntry : pb::IMessage<MapInt32DoubleEntry> {
- private static readonly pb::MessageParser<MapInt32DoubleEntry> _parser = new pb::MessageParser<MapInt32DoubleEntry>(() => new MapInt32DoubleEntry());
- public static pb::MessageParser<MapInt32DoubleEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[11]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32DoubleEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32DoubleEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32DoubleEntry(MapInt32DoubleEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32DoubleEntry Clone() {
- return new MapInt32DoubleEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private double value_;
- public double Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32DoubleEntry);
- }
-
- public bool Equals(MapInt32DoubleEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0D) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0D) {
- output.WriteRawTag(17);
- output.WriteDouble(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0D) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapInt32DoubleEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0D) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 17: {
- Value = input.ReadDouble();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapBoolBoolEntry : pb::IMessage<MapBoolBoolEntry> {
- private static readonly pb::MessageParser<MapBoolBoolEntry> _parser = new pb::MessageParser<MapBoolBoolEntry>(() => new MapBoolBoolEntry());
- public static pb::MessageParser<MapBoolBoolEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[12]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapBoolBoolEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapBoolBoolEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapBoolBoolEntry(MapBoolBoolEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapBoolBoolEntry Clone() {
- return new MapBoolBoolEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private bool key_;
- public bool Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private bool value_;
- public bool Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapBoolBoolEntry);
- }
-
- public bool Equals(MapBoolBoolEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != false) hash ^= Key.GetHashCode();
- if (Value != false) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != false) {
- output.WriteRawTag(8);
- output.WriteBool(Key);
- }
- if (Value != false) {
- output.WriteRawTag(16);
- output.WriteBool(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != false) {
- size += 1 + 1;
- }
- if (Value != false) {
- size += 1 + 1;
- }
- return size;
- }
-
- public void MergeFrom(MapBoolBoolEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != false) {
- Key = other.Key;
- }
- if (other.Value != false) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadBool();
- break;
- }
- case 16: {
- Value = input.ReadBool();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapStringStringEntry : pb::IMessage<MapStringStringEntry> {
- private static readonly pb::MessageParser<MapStringStringEntry> _parser = new pb::MessageParser<MapStringStringEntry>(() => new MapStringStringEntry());
- public static pb::MessageParser<MapStringStringEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 10, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[13]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapStringStringEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapStringStringEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapStringStringEntry(MapStringStringEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapStringStringEntry Clone() {
- return new MapStringStringEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private string key_ = "";
- public string Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value ?? "";
- }
- }
-
- public const int ValueFieldNumber = 2;
- private string value_ = "";
- public string Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value ?? "";
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapStringStringEntry);
- }
-
- public bool Equals(MapStringStringEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key.Length != 0) hash ^= Key.GetHashCode();
- if (Value.Length != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key.Length != 0) {
- output.WriteRawTag(10);
- output.WriteString(Key);
- }
- if (Value.Length != 0) {
- output.WriteRawTag(18);
- output.WriteString(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key.Length != 0) {
- size += 1 + pb::CodedOutputStream.ComputeStringSize(Key);
- }
- if (Value.Length != 0) {
- size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapStringStringEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key.Length != 0) {
- Key = other.Key;
- }
- if (other.Value.Length != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 10: {
- Key = input.ReadString();
- break;
- }
- case 18: {
- Value = input.ReadString();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32BytesEntry : pb::IMessage<MapInt32BytesEntry> {
- private static readonly pb::MessageParser<MapInt32BytesEntry> _parser = new pb::MessageParser<MapInt32BytesEntry>(() => new MapInt32BytesEntry());
- public static pb::MessageParser<MapInt32BytesEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[14]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32BytesEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32BytesEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32BytesEntry(MapInt32BytesEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32BytesEntry Clone() {
- return new MapInt32BytesEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private pb::ByteString value_ = pb::ByteString.Empty;
- public pb::ByteString Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value ?? pb::ByteString.Empty;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32BytesEntry);
- }
-
- public bool Equals(MapInt32BytesEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value.Length != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value.Length != 0) {
- output.WriteRawTag(18);
- output.WriteBytes(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value.Length != 0) {
- size += 1 + pb::CodedOutputStream.ComputeBytesSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32BytesEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value.Length != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 18: {
- Value = input.ReadBytes();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32EnumEntry : pb::IMessage<MapInt32EnumEntry> {
- private static readonly pb::MessageParser<MapInt32EnumEntry> _parser = new pb::MessageParser<MapInt32EnumEntry>(() => new MapInt32EnumEntry());
- public static pb::MessageParser<MapInt32EnumEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[15]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32EnumEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32EnumEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32EnumEntry(MapInt32EnumEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32EnumEntry Clone() {
- return new MapInt32EnumEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.MapEnum value_ = global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO;
- public global::Google.Protobuf.TestProtos.MapEnum Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32EnumEntry);
- }
-
- public bool Equals(MapInt32EnumEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- output.WriteRawTag(16);
- output.WriteEnum((int) Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32EnumEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- value_ = (global::Google.Protobuf.TestProtos.MapEnum) input.ReadEnum();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32ForeignMessageEntry : pb::IMessage<MapInt32ForeignMessageEntry> {
- private static readonly pb::MessageParser<MapInt32ForeignMessageEntry> _parser = new pb::MessageParser<MapInt32ForeignMessageEntry>(() => new MapInt32ForeignMessageEntry());
- public static pb::MessageParser<MapInt32ForeignMessageEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMap.Descriptor.NestedTypes[16]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMap_MapInt32ForeignMessageEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32ForeignMessageEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32ForeignMessageEntry(MapInt32ForeignMessageEntry other) : this() {
- key_ = other.key_;
- Value = other.value_ != null ? other.Value.Clone() : null;
- }
-
- public MapInt32ForeignMessageEntry Clone() {
- return new MapInt32ForeignMessageEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- if (value_ != null) Value.Freeze();
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.ForeignMessage value_;
- public global::Google.Protobuf.TestProtos.ForeignMessage Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32ForeignMessageEntry);
- }
-
- public bool Equals(MapInt32ForeignMessageEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (!object.Equals(Value, other.Value)) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (value_ != null) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (value_ != null) {
- output.WriteRawTag(18);
- output.WriteMessage(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (value_ != null) {
- size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32ForeignMessageEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.value_ != null) {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
- }
- Value.MergeFrom(other.Value);
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 18: {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
- }
- input.ReadMessage(value_);
- break;
- }
- }
- }
- }
-
- }
-
- }
- #endregion
-
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -3186,11 +615,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "test_map" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMapSubmessage__FieldAccessorTable; }
}
@@ -3250,6 +679,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (testMap_ != null) {
output.WriteRawTag(10);
@@ -3308,11 +741,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "map_int32_message" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[2]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMessageMap__FieldAccessorTable; }
}
@@ -3370,6 +803,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
mapInt32Message_.WriteTo(output, _map_mapInt32Message_codec);
}
@@ -3406,161 +843,6 @@ namespace Google.Protobuf.TestProtos {
}
}
- #region Nested types
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public static partial class Types {
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32MessageEntry : pb::IMessage<MapInt32MessageEntry> {
- private static readonly pb::MessageParser<MapInt32MessageEntry> _parser = new pb::MessageParser<MapInt32MessageEntry>(() => new MapInt32MessageEntry());
- public static pb::MessageParser<MapInt32MessageEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestMessageMap.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestMessageMap_MapInt32MessageEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32MessageEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32MessageEntry(MapInt32MessageEntry other) : this() {
- key_ = other.key_;
- Value = other.value_ != null ? other.Value.Clone() : null;
- }
-
- public MapInt32MessageEntry Clone() {
- return new MapInt32MessageEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- if (value_ != null) Value.Freeze();
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.TestAllTypes value_;
- public global::Google.Protobuf.TestProtos.TestAllTypes Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32MessageEntry);
- }
-
- public bool Equals(MapInt32MessageEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (!object.Equals(Value, other.Value)) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (value_ != null) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (value_ != null) {
- output.WriteRawTag(18);
- output.WriteMessage(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (value_ != null) {
- size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32MessageEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.value_ != null) {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.TestAllTypes();
- }
- Value.MergeFrom(other.Value);
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 18: {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.TestAllTypes();
- }
- input.ReadMessage(value_);
- break;
- }
- }
- }
- }
-
- }
-
- }
- #endregion
-
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -3570,11 +852,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "map1", "map2" };
private static readonly uint[] _fieldTags = new uint[] { 10, 18 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[3]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestSameTypeMap__FieldAccessorTable; }
}
@@ -3644,6 +926,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
map1_.WriteTo(output, _map_map1_codec);
map2_.WriteTo(output, _map_map2_codec);
@@ -3687,296 +973,6 @@ namespace Google.Protobuf.TestProtos {
}
}
- #region Nested types
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public static partial class Types {
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class Map1Entry : pb::IMessage<Map1Entry> {
- private static readonly pb::MessageParser<Map1Entry> _parser = new pb::MessageParser<Map1Entry>(() => new Map1Entry());
- public static pb::MessageParser<Map1Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestSameTypeMap.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestSameTypeMap_Map1Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public Map1Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public Map1Entry(Map1Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public Map1Entry Clone() {
- return new Map1Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as Map1Entry);
- }
-
- public bool Equals(Map1Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(Map1Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- Value = input.ReadInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class Map2Entry : pb::IMessage<Map2Entry> {
- private static readonly pb::MessageParser<Map2Entry> _parser = new pb::MessageParser<Map2Entry>(() => new Map2Entry());
- public static pb::MessageParser<Map2Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestSameTypeMap.Descriptor.NestedTypes[1]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestSameTypeMap_Map2Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public Map2Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public Map2Entry(Map2Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public Map2Entry Clone() {
- return new Map2Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as Map2Entry);
- }
-
- public bool Equals(Map2Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(Map2Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- Value = input.ReadInt32();
- break;
- }
- }
- }
- }
-
- }
-
- }
- #endregion
-
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -3986,11 +982,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "map_bool_bool", "map_fixed32_fixed32", "map_fixed64_fixed64", "map_int32_double", "map_int32_enum", "map_int32_float", "map_int32_foreign_message", "map_int32_int32", "map_int64_int64", "map_sfixed32_sfixed32", "map_sfixed64_sfixed64", "map_sint32_sint32", "map_sint64_sint64", "map_uint32_uint32", "map_uint64_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 106, 58, 66, 98, 114, 90, 122, 10, 18, 74, 82, 42, 50, 26, 34 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[4]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap__FieldAccessorTable; }
}
@@ -4216,6 +1212,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
mapInt32Int32_.WriteTo(output, _map_mapInt32Int32_codec);
mapInt64Int64_.WriteTo(output, _map_mapInt64Int64_codec);
@@ -4350,2149 +1350,6 @@ namespace Google.Protobuf.TestProtos {
}
}
- #region Nested types
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public static partial class Types {
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32Int32Entry : pb::IMessage<MapInt32Int32Entry> {
- private static readonly pb::MessageParser<MapInt32Int32Entry> _parser = new pb::MessageParser<MapInt32Int32Entry>(() => new MapInt32Int32Entry());
- public static pb::MessageParser<MapInt32Int32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt32Int32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32Int32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32Int32Entry(MapInt32Int32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32Int32Entry Clone() {
- return new MapInt32Int32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32Int32Entry);
- }
-
- public bool Equals(MapInt32Int32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32Int32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- Value = input.ReadInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt64Int64Entry : pb::IMessage<MapInt64Int64Entry> {
- private static readonly pb::MessageParser<MapInt64Int64Entry> _parser = new pb::MessageParser<MapInt64Int64Entry>(() => new MapInt64Int64Entry());
- public static pb::MessageParser<MapInt64Int64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[1]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt64Int64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt64Int64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt64Int64Entry(MapInt64Int64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt64Int64Entry Clone() {
- return new MapInt64Int64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt64Int64Entry);
- }
-
- public bool Equals(MapInt64Int64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(8);
- output.WriteInt64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(16);
- output.WriteInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeInt64Size(Key);
- }
- if (Value != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt64Int64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt64();
- break;
- }
- case 16: {
- Value = input.ReadInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapUint32Uint32Entry : pb::IMessage<MapUint32Uint32Entry> {
- private static readonly pb::MessageParser<MapUint32Uint32Entry> _parser = new pb::MessageParser<MapUint32Uint32Entry>(() => new MapUint32Uint32Entry());
- public static pb::MessageParser<MapUint32Uint32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[2]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapUint32Uint32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapUint32Uint32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapUint32Uint32Entry(MapUint32Uint32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapUint32Uint32Entry Clone() {
- return new MapUint32Uint32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private uint key_;
- public uint Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private uint value_;
- public uint Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapUint32Uint32Entry);
- }
-
- public bool Equals(MapUint32Uint32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteUInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteUInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapUint32Uint32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadUInt32();
- break;
- }
- case 16: {
- Value = input.ReadUInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapUint64Uint64Entry : pb::IMessage<MapUint64Uint64Entry> {
- private static readonly pb::MessageParser<MapUint64Uint64Entry> _parser = new pb::MessageParser<MapUint64Uint64Entry>(() => new MapUint64Uint64Entry());
- public static pb::MessageParser<MapUint64Uint64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[3]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapUint64Uint64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapUint64Uint64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapUint64Uint64Entry(MapUint64Uint64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapUint64Uint64Entry Clone() {
- return new MapUint64Uint64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private ulong key_;
- public ulong Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private ulong value_;
- public ulong Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapUint64Uint64Entry);
- }
-
- public bool Equals(MapUint64Uint64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0UL) hash ^= Key.GetHashCode();
- if (Value != 0UL) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0UL) {
- output.WriteRawTag(8);
- output.WriteUInt64(Key);
- }
- if (Value != 0UL) {
- output.WriteRawTag(16);
- output.WriteUInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0UL) {
- size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Key);
- }
- if (Value != 0UL) {
- size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapUint64Uint64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0UL) {
- Key = other.Key;
- }
- if (other.Value != 0UL) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadUInt64();
- break;
- }
- case 16: {
- Value = input.ReadUInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSint32Sint32Entry : pb::IMessage<MapSint32Sint32Entry> {
- private static readonly pb::MessageParser<MapSint32Sint32Entry> _parser = new pb::MessageParser<MapSint32Sint32Entry>(() => new MapSint32Sint32Entry());
- public static pb::MessageParser<MapSint32Sint32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[4]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapSint32Sint32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSint32Sint32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSint32Sint32Entry(MapSint32Sint32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSint32Sint32Entry Clone() {
- return new MapSint32Sint32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSint32Sint32Entry);
- }
-
- public bool Equals(MapSint32Sint32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteSInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteSInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeSInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapSint32Sint32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadSInt32();
- break;
- }
- case 16: {
- Value = input.ReadSInt32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSint64Sint64Entry : pb::IMessage<MapSint64Sint64Entry> {
- private static readonly pb::MessageParser<MapSint64Sint64Entry> _parser = new pb::MessageParser<MapSint64Sint64Entry>(() => new MapSint64Sint64Entry());
- public static pb::MessageParser<MapSint64Sint64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[5]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapSint64Sint64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSint64Sint64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSint64Sint64Entry(MapSint64Sint64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSint64Sint64Entry Clone() {
- return new MapSint64Sint64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSint64Sint64Entry);
- }
-
- public bool Equals(MapSint64Sint64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(8);
- output.WriteSInt64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(16);
- output.WriteSInt64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Key);
- }
- if (Value != 0L) {
- size += 1 + pb::CodedOutputStream.ComputeSInt64Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapSint64Sint64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadSInt64();
- break;
- }
- case 16: {
- Value = input.ReadSInt64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapFixed32Fixed32Entry : pb::IMessage<MapFixed32Fixed32Entry> {
- private static readonly pb::MessageParser<MapFixed32Fixed32Entry> _parser = new pb::MessageParser<MapFixed32Fixed32Entry>(() => new MapFixed32Fixed32Entry());
- public static pb::MessageParser<MapFixed32Fixed32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 13, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[6]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapFixed32Fixed32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapFixed32Fixed32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapFixed32Fixed32Entry(MapFixed32Fixed32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapFixed32Fixed32Entry Clone() {
- return new MapFixed32Fixed32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private uint key_;
- public uint Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private uint value_;
- public uint Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapFixed32Fixed32Entry);
- }
-
- public bool Equals(MapFixed32Fixed32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(13);
- output.WriteFixed32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(21);
- output.WriteFixed32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + 4;
- }
- if (Value != 0) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapFixed32Fixed32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 13: {
- Key = input.ReadFixed32();
- break;
- }
- case 21: {
- Value = input.ReadFixed32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapFixed64Fixed64Entry : pb::IMessage<MapFixed64Fixed64Entry> {
- private static readonly pb::MessageParser<MapFixed64Fixed64Entry> _parser = new pb::MessageParser<MapFixed64Fixed64Entry>(() => new MapFixed64Fixed64Entry());
- public static pb::MessageParser<MapFixed64Fixed64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 9, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[7]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapFixed64Fixed64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapFixed64Fixed64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapFixed64Fixed64Entry(MapFixed64Fixed64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapFixed64Fixed64Entry Clone() {
- return new MapFixed64Fixed64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private ulong key_;
- public ulong Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private ulong value_;
- public ulong Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapFixed64Fixed64Entry);
- }
-
- public bool Equals(MapFixed64Fixed64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0UL) hash ^= Key.GetHashCode();
- if (Value != 0UL) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0UL) {
- output.WriteRawTag(9);
- output.WriteFixed64(Key);
- }
- if (Value != 0UL) {
- output.WriteRawTag(17);
- output.WriteFixed64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0UL) {
- size += 1 + 8;
- }
- if (Value != 0UL) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapFixed64Fixed64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0UL) {
- Key = other.Key;
- }
- if (other.Value != 0UL) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 9: {
- Key = input.ReadFixed64();
- break;
- }
- case 17: {
- Value = input.ReadFixed64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSfixed32Sfixed32Entry : pb::IMessage<MapSfixed32Sfixed32Entry> {
- private static readonly pb::MessageParser<MapSfixed32Sfixed32Entry> _parser = new pb::MessageParser<MapSfixed32Sfixed32Entry>(() => new MapSfixed32Sfixed32Entry());
- public static pb::MessageParser<MapSfixed32Sfixed32Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 13, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[8]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapSfixed32Sfixed32Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSfixed32Sfixed32Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSfixed32Sfixed32Entry(MapSfixed32Sfixed32Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSfixed32Sfixed32Entry Clone() {
- return new MapSfixed32Sfixed32Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSfixed32Sfixed32Entry);
- }
-
- public bool Equals(MapSfixed32Sfixed32Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(13);
- output.WriteSFixed32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(21);
- output.WriteSFixed32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + 4;
- }
- if (Value != 0) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapSfixed32Sfixed32Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 13: {
- Key = input.ReadSFixed32();
- break;
- }
- case 21: {
- Value = input.ReadSFixed32();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapSfixed64Sfixed64Entry : pb::IMessage<MapSfixed64Sfixed64Entry> {
- private static readonly pb::MessageParser<MapSfixed64Sfixed64Entry> _parser = new pb::MessageParser<MapSfixed64Sfixed64Entry>(() => new MapSfixed64Sfixed64Entry());
- public static pb::MessageParser<MapSfixed64Sfixed64Entry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 9, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[9]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapSfixed64Sfixed64Entry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapSfixed64Sfixed64Entry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapSfixed64Sfixed64Entry(MapSfixed64Sfixed64Entry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapSfixed64Sfixed64Entry Clone() {
- return new MapSfixed64Sfixed64Entry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private long key_;
- public long Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private long value_;
- public long Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapSfixed64Sfixed64Entry);
- }
-
- public bool Equals(MapSfixed64Sfixed64Entry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0L) hash ^= Key.GetHashCode();
- if (Value != 0L) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0L) {
- output.WriteRawTag(9);
- output.WriteSFixed64(Key);
- }
- if (Value != 0L) {
- output.WriteRawTag(17);
- output.WriteSFixed64(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0L) {
- size += 1 + 8;
- }
- if (Value != 0L) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapSfixed64Sfixed64Entry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0L) {
- Key = other.Key;
- }
- if (other.Value != 0L) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 9: {
- Key = input.ReadSFixed64();
- break;
- }
- case 17: {
- Value = input.ReadSFixed64();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32FloatEntry : pb::IMessage<MapInt32FloatEntry> {
- private static readonly pb::MessageParser<MapInt32FloatEntry> _parser = new pb::MessageParser<MapInt32FloatEntry>(() => new MapInt32FloatEntry());
- public static pb::MessageParser<MapInt32FloatEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 21 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[10]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt32FloatEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32FloatEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32FloatEntry(MapInt32FloatEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32FloatEntry Clone() {
- return new MapInt32FloatEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private float value_;
- public float Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32FloatEntry);
- }
-
- public bool Equals(MapInt32FloatEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0F) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0F) {
- output.WriteRawTag(21);
- output.WriteFloat(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0F) {
- size += 1 + 4;
- }
- return size;
- }
-
- public void MergeFrom(MapInt32FloatEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0F) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 21: {
- Value = input.ReadFloat();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32DoubleEntry : pb::IMessage<MapInt32DoubleEntry> {
- private static readonly pb::MessageParser<MapInt32DoubleEntry> _parser = new pb::MessageParser<MapInt32DoubleEntry>(() => new MapInt32DoubleEntry());
- public static pb::MessageParser<MapInt32DoubleEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 17 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[11]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt32DoubleEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32DoubleEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32DoubleEntry(MapInt32DoubleEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32DoubleEntry Clone() {
- return new MapInt32DoubleEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private double value_;
- public double Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32DoubleEntry);
- }
-
- public bool Equals(MapInt32DoubleEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0D) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0D) {
- output.WriteRawTag(17);
- output.WriteDouble(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0D) {
- size += 1 + 8;
- }
- return size;
- }
-
- public void MergeFrom(MapInt32DoubleEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0D) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 17: {
- Value = input.ReadDouble();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapBoolBoolEntry : pb::IMessage<MapBoolBoolEntry> {
- private static readonly pb::MessageParser<MapBoolBoolEntry> _parser = new pb::MessageParser<MapBoolBoolEntry>(() => new MapBoolBoolEntry());
- public static pb::MessageParser<MapBoolBoolEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[12]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapBoolBoolEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapBoolBoolEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapBoolBoolEntry(MapBoolBoolEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapBoolBoolEntry Clone() {
- return new MapBoolBoolEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private bool key_;
- public bool Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private bool value_;
- public bool Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapBoolBoolEntry);
- }
-
- public bool Equals(MapBoolBoolEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != false) hash ^= Key.GetHashCode();
- if (Value != false) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != false) {
- output.WriteRawTag(8);
- output.WriteBool(Key);
- }
- if (Value != false) {
- output.WriteRawTag(16);
- output.WriteBool(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != false) {
- size += 1 + 1;
- }
- if (Value != false) {
- size += 1 + 1;
- }
- return size;
- }
-
- public void MergeFrom(MapBoolBoolEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != false) {
- Key = other.Key;
- }
- if (other.Value != false) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadBool();
- break;
- }
- case 16: {
- Value = input.ReadBool();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32EnumEntry : pb::IMessage<MapInt32EnumEntry> {
- private static readonly pb::MessageParser<MapInt32EnumEntry> _parser = new pb::MessageParser<MapInt32EnumEntry>(() => new MapInt32EnumEntry());
- public static pb::MessageParser<MapInt32EnumEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[13]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt32EnumEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32EnumEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32EnumEntry(MapInt32EnumEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public MapInt32EnumEntry Clone() {
- return new MapInt32EnumEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.MapEnum value_ = global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO;
- public global::Google.Protobuf.TestProtos.MapEnum Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32EnumEntry);
- }
-
- public bool Equals(MapInt32EnumEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- output.WriteRawTag(16);
- output.WriteEnum((int) Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32EnumEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != global::Google.Protobuf.TestProtos.MapEnum.MAP_ENUM_FOO) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- value_ = (global::Google.Protobuf.TestProtos.MapEnum) input.ReadEnum();
- break;
- }
- }
- }
- }
-
- }
-
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class MapInt32ForeignMessageEntry : pb::IMessage<MapInt32ForeignMessageEntry> {
- private static readonly pb::MessageParser<MapInt32ForeignMessageEntry> _parser = new pb::MessageParser<MapInt32ForeignMessageEntry>(() => new MapInt32ForeignMessageEntry());
- public static pb::MessageParser<MapInt32ForeignMessageEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.TestArenaMap.Descriptor.NestedTypes[14]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_TestArenaMap_MapInt32ForeignMessageEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public MapInt32ForeignMessageEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public MapInt32ForeignMessageEntry(MapInt32ForeignMessageEntry other) : this() {
- key_ = other.key_;
- Value = other.value_ != null ? other.Value.Clone() : null;
- }
-
- public MapInt32ForeignMessageEntry Clone() {
- return new MapInt32ForeignMessageEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- if (value_ != null) Value.Freeze();
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.ForeignMessage value_;
- public global::Google.Protobuf.TestProtos.ForeignMessage Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as MapInt32ForeignMessageEntry);
- }
-
- public bool Equals(MapInt32ForeignMessageEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (!object.Equals(Value, other.Value)) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (value_ != null) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (value_ != null) {
- output.WriteRawTag(18);
- output.WriteMessage(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (value_ != null) {
- size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(MapInt32ForeignMessageEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.value_ != null) {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
- }
- Value.MergeFrom(other.Value);
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 18: {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.ForeignMessage();
- }
- input.ReadMessage(value_);
- break;
- }
- }
- }
- }
-
- }
-
- }
- #endregion
-
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
@@ -6502,11 +1359,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "type" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[5]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_MessageContainingEnumCalledType__FieldAccessorTable; }
}
@@ -6564,6 +1421,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
type_.WriteTo(output, _map_type_codec);
}
@@ -6607,155 +1468,6 @@ namespace Google.Protobuf.TestProtos {
TYPE_FOO = 0,
}
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class TypeEntry : pb::IMessage<TypeEntry> {
- private static readonly pb::MessageParser<TypeEntry> _parser = new pb::MessageParser<TypeEntry>(() => new TypeEntry());
- public static pb::MessageParser<TypeEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_MessageContainingEnumCalledType_TypeEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public TypeEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public TypeEntry(TypeEntry other) : this() {
- key_ = other.key_;
- Value = other.value_ != null ? other.Value.Clone() : null;
- }
-
- public TypeEntry Clone() {
- return new TypeEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- if (value_ != null) Value.Freeze();
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType value_;
- public global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as TypeEntry);
- }
-
- public bool Equals(TypeEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (!object.Equals(Value, other.Value)) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (value_ != null) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (value_ != null) {
- output.WriteRawTag(18);
- output.WriteMessage(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (value_ != null) {
- size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
- }
- return size;
- }
-
- public void MergeFrom(TypeEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.value_ != null) {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType();
- }
- Value.MergeFrom(other.Value);
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 18: {
- if (value_ == null) {
- value_ = new global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType();
- }
- input.ReadMessage(value_);
- break;
- }
- }
- }
- }
-
- }
-
}
#endregion
@@ -6768,11 +1480,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "entry" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.Descriptor.MessageTypes[6]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_MessageContainingMapCalledEntry__FieldAccessorTable; }
}
@@ -6830,6 +1542,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
entry_.WriteTo(output, _map_entry_codec);
}
@@ -6866,154 +1582,6 @@ namespace Google.Protobuf.TestProtos {
}
}
- #region Nested types
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public static partial class Types {
- [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- public sealed partial class EntryEntry : pb::IMessage<EntryEntry> {
- private static readonly pb::MessageParser<EntryEntry> _parser = new pb::MessageParser<EntryEntry>(() => new EntryEntry());
- public static pb::MessageParser<EntryEntry> Parser { get { return _parser; } }
-
- private static readonly string[] _fieldNames = new string[] { "key", "value" };
- private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry.Descriptor.NestedTypes[0]; }
- }
-
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.TestProtos.MapUnittestProto3.internal__static_protobuf_unittest_MessageContainingMapCalledEntry_EntryEntry__FieldAccessorTable; }
- }
-
- private bool _frozen = false;
- public bool IsFrozen { get { return _frozen; } }
-
- public EntryEntry() {
- OnConstruction();
- }
-
- partial void OnConstruction();
-
- public EntryEntry(EntryEntry other) : this() {
- key_ = other.key_;
- value_ = other.value_;
- }
-
- public EntryEntry Clone() {
- return new EntryEntry(this);
- }
-
- public void Freeze() {
- if (IsFrozen) {
- return;
- }
- _frozen = true;
- }
-
- public const int KeyFieldNumber = 1;
- private int key_;
- public int Key {
- get { return key_; }
- set {
- pb::Freezable.CheckMutable(this);
- key_ = value;
- }
- }
-
- public const int ValueFieldNumber = 2;
- private int value_;
- public int Value {
- get { return value_; }
- set {
- pb::Freezable.CheckMutable(this);
- value_ = value;
- }
- }
-
- public override bool Equals(object other) {
- return Equals(other as EntryEntry);
- }
-
- public bool Equals(EntryEntry other) {
- if (ReferenceEquals(other, null)) {
- return false;
- }
- if (ReferenceEquals(other, this)) {
- return true;
- }
- if (Key != other.Key) return false;
- if (Value != other.Value) return false;
- return true;
- }
-
- public override int GetHashCode() {
- int hash = 1;
- if (Key != 0) hash ^= Key.GetHashCode();
- if (Value != 0) hash ^= Value.GetHashCode();
- return hash;
- }
-
- public void WriteTo(pb::CodedOutputStream output) {
- if (Key != 0) {
- output.WriteRawTag(8);
- output.WriteInt32(Key);
- }
- if (Value != 0) {
- output.WriteRawTag(16);
- output.WriteInt32(Value);
- }
- }
-
- public int CalculateSize() {
- int size = 0;
- if (Key != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Key);
- }
- if (Value != 0) {
- size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
- }
- return size;
- }
-
- public void MergeFrom(EntryEntry other) {
- if (other == null) {
- return;
- }
- if (other.Key != 0) {
- Key = other.Key;
- }
- if (other.Value != 0) {
- Value = other.Value;
- }
- }
-
- public void MergeFrom(pb::CodedInputStream input) {
- uint tag;
- while (input.ReadTag(out tag)) {
- switch(tag) {
- case 0:
- throw pb::InvalidProtocolBufferException.InvalidTag();
- default:
- if (pb::WireFormat.IsEndGroupTag(tag)) {
- return;
- }
- break;
- case 8: {
- Key = input.ReadInt32();
- break;
- }
- case 16: {
- Value = input.ReadInt32();
- break;
- }
- }
- }
- }
-
- }
-
- }
- #endregion
-
}
#endregion
diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs
index d30f22db..3875a4c3 100644
--- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs
+++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportProto3.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.TestProtos {
@@ -13,13 +13,13 @@ namespace Google.Protobuf.TestProtos {
public static partial class UnittestImportProto3 {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static UnittestImportProto3() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -32,13 +32,13 @@ namespace Google.Protobuf.TestProtos {
"UhAIEg4KCklNUE9SVF9CQVoQCUI8Chhjb20uZ29vZ2xlLnByb3RvYnVmLnRl",
"c3RIAfgBAaoCGkdvb2dsZS5Qcm90b2J1Zi5UZXN0UHJvdG9zUABiBnByb3Rv",
"Mw=="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
global::Google.Protobuf.TestProtos.UnittestImportPublicProto3.Descriptor,
});
internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.ImportMessage), descriptor.MessageTypes[0],
- new string[] { "D", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.ImportMessage), descriptor.MessageTypes[0],
+ new string[] { "D", }, new string[] { });
}
#endregion
@@ -61,11 +61,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "d" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestImportProto3.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestImportProto3.internal__static_protobuf_unittest_import_ImportMessage__FieldAccessorTable; }
}
@@ -124,6 +124,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (D != 0) {
output.WriteRawTag(8);
diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs
index 5aa03a64..048ae5e9 100644
--- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs
+++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestImportPublicProto3.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.TestProtos {
@@ -13,13 +13,13 @@ namespace Google.Protobuf.TestProtos {
public static partial class UnittestImportPublicProto3 {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static UnittestImportPublicProto3() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -28,12 +28,12 @@ namespace Google.Protobuf.TestProtos {
"bzMucHJvdG8SGHByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydCIgChNQdWJsaWNJ",
"bXBvcnRNZXNzYWdlEgkKAWUYASABKAVCNwoYY29tLmdvb2dsZS5wcm90b2J1",
"Zi50ZXN0qgIaR29vZ2xlLlByb3RvYnVmLlRlc3RQcm90b3NiBnByb3RvMw=="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
});
internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.PublicImportMessage), descriptor.MessageTypes[0],
- new string[] { "E", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.PublicImportMessage), descriptor.MessageTypes[0],
+ new string[] { "E", }, new string[] { });
}
#endregion
@@ -46,11 +46,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "e" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestImportPublicProto3.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestImportPublicProto3.internal__static_protobuf_unittest_import_PublicImportMessage__FieldAccessorTable; }
}
@@ -109,6 +109,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (E != 0) {
output.WriteRawTag(8);
diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs
index 0e409c8b..c68c67fb 100644
--- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs
+++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestIssues.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace UnitTest.Issues.TestProtos {
@@ -13,19 +13,19 @@ namespace UnitTest.Issues.TestProtos {
public static partial class UnittestIssues {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_Issue307__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_Issue307_NestedOnce__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_Issue307_NestedOnce_NestedTwice__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_unittest_issues_ItemField__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_Issue307__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_Issue307_NestedOnce__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_Issue307_NestedOnce_NestedTwice__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_unittest_issues_ItemField__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static UnittestIssues() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -48,30 +48,30 @@ namespace UnitTest.Issues.TestProtos {
"EPv//////////wESFQoITWludXNPbmUQ////////////ASouCg5EZXByZWNh",
"dGVkRW51bRITCg9ERVBSRUNBVEVEX1pFUk8QABIHCgNvbmUQAUIfSAGqAhpV",
"bml0VGVzdC5Jc3N1ZXMuVGVzdFByb3Rvc2IGcHJvdG8z"));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
});
internal__static_unittest_issues_Issue307__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307), descriptor.MessageTypes[0],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307), descriptor.MessageTypes[0],
+ new string[] { }, new string[] { });
internal__static_unittest_issues_Issue307_NestedOnce__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce), descriptor.MessageTypes[0].NestedTypes[0],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce), descriptor.MessageTypes[0].NestedTypes[0],
+ new string[] { }, new string[] { });
internal__static_unittest_issues_Issue307_NestedOnce_NestedTwice__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Types.NestedTwice), descriptor.MessageTypes[0].NestedTypes[0].NestedTypes[0],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Types.NestedTwice), descriptor.MessageTypes[0].NestedTypes[0].NestedTypes[0],
+ new string[] { }, new string[] { });
internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.NegativeEnumMessage), descriptor.MessageTypes[1],
- new string[] { "Value", "Values", "PackedValues", });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.NegativeEnumMessage), descriptor.MessageTypes[1],
+ new string[] { "Value", "Values", "PackedValues", }, new string[] { });
internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.DeprecatedChild), descriptor.MessageTypes[2],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.DeprecatedChild), descriptor.MessageTypes[2],
+ new string[] { }, new string[] { });
internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage), descriptor.MessageTypes[3],
- new string[] { "PrimitiveValue", "PrimitiveArray", "MessageValue", "MessageArray", "EnumValue", "EnumArray", });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage), descriptor.MessageTypes[3],
+ new string[] { "PrimitiveValue", "PrimitiveArray", "MessageValue", "MessageArray", "EnumValue", "EnumArray", }, new string[] { });
internal__static_unittest_issues_ItemField__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.ItemField), descriptor.MessageTypes[4],
- new string[] { "Item", });
+ new pbr::FieldAccessorTable(typeof(global::UnitTest.Issues.TestProtos.ItemField), descriptor.MessageTypes[4],
+ new string[] { "Item", }, new string[] { });
}
#endregion
@@ -98,11 +98,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_Issue307__FieldAccessorTable; }
}
@@ -148,6 +148,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -187,11 +191,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.Issue307.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_Issue307_NestedOnce__FieldAccessorTable; }
}
@@ -237,6 +241,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -276,11 +284,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_Issue307_NestedOnce_NestedTwice__FieldAccessorTable; }
}
@@ -326,6 +334,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -374,11 +386,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { "packed_values", "value", "values" };
private static readonly uint[] _fieldTags = new uint[] { 26, 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor.MessageTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_NegativeEnumMessage__FieldAccessorTable; }
}
@@ -459,6 +471,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.NEGATIVE_ENUM_ZERO) {
output.WriteRawTag(8);
@@ -527,11 +543,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor.MessageTypes[2]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedChild__FieldAccessorTable; }
}
@@ -577,6 +593,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -615,11 +635,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { "EnumArray", "EnumValue", "MessageArray", "MessageValue", "PrimitiveArray", "PrimitiveValue" };
private static readonly uint[] _fieldTags = new uint[] { 50, 40, 34, 26, 18, 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor.MessageTypes[3]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_DeprecatedFieldsMessage__FieldAccessorTable; }
}
@@ -746,6 +766,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (PrimitiveValue != 0) {
output.WriteRawTag(8);
@@ -855,11 +879,11 @@ namespace UnitTest.Issues.TestProtos {
private static readonly string[] _fieldNames = new string[] { "item" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.Descriptor.MessageTypes[4]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::UnitTest.Issues.TestProtos.UnittestIssues.internal__static_unittest_issues_ItemField__FieldAccessorTable; }
}
@@ -918,6 +942,10 @@ namespace UnitTest.Issues.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Item != 0) {
output.WriteRawTag(8);
diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs
index d2437bf4..67c42708 100644
--- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs
+++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestProto3.cs
@@ -5,7 +5,7 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Google.Protobuf.TestProtos {
@@ -13,47 +13,47 @@ namespace Google.Protobuf.TestProtos {
public static partial class UnittestProto3 {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_OneString__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MoreString__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_OneBytes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_Int32Message__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_Int64Message__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestOneof__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooRequest__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooResponse__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarRequest__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_protobuf_unittest_BarResponse__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_OneString__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_MoreString__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_OneBytes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_Int32Message__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_Int64Message__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestOneof__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_FooRequest__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_FooResponse__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_BarRequest__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_protobuf_unittest_BarResponse__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static UnittestProto3() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -185,115 +185,115 @@ namespace Google.Protobuf.TestProtos {
"HS5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXF1ZXN0Gh4ucHJvdG9idWZfdW5p",
"dHRlc3QuQmFyUmVzcG9uc2VCOkINVW5pdHRlc3RQcm90b0gBgAEBiAEBkAEB",
"+AEBqgIaR29vZ2xlLlByb3RvYnVmLlRlc3RQcm90b3NiBnByb3RvMw=="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
global::Google.Protobuf.TestProtos.UnittestImportProto3.Descriptor,
});
internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestAllTypes), descriptor.MessageTypes[0],
- new string[] { "SingleInt32", "SingleInt64", "SingleUint32", "SingleUint64", "SingleSint32", "SingleSint64", "SingleFixed32", "SingleFixed64", "SingleSfixed32", "SingleSfixed64", "SingleFloat", "SingleDouble", "SingleBool", "SingleString", "SingleBytes", "SingleNestedMessage", "SingleForeignMessage", "SingleImportMessage", "SingleNestedEnum", "SingleForeignEnum", "SingleImportEnum", "SinglePublicImportMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedPublicImportMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofField", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestAllTypes), descriptor.MessageTypes[0],
+ new string[] { "SingleInt32", "SingleInt64", "SingleUint32", "SingleUint64", "SingleSint32", "SingleSint64", "SingleFixed32", "SingleFixed64", "SingleSfixed32", "SingleSfixed64", "SingleFloat", "SingleDouble", "SingleBool", "SingleString", "SingleBytes", "SingleNestedMessage", "SingleForeignMessage", "SingleImportMessage", "SingleNestedEnum", "SingleForeignEnum", "SingleImportEnum", "SinglePublicImportMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedPublicImportMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", }, new string[] { "OneofField", });
internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage), descriptor.MessageTypes[0].NestedTypes[0],
- new string[] { "Bb", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage), descriptor.MessageTypes[0].NestedTypes[0],
+ new string[] { "Bb", }, new string[] { });
internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.NestedTestAllTypes), descriptor.MessageTypes[1],
- new string[] { "Child", "Payload", "RepeatedChild", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.NestedTestAllTypes), descriptor.MessageTypes[1],
+ new string[] { "Child", "Payload", "RepeatedChild", }, new string[] { });
internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestDeprecatedFields), descriptor.MessageTypes[2],
- new string[] { "DeprecatedInt32", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestDeprecatedFields), descriptor.MessageTypes[2],
+ new string[] { "DeprecatedInt32", }, new string[] { });
internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.ForeignMessage), descriptor.MessageTypes[3],
- new string[] { "C", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.ForeignMessage), descriptor.MessageTypes[3],
+ new string[] { "C", }, new string[] { });
internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestReservedFields), descriptor.MessageTypes[4],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestReservedFields), descriptor.MessageTypes[4],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestForeignNested), descriptor.MessageTypes[5],
- new string[] { "ForeignNested", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestForeignNested), descriptor.MessageTypes[5],
+ new string[] { "ForeignNested", }, new string[] { });
internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber), descriptor.MessageTypes[6],
- new string[] { "A", "Bb", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber), descriptor.MessageTypes[6],
+ new string[] { "A", "Bb", }, new string[] { });
internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestRecursiveMessage), descriptor.MessageTypes[7],
- new string[] { "A", "I", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestRecursiveMessage), descriptor.MessageTypes[7],
+ new string[] { "A", "I", }, new string[] { });
internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionA), descriptor.MessageTypes[8],
- new string[] { "Bb", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionA), descriptor.MessageTypes[8],
+ new string[] { "Bb", }, new string[] { });
internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionB), descriptor.MessageTypes[9],
- new string[] { "A", "OptionalInt32", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionB), descriptor.MessageTypes[9],
+ new string[] { "A", "OptionalInt32", }, new string[] { });
internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames), descriptor.MessageTypes[10],
- new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames), descriptor.MessageTypes[10],
+ new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", }, new string[] { });
internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings), descriptor.MessageTypes[11],
- new string[] { "MyString", "MyInt", "MyFloat", "SingleNestedMessage", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings), descriptor.MessageTypes[11],
+ new string[] { "MyString", "MyInt", "MyFloat", "SingleNestedMessage", }, new string[] { });
internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage), descriptor.MessageTypes[11].NestedTypes[0],
- new string[] { "Oo", "Bb", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage), descriptor.MessageTypes[11].NestedTypes[0],
+ new string[] { "Oo", "Bb", }, new string[] { });
internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.SparseEnumMessage), descriptor.MessageTypes[12],
- new string[] { "SparseEnum", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.SparseEnumMessage), descriptor.MessageTypes[12],
+ new string[] { "SparseEnum", }, new string[] { });
internal__static_protobuf_unittest_OneString__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.OneString), descriptor.MessageTypes[13],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.OneString), descriptor.MessageTypes[13],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_MoreString__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MoreString), descriptor.MessageTypes[14],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MoreString), descriptor.MessageTypes[14],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_OneBytes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.OneBytes), descriptor.MessageTypes[15],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.OneBytes), descriptor.MessageTypes[15],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MoreBytes), descriptor.MessageTypes[16],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.MoreBytes), descriptor.MessageTypes[16],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_Int32Message__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Int32Message), descriptor.MessageTypes[17],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Int32Message), descriptor.MessageTypes[17],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Uint32Message), descriptor.MessageTypes[18],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Uint32Message), descriptor.MessageTypes[18],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_Int64Message__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Int64Message), descriptor.MessageTypes[19],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Int64Message), descriptor.MessageTypes[19],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Uint64Message), descriptor.MessageTypes[20],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.Uint64Message), descriptor.MessageTypes[20],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BoolMessage), descriptor.MessageTypes[21],
- new string[] { "Data", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BoolMessage), descriptor.MessageTypes[21],
+ new string[] { "Data", }, new string[] { });
internal__static_protobuf_unittest_TestOneof__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestOneof), descriptor.MessageTypes[22],
- new string[] { "FooInt", "FooString", "FooMessage", "Foo", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestOneof), descriptor.MessageTypes[22],
+ new string[] { "FooInt", "FooString", "FooMessage", }, new string[] { "Foo", });
internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestPackedTypes), descriptor.MessageTypes[23],
- new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestPackedTypes), descriptor.MessageTypes[23],
+ new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", }, new string[] { });
internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestUnpackedTypes), descriptor.MessageTypes[24],
- new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestUnpackedTypes), descriptor.MessageTypes[24],
+ new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", }, new string[] { });
internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes), descriptor.MessageTypes[25],
- new string[] { "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes), descriptor.MessageTypes[25],
+ new string[] { "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64", }, new string[] { });
internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestCommentInjectionMessage), descriptor.MessageTypes[26],
- new string[] { "A", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.TestCommentInjectionMessage), descriptor.MessageTypes[26],
+ new string[] { "A", }, new string[] { });
internal__static_protobuf_unittest_FooRequest__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooRequest), descriptor.MessageTypes[27],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooRequest), descriptor.MessageTypes[27],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_FooResponse__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooResponse), descriptor.MessageTypes[28],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooResponse), descriptor.MessageTypes[28],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooClientMessage), descriptor.MessageTypes[29],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooClientMessage), descriptor.MessageTypes[29],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooServerMessage), descriptor.MessageTypes[30],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.FooServerMessage), descriptor.MessageTypes[30],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_BarRequest__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BarRequest), descriptor.MessageTypes[31],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BarRequest), descriptor.MessageTypes[31],
+ new string[] { }, new string[] { });
internal__static_protobuf_unittest_BarResponse__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BarResponse), descriptor.MessageTypes[32],
- new string[] { });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.TestProtos.BarResponse), descriptor.MessageTypes[32],
+ new string[] { }, new string[] { });
}
#endregion
@@ -335,11 +335,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "oneof_bytes", "oneof_nested_message", "oneof_string", "oneof_uint32", "repeated_bool", "repeated_bytes", "repeated_double", "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_foreign_enum", "repeated_foreign_message", "repeated_import_enum", "repeated_import_message", "repeated_int32", "repeated_int64", "repeated_nested_enum", "repeated_nested_message", "repeated_public_import_message", "repeated_sfixed32", "repeated_sfixed64", "repeated_sint32", "repeated_sint64", "repeated_string", "repeated_uint32", "repeated_uint64", "single_bool", "single_bytes", "single_double", "single_fixed32", "single_fixed64", "single_float", "single_foreign_enum", "single_foreign_message", "single_import_enum", "single_import_message", "single_int32", "single_int64", "single_nested_enum", "single_nested_message", "single_public_import_message", "single_sfixed32", "single_sfixed64", "single_sint32", "single_sint64", "single_string", "single_uint32", "single_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 914, 898, 906, 888, 346, 362, 338, 298, 306, 330, 418, 394, 426, 402, 250, 258, 410, 386, 434, 314, 322, 282, 290, 354, 266, 274, 104, 122, 97, 61, 65, 93, 176, 154, 184, 162, 8, 16, 168, 146, 210, 77, 81, 40, 48, 114, 24, 32 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable; }
}
@@ -1019,6 +1019,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (SingleInt32 != 0) {
output.WriteRawTag(8);
@@ -1632,11 +1636,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "bb" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.TestAllTypes.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable; }
}
@@ -1695,6 +1699,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Bb != 0) {
output.WriteRawTag(8);
@@ -1752,11 +1760,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "child", "payload", "repeated_child" };
private static readonly uint[] _fieldTags = new uint[] { 10, 18, 26 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable; }
}
@@ -1842,6 +1850,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (child_ != null) {
output.WriteRawTag(10);
@@ -1927,11 +1939,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "deprecated_int32" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[2]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable; }
}
@@ -1991,6 +2003,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (DeprecatedInt32 != 0) {
output.WriteRawTag(8);
@@ -2043,11 +2059,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "c" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[3]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable; }
}
@@ -2106,6 +2122,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (C != 0) {
output.WriteRawTag(8);
@@ -2158,11 +2178,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[4]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; }
}
@@ -2208,6 +2228,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -2246,11 +2270,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "foreign_nested" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[5]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable; }
}
@@ -2310,6 +2334,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (foreignNested_ != null) {
output.WriteRawTag(10);
@@ -2368,11 +2396,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "a", "bb" };
private static readonly uint[] _fieldTags = new uint[] { 8, 2147483640 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[6]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable; }
}
@@ -2444,6 +2472,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (A != 0) {
output.WriteRawTag(8);
@@ -2510,11 +2542,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "a", "i" };
private static readonly uint[] _fieldTags = new uint[] { 10, 16 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[7]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable; }
}
@@ -2587,6 +2619,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (a_ != null) {
output.WriteRawTag(10);
@@ -2659,11 +2695,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "bb" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[8]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable; }
}
@@ -2723,6 +2759,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (bb_ != null) {
output.WriteRawTag(10);
@@ -2781,11 +2821,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "a", "optional_int32" };
private static readonly uint[] _fieldTags = new uint[] { 10, 16 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[9]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable; }
}
@@ -2858,6 +2898,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (a_ != null) {
output.WriteRawTag(10);
@@ -2930,11 +2974,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "EnumField", "MessageField", "PrimitiveField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedPrimitiveField", "RepeatedStringField", "StringField" };
private static readonly uint[] _fieldTags = new uint[] { 24, 34, 8, 74, 82, 58, 66, 18 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[10]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable; }
}
@@ -3080,6 +3124,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (PrimitiveField != 0) {
output.WriteRawTag(8);
@@ -3210,11 +3258,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "my_float", "my_int", "my_string", "single_nested_message" };
private static readonly uint[] _fieldTags = new uint[] { 813, 8, 90, 1602 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[11]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable; }
}
@@ -3313,6 +3361,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (MyInt != 0L) {
output.WriteRawTag(8);
@@ -3414,11 +3466,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "bb", "oo" };
private static readonly uint[] _fieldTags = new uint[] { 8, 16 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.TestFieldOrderings.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable; }
}
@@ -3490,6 +3542,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Bb != 0) {
output.WriteRawTag(8);
@@ -3561,11 +3617,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "sparse_enum" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[12]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable; }
}
@@ -3624,6 +3680,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.TEST_SPARSE_ENUM_UNSPECIFIED) {
output.WriteRawTag(8);
@@ -3676,11 +3736,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[13]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_OneString__FieldAccessorTable; }
}
@@ -3739,6 +3799,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data.Length != 0) {
output.WriteRawTag(10);
@@ -3791,11 +3855,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[14]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_MoreString__FieldAccessorTable; }
}
@@ -3853,6 +3917,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
data_.WriteTo(output, _repeated_data_codec);
}
@@ -3898,11 +3966,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[15]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_OneBytes__FieldAccessorTable; }
}
@@ -3961,6 +4029,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data.Length != 0) {
output.WriteRawTag(10);
@@ -4013,11 +4085,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[16]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable; }
}
@@ -4076,6 +4148,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data.Length != 0) {
output.WriteRawTag(10);
@@ -4128,11 +4204,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[17]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_Int32Message__FieldAccessorTable; }
}
@@ -4191,6 +4267,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data != 0) {
output.WriteRawTag(8);
@@ -4243,11 +4323,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[18]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable; }
}
@@ -4306,6 +4386,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data != 0) {
output.WriteRawTag(8);
@@ -4358,11 +4442,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[19]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_Int64Message__FieldAccessorTable; }
}
@@ -4421,6 +4505,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data != 0L) {
output.WriteRawTag(8);
@@ -4473,11 +4561,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[20]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable; }
}
@@ -4536,6 +4624,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data != 0UL) {
output.WriteRawTag(8);
@@ -4588,11 +4680,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "data" };
private static readonly uint[] _fieldTags = new uint[] { 8 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[21]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable; }
}
@@ -4651,6 +4743,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Data != false) {
output.WriteRawTag(8);
@@ -4703,11 +4799,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "foo_int", "foo_message", "foo_string" };
private static readonly uint[] _fieldTags = new uint[] { 8, 26, 18 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[22]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestOneof__FieldAccessorTable; }
}
@@ -4820,6 +4916,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (fooCase_ == FooOneofCase.FooInt) {
output.WriteRawTag(8);
@@ -4908,11 +5008,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "packed_bool", "packed_double", "packed_enum", "packed_fixed32", "packed_fixed64", "packed_float", "packed_int32", "packed_int64", "packed_sfixed32", "packed_sfixed64", "packed_sint32", "packed_sint64", "packed_uint32", "packed_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 818, 810, 826, 770, 778, 802, 722, 730, 786, 794, 754, 762, 738, 746 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[23]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable; }
}
@@ -5125,6 +5225,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
packedInt32_.WriteTo(output, _repeated_packedInt32_codec);
packedInt64_.WriteTo(output, _repeated_packedInt64_codec);
@@ -5275,11 +5379,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "unpacked_bool", "unpacked_double", "unpacked_enum", "unpacked_fixed32", "unpacked_fixed64", "unpacked_float", "unpacked_int32", "unpacked_int64", "unpacked_sfixed32", "unpacked_sfixed64", "unpacked_sint32", "unpacked_sint64", "unpacked_uint32", "unpacked_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 816, 809, 824, 773, 777, 805, 720, 728, 789, 793, 752, 760, 736, 744 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[24]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable; }
}
@@ -5492,6 +5596,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
unpackedInt32_.WriteTo(output, _repeated_unpackedInt32_codec);
unpackedInt64_.WriteTo(output, _repeated_unpackedInt64_codec);
@@ -5642,11 +5750,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "repeated_fixed32", "repeated_fixed64", "repeated_float", "repeated_int32", "repeated_int64", "repeated_uint64" };
private static readonly uint[] _fieldTags = new uint[] { 98, 16370, 2097138, 106, 16378, 2097146 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[25]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable; }
}
@@ -5764,6 +5872,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec);
repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec);
@@ -5850,11 +5962,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { "a" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[26]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable; }
}
@@ -5913,6 +6025,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (A.Length != 0) {
output.WriteRawTag(10);
@@ -5965,11 +6081,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[27]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_FooRequest__FieldAccessorTable; }
}
@@ -6015,6 +6131,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -6053,11 +6173,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[28]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_FooResponse__FieldAccessorTable; }
}
@@ -6103,6 +6223,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -6141,11 +6265,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[29]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable; }
}
@@ -6191,6 +6315,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -6229,11 +6357,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[30]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable; }
}
@@ -6279,6 +6407,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -6317,11 +6449,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[31]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_BarRequest__FieldAccessorTable; }
}
@@ -6367,6 +6499,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
@@ -6405,11 +6541,11 @@ namespace Google.Protobuf.TestProtos {
private static readonly string[] _fieldNames = new string[] { };
private static readonly uint[] _fieldTags = new uint[] { };
- public static pbd::MessageDescriptor Descriptor {
+ public static pbr::MessageDescriptor Descriptor {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.Descriptor.MessageTypes[32]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
get { return global::Google.Protobuf.TestProtos.UnittestProto3.internal__static_protobuf_unittest_BarResponse__FieldAccessorTable; }
}
@@ -6455,6 +6591,10 @@ namespace Google.Protobuf.TestProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
}
diff --git a/csharp/src/ProtocolBuffers/ByteString.cs b/csharp/src/ProtocolBuffers/ByteString.cs
index d5b7aee9..738f020e 100644
--- a/csharp/src/ProtocolBuffers/ByteString.cs
+++ b/csharp/src/ProtocolBuffers/ByteString.cs
@@ -134,6 +134,8 @@ namespace Google.Protobuf
/// Constructs a ByteString from the given array. The contents
/// are copied, so further modifications to the array will not
/// be reflected in the returned ByteString.
+ /// This method can also be invoked in <c>ByteString.CopyFrom(0xaa, 0xbb, ...)</c> form
+ /// which is primarily useful for testing.
/// </summary>
public static ByteString CopyFrom(params byte[] bytes)
{
diff --git a/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs b/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
index b6b52cb9..8375ae0b 100644
--- a/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
+++ b/csharp/src/ProtocolBuffers/Collections/RepeatedField.cs
@@ -44,9 +44,9 @@ namespace Google.Protobuf.Collections
public sealed class RepeatedField<T> : IList<T>, IList, IDeepCloneable<RepeatedField<T>>, IEquatable<RepeatedField<T>>, IFreezable
{
private static readonly T[] EmptyArray = new T[0];
+ private const int MinArraySize = 8;
private bool frozen;
- private const int MinArraySize = 8;
private T[] array = EmptyArray;
private int count = 0;
@@ -259,7 +259,6 @@ namespace Google.Protobuf.Collections
public int Count { get { return count; } }
- // TODO(jonskeet): If we implement freezing, make this reflect it.
public bool IsReadOnly { get { return IsFrozen; } }
public void Add(RepeatedField<T> values)
@@ -289,14 +288,12 @@ namespace Google.Protobuf.Collections
}
}
- public RepeatedField<T>.Enumerator GetEnumerator()
- {
- return new Enumerator(this);
- }
-
- IEnumerator<T> IEnumerable<T>.GetEnumerator()
+ public IEnumerator<T> GetEnumerator()
{
- return GetEnumerator();
+ for (int i = 0; i < count; i++)
+ {
+ yield return array[i];
+ }
}
public override bool Equals(object obj)
@@ -468,55 +465,6 @@ namespace Google.Protobuf.Collections
}
Remove((T)value);
}
- #endregion
-
- public struct Enumerator : IEnumerator<T>
- {
- private int index;
- private readonly RepeatedField<T> field;
-
- public Enumerator(RepeatedField<T> field)
- {
- this.field = field;
- this.index = -1;
- }
-
- public bool MoveNext()
- {
- if (index + 1 >= field.Count)
- {
- index = field.Count;
- return false;
- }
- index++;
- return true;
- }
-
- public void Reset()
- {
- index = -1;
- }
-
- public T Current
- {
- get
- {
- if (index == -1 || index >= field.count)
- {
- throw new InvalidOperationException();
- }
- return field.array[index];
- }
- }
-
- object IEnumerator.Current
- {
- get { return Current; }
- }
-
- public void Dispose()
- {
- }
- }
+ #endregion
}
}
diff --git a/csharp/src/ProtocolBuffers/FrameworkPortability.cs b/csharp/src/ProtocolBuffers/FrameworkPortability.cs
index f3da5333..082eb2e1 100644
--- a/csharp/src/ProtocolBuffers/FrameworkPortability.cs
+++ b/csharp/src/ProtocolBuffers/FrameworkPortability.cs
@@ -40,6 +40,7 @@ namespace Google.Protobuf
/// </summary>
internal static class FrameworkPortability
{
+ // TODO(jtattermusch): is this still a thing?
// The value of RegexOptions.Compiled is 8. We can test for the presence at
// execution time using Enum.IsDefined, so a single build will do the right thing
// on each platform.
diff --git a/csharp/src/ProtocolBuffers/Google.Protobuf.nuspec b/csharp/src/ProtocolBuffers/Google.Protobuf.nuspec
new file mode 100644
index 00000000..9b5e1c83
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/Google.Protobuf.nuspec
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<package>
+ <metadata>
+ <id>Google.Protobuf</id>
+ <title>Google Protocol Buffers C#</title>
+ <summary>C# runtime library for Protocol Buffers - Google's data interchange format.</summary>
+ <description>See project site for more info.</description>
+ <version>3.0.0-beta*</version>
+ <authors>Google Inc.</authors>
+ <owners>protobuf-packages</owners>
+ <licenseUrl>https://github.com/google/protobuf/blob/master/LICENSE</licenseUrl>
+ <projectUrl>https://github.com/google/protobuf</projectUrl>
+ <requireLicenseAcceptance>false</requireLicenseAcceptance>
+ <releaseNotes>Experimental version of C# Protocol Buffers</releaseNotes>
+ <copyright>Copyright 2015, Google Inc.</copyright>
+ <tags>Protocol Buffers Binary Serialization Format Google proto proto3</tags>
+ </metadata>
+ <files>
+ <file src="bin/Release/Google.Protobuf.dll" target="lib/portable-net45+win8+wp8+wpa81" />
+ <file src="bin/Release/Google.Protobuf.pdb" target="lib/portable-net45+win8+wp8+wpa81" />
+ <file src="bin/Release/Google.Protobuf.xml" target="lib/portable-net45+win8+wp8+wpa81" />
+ <file src="**\*.cs" target="src" />
+ </files>
+</package>
diff --git a/csharp/src/ProtocolBuffers/IMessage.cs b/csharp/src/ProtocolBuffers/IMessage.cs
index ad44668c..8c4a4aaf 100644
--- a/csharp/src/ProtocolBuffers/IMessage.cs
+++ b/csharp/src/ProtocolBuffers/IMessage.cs
@@ -31,7 +31,7 @@
#endregion
using System;
-using Google.Protobuf.FieldAccess;
+using Google.Protobuf.Reflection;
namespace Google.Protobuf
{
@@ -40,9 +40,9 @@ namespace Google.Protobuf
// TODO(jonskeet): Split these interfaces into separate files when we're happy with them.
/// <summary>
- /// Reflection support for a specific message type.
+ /// Reflection support for accessing field values.
/// </summary>
- public interface IReflectedMessage
+ public interface IReflectedMessage : IMessage
{
FieldAccessorTable Fields { get; }
// TODO(jonskeet): Descriptor? Or a single property which has "all you need for reflection"?
@@ -81,7 +81,7 @@ namespace Google.Protobuf
/// the implementation class.
/// </summary>
/// <typeparam name="T">The message type.</typeparam>
- public interface IMessage<T> : IMessage, IEquatable<T>, IDeepCloneable<T>, IFreezable where T : IMessage<T>
+ public interface IMessage<T> : IReflectedMessage, IEquatable<T>, IDeepCloneable<T>, IFreezable where T : IMessage<T>
{
/// <summary>
/// Merges the given message into this one.
diff --git a/csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs b/csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs
index 87b283f2..4f89347d 100644
--- a/csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs
+++ b/csharp/src/ProtocolBuffers/InvalidProtocolBufferException.cs
@@ -79,12 +79,6 @@ namespace Google.Protobuf
"Protocol message end-group tag did not match expected tag.");
}
- internal static InvalidProtocolBufferException InvalidWireType()
- {
- return new InvalidProtocolBufferException(
- "Protocol message tag had invalid wire type.");
- }
-
internal static InvalidProtocolBufferException RecursionLimitExceeded()
{
return new InvalidProtocolBufferException(
diff --git a/csharp/src/ProtocolBuffers/JsonFormatter.cs b/csharp/src/ProtocolBuffers/JsonFormatter.cs
new file mode 100644
index 00000000..dacc7221
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/JsonFormatter.cs
@@ -0,0 +1,578 @@
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2015 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections;
+using System.Globalization;
+using System.Text;
+using Google.Protobuf.Reflection;
+
+namespace Google.Protobuf
+{
+ /// <summary>
+ /// Reflection-based converter from messages to JSON.
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// Instances of this class are thread-safe, with no mutable state.
+ /// </para>
+ /// <para>
+ /// This is a simple start to get JSON formatting working. As it's reflection-based,
+ /// it's not as quick as baking calls into generated messages - but is a simpler implementation.
+ /// (This code is generally not heavily optimized.)
+ /// </para>
+ /// </remarks>
+ public sealed class JsonFormatter
+ {
+ private static JsonFormatter defaultInstance = new JsonFormatter(Settings.Default);
+
+ /// <summary>
+ /// Returns a formatter using the default settings.
+ /// </summary>
+ public static JsonFormatter Default { get { return defaultInstance; } }
+
+ /// <summary>
+ /// The JSON representation of the first 160 characters of Unicode.
+ /// Empty strings are replaced by the static constructor.
+ /// </summary>
+ private static readonly string[] CommonRepresentations = {
+ // C0 (ASCII and derivatives) control characters
+ "\\u0000", "\\u0001", "\\u0002", "\\u0003", // 0x00
+ "\\u0004", "\\u0005", "\\u0006", "\\u0007",
+ "\\b", "\\t", "\\n", "\\u000b",
+ "\\f", "\\r", "\\u000e", "\\u000f",
+ "\\u0010", "\\u0011", "\\u0012", "\\u0013", // 0x10
+ "\\u0014", "\\u0015", "\\u0016", "\\u0017",
+ "\\u0018", "\\u0019", "\\u001a", "\\u001b",
+ "\\u001c", "\\u001d", "\\u001e", "\\u001f",
+ // Escaping of " and \ are required by www.json.org string definition.
+ // Escaping of < and > are required for HTML security.
+ "", "", "\\\"", "", "", "", "", "", // 0x20
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", // 0x30
+ "", "", "", "", "\\u003c", "", "\\u003e", "",
+ "", "", "", "", "", "", "", "", // 0x40
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", // 0x50
+ "", "", "", "", "\\\\", "", "", "",
+ "", "", "", "", "", "", "", "", // 0x60
+ "", "", "", "", "", "", "", "",
+ "", "", "", "", "", "", "", "", // 0x70
+ "", "", "", "", "", "", "", "\\u007f",
+ // C1 (ISO 8859 and Unicode) extended control characters
+ "\\u0080", "\\u0081", "\\u0082", "\\u0083", // 0x80
+ "\\u0084", "\\u0085", "\\u0086", "\\u0087",
+ "\\u0088", "\\u0089", "\\u008a", "\\u008b",
+ "\\u008c", "\\u008d", "\\u008e", "\\u008f",
+ "\\u0090", "\\u0091", "\\u0092", "\\u0093", // 0x90
+ "\\u0094", "\\u0095", "\\u0096", "\\u0097",
+ "\\u0098", "\\u0099", "\\u009a", "\\u009b",
+ "\\u009c", "\\u009d", "\\u009e", "\\u009f"
+ };
+
+ static JsonFormatter()
+ {
+ for (int i = 0; i < CommonRepresentations.Length; i++)
+ {
+ if (CommonRepresentations[i] == "")
+ {
+ CommonRepresentations[i] = ((char) i).ToString();
+ }
+ }
+ }
+
+ private readonly Settings settings;
+
+ public JsonFormatter(Settings settings)
+ {
+ this.settings = settings;
+ }
+
+ public string Format(IReflectedMessage message)
+ {
+ ThrowHelper.ThrowIfNull(message, "message");
+ StringBuilder builder = new StringBuilder();
+ WriteMessage(builder, message);
+ return builder.ToString();
+ }
+
+ private void WriteMessage(StringBuilder builder, IReflectedMessage message)
+ {
+ if (message == null)
+ {
+ WriteNull(builder);
+ return;
+ }
+ builder.Append("{ ");
+ var fields = message.Fields;
+ bool first = true;
+ // First non-oneof fields
+ foreach (var accessor in fields.Accessors)
+ {
+ var descriptor = accessor.Descriptor;
+ // Oneofs are written later
+ // TODO: Change to write out fields in order, interleaving oneofs appropriately (as per binary format)
+ if (descriptor.ContainingOneof != null)
+ {
+ continue;
+ }
+ // Omit default values unless we're asked to format them
+ object value = accessor.GetValue(message);
+ if (!settings.FormatDefaultValues && IsDefaultValue(accessor, value))
+ {
+ continue;
+ }
+ // Omit awkward (single) values such as unknown enum values
+ if (!descriptor.IsRepeated && !descriptor.IsMap && !CanWriteSingleValue(accessor.Descriptor, value))
+ {
+ continue;
+ }
+
+ // Okay, all tests complete: let's write the field value...
+ if (!first)
+ {
+ builder.Append(", ");
+ }
+ WriteString(builder, ToCamelCase(accessor.Descriptor.Name));
+ builder.Append(": ");
+ WriteValue(builder, accessor, value);
+ first = false;
+ }
+
+ // Now oneofs
+ foreach (var accessor in fields.Oneofs)
+ {
+ var fieldDescriptor = accessor.GetCaseFieldDescriptor(message);
+ if (fieldDescriptor == null)
+ {
+ continue;
+ }
+ var fieldAccessor = fields[fieldDescriptor.FieldNumber];
+ object value = fieldAccessor.GetValue(message);
+ // Omit awkward (single) values such as unknown enum values
+ if (!fieldDescriptor.IsRepeated && !fieldDescriptor.IsMap && !CanWriteSingleValue(fieldDescriptor, value))
+ {
+ continue;
+ }
+
+ if (!first)
+ {
+ builder.Append(", ");
+ }
+ WriteString(builder, ToCamelCase(fieldDescriptor.Name));
+ builder.Append(": ");
+ WriteValue(builder, fieldAccessor, value);
+ first = false;
+ }
+ builder.Append(first ? "}" : " }");
+ }
+
+ // Converted from src/google/protobuf/util/internal/utility.cc ToCamelCase
+ internal static string ToCamelCase(string input)
+ {
+ bool capitalizeNext = false;
+ bool wasCap = true;
+ bool isCap = false;
+ bool firstWord = true;
+ StringBuilder result = new StringBuilder(input.Length);
+
+ for (int i = 0; i < input.Length; i++, wasCap = isCap)
+ {
+ isCap = char.IsUpper(input[i]);
+ if (input[i] == '_')
+ {
+ capitalizeNext = true;
+ if (result.Length != 0)
+ {
+ firstWord = false;
+ }
+ continue;
+ }
+ else if (firstWord)
+ {
+ // Consider when the current character B is capitalized,
+ // first word ends when:
+ // 1) following a lowercase: "...aB..."
+ // 2) followed by a lowercase: "...ABc..."
+ if (result.Length != 0 && isCap &&
+ (!wasCap || (i + 1 < input.Length && char.IsLower(input[i + 1]))))
+ {
+ firstWord = false;
+ }
+ else
+ {
+ result.Append(char.ToLowerInvariant(input[i]));
+ continue;
+ }
+ }
+ else if (capitalizeNext)
+ {
+ capitalizeNext = false;
+ if (char.IsLower(input[i]))
+ {
+ result.Append(char.ToUpperInvariant(input[i]));
+ continue;
+ }
+ }
+ result.Append(input[i]);
+ }
+ return result.ToString();
+ }
+
+ private static void WriteNull(StringBuilder builder)
+ {
+ builder.Append("null");
+ }
+
+ private static bool IsDefaultValue(IFieldAccessor accessor, object value)
+ {
+ if (accessor.Descriptor.IsMap)
+ {
+ IDictionary dictionary = (IDictionary) value;
+ return dictionary.Count == 0;
+ }
+ if (accessor.Descriptor.IsRepeated)
+ {
+ IList list = (IList) value;
+ return list.Count == 0;
+ }
+ switch (accessor.Descriptor.FieldType)
+ {
+ case FieldType.Bool:
+ return (bool) value == false;
+ case FieldType.Bytes:
+ return (ByteString) value == ByteString.Empty;
+ case FieldType.String:
+ return (string) value == "";
+ case FieldType.Double:
+ return (double) value == 0.0;
+ case FieldType.SInt32:
+ case FieldType.Int32:
+ case FieldType.SFixed32:
+ case FieldType.Enum:
+ return (int) value == 0;
+ case FieldType.Fixed32:
+ case FieldType.UInt32:
+ return (uint) value == 0;
+ case FieldType.Fixed64:
+ case FieldType.UInt64:
+ return (ulong) value == 0;
+ case FieldType.SFixed64:
+ case FieldType.Int64:
+ case FieldType.SInt64:
+ return (long) value == 0;
+ case FieldType.Float:
+ return (float) value == 0f;
+ case FieldType.Message:
+ case FieldType.Group: // Never expect to get this, but...
+ return value == null;
+ default:
+ throw new ArgumentException("Invalid field type");
+ }
+ }
+
+ private void WriteValue(StringBuilder builder, IFieldAccessor accessor, object value)
+ {
+ if (accessor.Descriptor.IsMap)
+ {
+ WriteDictionary(builder, accessor, (IDictionary) value);
+ }
+ else if (accessor.Descriptor.IsRepeated)
+ {
+ WriteList(builder, accessor, (IList) value);
+ }
+ else
+ {
+ WriteSingleValue(builder, accessor.Descriptor, value);
+ }
+ }
+
+ private void WriteSingleValue(StringBuilder builder, FieldDescriptor descriptor, object value)
+ {
+ switch (descriptor.FieldType)
+ {
+ case FieldType.Bool:
+ builder.Append((bool) value ? "true" : "false");
+ break;
+ case FieldType.Bytes:
+ // Nothing in Base64 needs escaping
+ builder.Append('"');
+ builder.Append(((ByteString) value).ToBase64());
+ builder.Append('"');
+ break;
+ case FieldType.String:
+ WriteString(builder, (string) value);
+ break;
+ case FieldType.Fixed32:
+ case FieldType.UInt32:
+ case FieldType.SInt32:
+ case FieldType.Int32:
+ case FieldType.SFixed32:
+ {
+ IFormattable formattable = (IFormattable) value;
+ builder.Append(formattable.ToString("d", CultureInfo.InvariantCulture));
+ break;
+ }
+ case FieldType.Enum:
+ EnumValueDescriptor enumValue = descriptor.EnumType.FindValueByNumber((int) value);
+ // We will already have validated that this is a known value.
+ WriteString(builder, enumValue.Name);
+ break;
+ case FieldType.Fixed64:
+ case FieldType.UInt64:
+ case FieldType.SFixed64:
+ case FieldType.Int64:
+ case FieldType.SInt64:
+ {
+ builder.Append('"');
+ IFormattable formattable = (IFormattable) value;
+ builder.Append(formattable.ToString("d", CultureInfo.InvariantCulture));
+ builder.Append('"');
+ break;
+ }
+ case FieldType.Double:
+ case FieldType.Float:
+ string text = ((IFormattable) value).ToString("r", CultureInfo.InvariantCulture);
+ if (text == "NaN" || text == "Infinity" || text == "-Infinity")
+ {
+ builder.Append('"');
+ builder.Append(text);
+ builder.Append('"');
+ }
+ else
+ {
+ builder.Append(text);
+ }
+ break;
+ case FieldType.Message:
+ case FieldType.Group: // Never expect to get this, but...
+ WriteMessage(builder, (IReflectedMessage) value);
+ break;
+ default:
+ throw new ArgumentException("Invalid field type: " + descriptor.FieldType);
+ }
+ }
+
+ private void WriteList(StringBuilder builder, IFieldAccessor accessor, IList list)
+ {
+ builder.Append("[ ");
+ bool first = true;
+ foreach (var value in list)
+ {
+ if (!CanWriteSingleValue(accessor.Descriptor, value))
+ {
+ continue;
+ }
+ if (!first)
+ {
+ builder.Append(", ");
+ }
+ WriteSingleValue(builder, accessor.Descriptor, value);
+ first = false;
+ }
+ builder.Append(first ? "]" : " ]");
+ }
+
+ private void WriteDictionary(StringBuilder builder, IFieldAccessor accessor, IDictionary dictionary)
+ {
+ builder.Append("{ ");
+ bool first = true;
+ FieldDescriptor keyType = accessor.Descriptor.MessageType.FindFieldByNumber(1);
+ FieldDescriptor valueType = accessor.Descriptor.MessageType.FindFieldByNumber(2);
+ // This will box each pair. Could use IDictionaryEnumerator, but that's ugly in terms of disposal.
+ foreach (DictionaryEntry pair in dictionary)
+ {
+ if (!CanWriteSingleValue(valueType, pair.Value))
+ {
+ continue;
+ }
+ if (!first)
+ {
+ builder.Append(", ");
+ }
+ string keyText;
+ switch (keyType.FieldType)
+ {
+ case FieldType.String:
+ keyText = (string) pair.Key;
+ break;
+ case FieldType.Bool:
+ keyText = (bool) pair.Key ? "true" : "false";
+ break;
+ case FieldType.Fixed32:
+ case FieldType.Fixed64:
+ case FieldType.SFixed32:
+ case FieldType.SFixed64:
+ case FieldType.Int32:
+ case FieldType.Int64:
+ case FieldType.SInt32:
+ case FieldType.SInt64:
+ case FieldType.UInt32:
+ case FieldType.UInt64:
+ keyText = ((IFormattable) pair.Key).ToString("d", CultureInfo.InvariantCulture);
+ break;
+ default:
+ throw new ArgumentException("Invalid key type: " + keyType.FieldType);
+ }
+ WriteString(builder, keyText);
+ builder.Append(": ");
+ WriteSingleValue(builder, valueType, pair.Value);
+ first = false;
+ }
+ builder.Append(first ? "}" : " }");
+ }
+
+ /// <summary>
+ /// Returns whether or not a singular value can be represented in JSON.
+ /// Currently only relevant for enums, where unknown values can't be represented.
+ /// For repeated/map fields, this always returns true.
+ /// </summary>
+ private bool CanWriteSingleValue(FieldDescriptor descriptor, object value)
+ {
+ if (descriptor.FieldType == FieldType.Enum)
+ {
+ EnumValueDescriptor enumValue = descriptor.EnumType.FindValueByNumber((int) value);
+ return enumValue != null;
+ }
+ return true;
+ }
+
+ /// <summary>
+ /// Writes a string (including leading and trailing double quotes) to a builder, escaping as required.
+ /// </summary>
+ /// <remarks>
+ /// Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc.
+ /// </remarks>
+ private void WriteString(StringBuilder builder, string text)
+ {
+ builder.Append('"');
+ for (int i = 0; i < text.Length; i++)
+ {
+ char c = text[i];
+ if (c < 0xa0)
+ {
+ builder.Append(CommonRepresentations[c]);
+ continue;
+ }
+ if (char.IsHighSurrogate(c))
+ {
+ // Encountered first part of a surrogate pair.
+ // Check that we have the whole pair, and encode both parts as hex.
+ i++;
+ if (i == text.Length || !char.IsLowSurrogate(text[i]))
+ {
+ throw new ArgumentException("String contains low surrogate not followed by high surrogate");
+ }
+ HexEncodeUtf16CodeUnit(builder, c);
+ HexEncodeUtf16CodeUnit(builder, text[i]);
+ continue;
+ }
+ else if (char.IsLowSurrogate(c))
+ {
+ throw new ArgumentException("String contains high surrogate not preceded by low surrogate");
+ }
+ switch ((uint) c)
+ {
+ // These are not required by json spec
+ // but used to prevent security bugs in javascript.
+ case 0xfeff: // Zero width no-break space
+ case 0xfff9: // Interlinear annotation anchor
+ case 0xfffa: // Interlinear annotation separator
+ case 0xfffb: // Interlinear annotation terminator
+
+ case 0x00ad: // Soft-hyphen
+ case 0x06dd: // Arabic end of ayah
+ case 0x070f: // Syriac abbreviation mark
+ case 0x17b4: // Khmer vowel inherent Aq
+ case 0x17b5: // Khmer vowel inherent Aa
+ HexEncodeUtf16CodeUnit(builder, c);
+ break;
+
+ default:
+ if ((c >= 0x0600 && c <= 0x0603) || // Arabic signs
+ (c >= 0x200b && c <= 0x200f) || // Zero width etc.
+ (c >= 0x2028 && c <= 0x202e) || // Separators etc.
+ (c >= 0x2060 && c <= 0x2064) || // Invisible etc.
+ (c >= 0x206a && c <= 0x206f))
+ {
+ HexEncodeUtf16CodeUnit(builder, c);
+ }
+ else
+ {
+ // No handling of surrogates here - that's done earlier
+ builder.Append(c);
+ }
+ break;
+ }
+ }
+ builder.Append('"');
+ }
+
+ private const string Hex = "0123456789abcdef";
+ private static void HexEncodeUtf16CodeUnit(StringBuilder builder, char c)
+ {
+ uint utf16 = c;
+ builder.Append("\\u");
+ builder.Append(Hex[(c >> 12) & 0xf]);
+ builder.Append(Hex[(c >> 8) & 0xf]);
+ builder.Append(Hex[(c >> 4) & 0xf]);
+ builder.Append(Hex[(c >> 0) & 0xf]);
+ }
+
+ /// <summary>
+ /// Settings controlling JSON formatting.
+ /// </summary>
+ public sealed class Settings
+ {
+ private static readonly Settings defaultInstance = new Settings(false);
+
+ /// <summary>
+ /// Default settings, as used by <see cref="JsonFormatter.Default"/>
+ /// </summary>
+ public static Settings Default { get { return defaultInstance; } }
+
+ private readonly bool formatDefaultValues;
+
+
+ /// <summary>
+ /// Whether fields whose values are the default for the field type (e.g. 0 for integers)
+ /// should be formatted (true) or omitted (false).
+ /// </summary>
+ public bool FormatDefaultValues { get { return formatDefaultValues; } }
+
+ public Settings(bool formatDefaultValues)
+ {
+ this.formatDefaultValues = formatDefaultValues;
+ }
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj b/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj
index aa4adcc0..402d6612 100644
--- a/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj
+++ b/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj
@@ -60,43 +60,57 @@
<Compile Include="Collections\MapField.cs" />
<Compile Include="Collections\ReadOnlyDictionary.cs" />
<Compile Include="Collections\RepeatedField.cs" />
- <Compile Include="DescriptorProtos\DescriptorProtoFile.cs" />
- <Compile Include="DescriptorProtos\PartialClasses.cs" />
- <Compile Include="Descriptors\DescriptorBase.cs" />
- <Compile Include="Descriptors\DescriptorPool.cs" />
- <Compile Include="Descriptors\DescriptorUtil.cs" />
- <Compile Include="Descriptors\DescriptorValidationException.cs" />
- <Compile Include="Descriptors\EnumDescriptor.cs" />
- <Compile Include="Descriptors\EnumValueDescriptor.cs" />
- <Compile Include="Descriptors\FieldDescriptor.cs" />
- <Compile Include="Descriptors\FieldType.cs" />
- <Compile Include="Descriptors\FileDescriptor.cs" />
- <Compile Include="Descriptors\OneofDescriptor.cs" />
- <Compile Include="Descriptors\IDescriptor.cs" />
- <Compile Include="Descriptors\MessageDescriptor.cs" />
- <Compile Include="Descriptors\MethodDescriptor.cs" />
- <Compile Include="Descriptors\PackageDescriptor.cs" />
- <Compile Include="Descriptors\ServiceDescriptor.cs" />
- <Compile Include="FieldAccess\MapFieldAccessor.cs" />
<Compile Include="FieldCodec.cs" />
<Compile Include="FrameworkPortability.cs" />
<Compile Include="Freezable.cs" />
+ <Compile Include="JsonFormatter.cs" />
<Compile Include="MessageExtensions.cs" />
- <Compile Include="FieldAccess\FieldAccessorBase.cs" />
- <Compile Include="FieldAccess\ReflectionUtil.cs" />
- <Compile Include="FieldAccess\RepeatedFieldAccessor.cs" />
- <Compile Include="FieldAccess\SingleFieldAccessor.cs" />
- <Compile Include="FieldAccess\IFieldAccessor.cs" />
- <Compile Include="FieldAccess\FieldAccessorTable.cs" />
- <Compile Include="FieldAccess\OneofAccessor.cs" />
<Compile Include="IMessage.cs" />
<Compile Include="InvalidProtocolBufferException.cs" />
<Compile Include="LimitedInputStream.cs" />
<Compile Include="MessageParser.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="Reflection\DescriptorBase.cs" />
+ <Compile Include="Reflection\DescriptorPool.cs" />
+ <Compile Include="Reflection\DescriptorProtoFile.cs" />
+ <Compile Include="Reflection\DescriptorUtil.cs" />
+ <Compile Include="Reflection\DescriptorValidationException.cs" />
+ <Compile Include="Reflection\EnumDescriptor.cs" />
+ <Compile Include="Reflection\EnumValueDescriptor.cs" />
+ <Compile Include="Reflection\FieldAccessorBase.cs" />
+ <Compile Include="Reflection\FieldAccessorTable.cs" />
+ <Compile Include="Reflection\FieldDescriptor.cs" />
+ <Compile Include="Reflection\FieldType.cs" />
+ <Compile Include="Reflection\FileDescriptor.cs" />
+ <Compile Include="Reflection\IDescriptor.cs" />
+ <Compile Include="Reflection\IFieldAccessor.cs" />
+ <Compile Include="Reflection\MapFieldAccessor.cs" />
+ <Compile Include="Reflection\MessageDescriptor.cs" />
+ <Compile Include="Reflection\MethodDescriptor.cs" />
+ <Compile Include="Reflection\OneofAccessor.cs" />
+ <Compile Include="Reflection\OneofDescriptor.cs" />
+ <Compile Include="Reflection\PackageDescriptor.cs" />
+ <Compile Include="Reflection\PartialClasses.cs" />
+ <Compile Include="Reflection\ReflectionUtil.cs" />
+ <Compile Include="Reflection\RepeatedFieldAccessor.cs" />
+ <Compile Include="Reflection\ServiceDescriptor.cs" />
+ <Compile Include="Reflection\SingleFieldAccessor.cs" />
<Compile Include="ThrowHelper.cs" />
+ <Compile Include="WellKnownTypes\Any.cs" />
+ <Compile Include="WellKnownTypes\Api.cs" />
+ <Compile Include="WellKnownTypes\Duration.cs" />
+ <Compile Include="WellKnownTypes\Empty.cs" />
+ <Compile Include="WellKnownTypes\FieldMask.cs" />
+ <Compile Include="WellKnownTypes\SourceContext.cs" />
+ <Compile Include="WellKnownTypes\Struct.cs" />
+ <Compile Include="WellKnownTypes\Timestamp.cs" />
+ <Compile Include="WellKnownTypes\Type.cs" />
+ <Compile Include="WellKnownTypes\Wrappers.cs" />
<Compile Include="WireFormat.cs" />
</ItemGroup>
+ <ItemGroup>
+ <None Include="Google.Protobuf.nuspec" />
+ </ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
diff --git a/csharp/src/ProtocolBuffers/Descriptors/DescriptorBase.cs b/csharp/src/ProtocolBuffers/Reflection/DescriptorBase.cs
index 0eb71215..0300cd58 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/DescriptorBase.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/DescriptorBase.cs
@@ -1,84 +1,82 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Base class for nearly all descriptors, providing common functionality.
- /// </summary>
- public abstract class DescriptorBase : IDescriptor
- {
- private readonly FileDescriptor file;
- private readonly string fullName;
- private readonly int index;
-
- internal DescriptorBase(FileDescriptor file, string fullName, int index)
- {
- this.file = file;
- this.fullName = fullName;
- this.index = index;
- }
-
- /// <value>
- /// The index of this descriptor within its parent descriptor.
- /// </value>
- /// <remarks>
- /// This returns the index of this descriptor within its parent, for
- /// this descriptor's type. (There can be duplicate values for different
- /// types, e.g. one enum type with index 0 and one message type with index 0.)
- /// </remarks>
- public int Index
- {
- get { return index; }
- }
-
- public abstract string Name { get; }
-
- /// <summary>
- /// The fully qualified name of the descriptor's target.
- /// </summary>
- public string FullName
- {
- get { return fullName; }
- }
-
- /// <value>
- /// The file this descriptor was declared in.
- /// </value>
- public FileDescriptor File
- {
- get { return file; }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Base class for nearly all descriptors, providing common functionality.
+ /// </summary>
+ public abstract class DescriptorBase : IDescriptor
+ {
+ private readonly FileDescriptor file;
+ private readonly string fullName;
+ private readonly int index;
+
+ internal DescriptorBase(FileDescriptor file, string fullName, int index)
+ {
+ this.file = file;
+ this.fullName = fullName;
+ this.index = index;
+ }
+
+ /// <value>
+ /// The index of this descriptor within its parent descriptor.
+ /// </value>
+ /// <remarks>
+ /// This returns the index of this descriptor within its parent, for
+ /// this descriptor's type. (There can be duplicate values for different
+ /// types, e.g. one enum type with index 0 and one message type with index 0.)
+ /// </remarks>
+ public int Index
+ {
+ get { return index; }
+ }
+
+ public abstract string Name { get; }
+
+ /// <summary>
+ /// The fully qualified name of the descriptor's target.
+ /// </summary>
+ public string FullName
+ {
+ get { return fullName; }
+ }
+
+ /// <value>
+ /// The file this descriptor was declared in.
+ /// </value>
+ public FileDescriptor File
+ {
+ get { return file; }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/DescriptorPool.cs b/csharp/src/ProtocolBuffers/Reflection/DescriptorPool.cs
index b07af060..157ea400 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/DescriptorPool.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/DescriptorPool.cs
@@ -1,365 +1,365 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using System.Text.RegularExpressions;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Contains lookup tables containing all the descriptors defined in a particular file.
- /// </summary>
- internal sealed class DescriptorPool
- {
- private readonly IDictionary<string, IDescriptor> descriptorsByName =
- new Dictionary<string, IDescriptor>();
-
- private readonly IDictionary<DescriptorIntPair, FieldDescriptor> fieldsByNumber =
- new Dictionary<DescriptorIntPair, FieldDescriptor>();
-
- private readonly IDictionary<DescriptorIntPair, EnumValueDescriptor> enumValuesByNumber =
- new Dictionary<DescriptorIntPair, EnumValueDescriptor>();
-
- private readonly HashSet<FileDescriptor> dependencies;
-
- internal DescriptorPool(FileDescriptor[] dependencyFiles)
- {
- dependencies = new HashSet<FileDescriptor>();
- for (int i = 0; i < dependencyFiles.Length; i++)
- {
- dependencies.Add(dependencyFiles[i]);
- ImportPublicDependencies(dependencyFiles[i]);
- }
-
- foreach (FileDescriptor dependency in dependencyFiles)
- {
- AddPackage(dependency.Package, dependency);
- }
- }
-
- private void ImportPublicDependencies(FileDescriptor file)
- {
- foreach (FileDescriptor dependency in file.PublicDependencies)
- {
- if (dependencies.Add(dependency))
- {
- ImportPublicDependencies(dependency);
- }
- }
- }
-
- /// <summary>
- /// Finds a symbol of the given name within the pool.
- /// </summary>
- /// <typeparam name="T">The type of symbol to look for</typeparam>
- /// <param name="fullName">Fully-qualified name to look up</param>
- /// <returns>The symbol with the given name and type,
- /// or null if the symbol doesn't exist or has the wrong type</returns>
- internal T FindSymbol<T>(string fullName) where T : class
- {
- IDescriptor result;
- descriptorsByName.TryGetValue(fullName, out result);
- T descriptor = result as T;
- if (descriptor != null)
- {
- return descriptor;
- }
-
- foreach (FileDescriptor dependency in dependencies)
- {
- dependency.DescriptorPool.descriptorsByName.TryGetValue(fullName, out result);
- descriptor = result as T;
- if (descriptor != null)
- {
- return descriptor;
- }
- }
-
- return null;
- }
-
- /// <summary>
- /// Adds a package to the symbol tables. If a package by the same name
- /// already exists, that is fine, but if some other kind of symbol
- /// exists under the same name, an exception is thrown. If the package
- /// has multiple components, this also adds the parent package(s).
- /// </summary>
- internal void AddPackage(string fullName, FileDescriptor file)
- {
- int dotpos = fullName.LastIndexOf('.');
- String name;
- if (dotpos != -1)
- {
- AddPackage(fullName.Substring(0, dotpos), file);
- name = fullName.Substring(dotpos + 1);
- }
- else
- {
- name = fullName;
- }
-
- IDescriptor old;
- if (descriptorsByName.TryGetValue(fullName, out old))
- {
- if (!(old is PackageDescriptor))
- {
- throw new DescriptorValidationException(file,
- "\"" + name +
- "\" is already defined (as something other than a " +
- "package) in file \"" + old.File.Name + "\".");
- }
- }
- descriptorsByName[fullName] = new PackageDescriptor(name, fullName, file);
- }
-
- /// <summary>
- /// Adds a symbol to the symbol table.
- /// </summary>
- /// <exception cref="DescriptorValidationException">The symbol already existed
- /// in the symbol table.</exception>
- internal void AddSymbol(IDescriptor descriptor)
- {
- ValidateSymbolName(descriptor);
- String fullName = descriptor.FullName;
-
- IDescriptor old;
- if (descriptorsByName.TryGetValue(fullName, out old))
- {
- int dotPos = fullName.LastIndexOf('.');
- string message;
- if (descriptor.File == old.File)
- {
- if (dotPos == -1)
- {
- message = "\"" + fullName + "\" is already defined.";
- }
- else
- {
- message = "\"" + fullName.Substring(dotPos + 1) + "\" is already defined in \"" +
- fullName.Substring(0, dotPos) + "\".";
- }
- }
- else
- {
- message = "\"" + fullName + "\" is already defined in file \"" + old.File.Name + "\".";
- }
- throw new DescriptorValidationException(descriptor, message);
- }
- descriptorsByName[fullName] = descriptor;
- }
-
- private static readonly Regex ValidationRegex = new Regex("^[_A-Za-z][_A-Za-z0-9]*$",
- FrameworkPortability.CompiledRegexWhereAvailable);
-
- /// <summary>
- /// Verifies that the descriptor's name is valid (i.e. it contains
- /// only letters, digits and underscores, and does not start with a digit).
- /// </summary>
- /// <param name="descriptor"></param>
- private static void ValidateSymbolName(IDescriptor descriptor)
- {
- if (descriptor.Name == "")
- {
- throw new DescriptorValidationException(descriptor, "Missing name.");
- }
- if (!ValidationRegex.IsMatch(descriptor.Name))
- {
- throw new DescriptorValidationException(descriptor,
- "\"" + descriptor.Name + "\" is not a valid identifier.");
- }
- }
-
- /// <summary>
- /// Returns the field with the given number in the given descriptor,
- /// or null if it can't be found.
- /// </summary>
- internal FieldDescriptor FindFieldByNumber(MessageDescriptor messageDescriptor, int number)
- {
- FieldDescriptor ret;
- fieldsByNumber.TryGetValue(new DescriptorIntPair(messageDescriptor, number), out ret);
- return ret;
- }
-
- internal EnumValueDescriptor FindEnumValueByNumber(EnumDescriptor enumDescriptor, int number)
- {
- EnumValueDescriptor ret;
- enumValuesByNumber.TryGetValue(new DescriptorIntPair(enumDescriptor, number), out ret);
- return ret;
- }
-
- /// <summary>
- /// Adds a field to the fieldsByNumber table.
- /// </summary>
- /// <exception cref="DescriptorValidationException">A field with the same
- /// containing type and number already exists.</exception>
- internal void AddFieldByNumber(FieldDescriptor field)
- {
- DescriptorIntPair key = new DescriptorIntPair(field.ContainingType, field.FieldNumber);
- FieldDescriptor old;
- if (fieldsByNumber.TryGetValue(key, out old))
- {
- throw new DescriptorValidationException(field, "Field number " + field.FieldNumber +
- "has already been used in \"" +
- field.ContainingType.FullName +
- "\" by field \"" + old.Name + "\".");
- }
- fieldsByNumber[key] = field;
- }
-
- /// <summary>
- /// Adds an enum value to the enumValuesByNumber table. If an enum value
- /// with the same type and number already exists, this method does nothing.
- /// (This is allowed; the first value defined with the number takes precedence.)
- /// </summary>
- internal void AddEnumValueByNumber(EnumValueDescriptor enumValue)
- {
- DescriptorIntPair key = new DescriptorIntPair(enumValue.EnumDescriptor, enumValue.Number);
- if (!enumValuesByNumber.ContainsKey(key))
- {
- enumValuesByNumber[key] = enumValue;
- }
- }
-
- /// <summary>
- /// Looks up a descriptor by name, relative to some other descriptor.
- /// The name may be fully-qualified (with a leading '.'), partially-qualified,
- /// or unqualified. C++-like name lookup semantics are used to search for the
- /// matching descriptor.
- /// </summary>
- internal IDescriptor LookupSymbol(string name, IDescriptor relativeTo)
- {
- // TODO(jonskeet): This could be optimized in a number of ways.
-
- IDescriptor result;
- if (name.StartsWith("."))
- {
- // Fully-qualified name.
- result = FindSymbol<IDescriptor>(name.Substring(1));
- }
- else
- {
- // If "name" is a compound identifier, we want to search for the
- // first component of it, then search within it for the rest.
- int firstPartLength = name.IndexOf('.');
- string firstPart = firstPartLength == -1 ? name : name.Substring(0, firstPartLength);
-
- // We will search each parent scope of "relativeTo" looking for the
- // symbol.
- StringBuilder scopeToTry = new StringBuilder(relativeTo.FullName);
-
- while (true)
- {
- // Chop off the last component of the scope.
-
- // TODO(jonskeet): Make this more efficient. May not be worth using StringBuilder at all
- int dotpos = scopeToTry.ToString().LastIndexOf(".");
- if (dotpos == -1)
- {
- result = FindSymbol<IDescriptor>(name);
- break;
- }
- else
- {
- scopeToTry.Length = dotpos + 1;
-
- // Append firstPart and try to find.
- scopeToTry.Append(firstPart);
- result = FindSymbol<IDescriptor>(scopeToTry.ToString());
-
- if (result != null)
- {
- if (firstPartLength != -1)
- {
- // We only found the first part of the symbol. Now look for
- // the whole thing. If this fails, we *don't* want to keep
- // searching parent scopes.
- scopeToTry.Length = dotpos + 1;
- scopeToTry.Append(name);
- result = FindSymbol<IDescriptor>(scopeToTry.ToString());
- }
- break;
- }
-
- // Not found. Remove the name so we can try again.
- scopeToTry.Length = dotpos;
- }
- }
- }
-
- if (result == null)
- {
- throw new DescriptorValidationException(relativeTo, "\"" + name + "\" is not defined.");
- }
- else
- {
- return result;
- }
- }
-
- /// <summary>
- /// Struct used to hold the keys for the fieldByNumber table.
- /// </summary>
- private struct DescriptorIntPair : IEquatable<DescriptorIntPair>
- {
- private readonly int number;
- private readonly IDescriptor descriptor;
-
- internal DescriptorIntPair(IDescriptor descriptor, int number)
- {
- this.number = number;
- this.descriptor = descriptor;
- }
-
- public bool Equals(DescriptorIntPair other)
- {
- return descriptor == other.descriptor
- && number == other.number;
- }
-
- public override bool Equals(object obj)
- {
- if (obj is DescriptorIntPair)
- {
- return Equals((DescriptorIntPair) obj);
- }
- return false;
- }
-
- public override int GetHashCode()
- {
- return descriptor.GetHashCode()*((1 << 16) - 1) + number;
- }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Text.RegularExpressions;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Contains lookup tables containing all the descriptors defined in a particular file.
+ /// </summary>
+ internal sealed class DescriptorPool
+ {
+ private readonly IDictionary<string, IDescriptor> descriptorsByName =
+ new Dictionary<string, IDescriptor>();
+
+ private readonly IDictionary<DescriptorIntPair, FieldDescriptor> fieldsByNumber =
+ new Dictionary<DescriptorIntPair, FieldDescriptor>();
+
+ private readonly IDictionary<DescriptorIntPair, EnumValueDescriptor> enumValuesByNumber =
+ new Dictionary<DescriptorIntPair, EnumValueDescriptor>();
+
+ private readonly HashSet<FileDescriptor> dependencies;
+
+ internal DescriptorPool(FileDescriptor[] dependencyFiles)
+ {
+ dependencies = new HashSet<FileDescriptor>();
+ for (int i = 0; i < dependencyFiles.Length; i++)
+ {
+ dependencies.Add(dependencyFiles[i]);
+ ImportPublicDependencies(dependencyFiles[i]);
+ }
+
+ foreach (FileDescriptor dependency in dependencyFiles)
+ {
+ AddPackage(dependency.Package, dependency);
+ }
+ }
+
+ private void ImportPublicDependencies(FileDescriptor file)
+ {
+ foreach (FileDescriptor dependency in file.PublicDependencies)
+ {
+ if (dependencies.Add(dependency))
+ {
+ ImportPublicDependencies(dependency);
+ }
+ }
+ }
+
+ /// <summary>
+ /// Finds a symbol of the given name within the pool.
+ /// </summary>
+ /// <typeparam name="T">The type of symbol to look for</typeparam>
+ /// <param name="fullName">Fully-qualified name to look up</param>
+ /// <returns>The symbol with the given name and type,
+ /// or null if the symbol doesn't exist or has the wrong type</returns>
+ internal T FindSymbol<T>(string fullName) where T : class
+ {
+ IDescriptor result;
+ descriptorsByName.TryGetValue(fullName, out result);
+ T descriptor = result as T;
+ if (descriptor != null)
+ {
+ return descriptor;
+ }
+
+ foreach (FileDescriptor dependency in dependencies)
+ {
+ dependency.DescriptorPool.descriptorsByName.TryGetValue(fullName, out result);
+ descriptor = result as T;
+ if (descriptor != null)
+ {
+ return descriptor;
+ }
+ }
+
+ return null;
+ }
+
+ /// <summary>
+ /// Adds a package to the symbol tables. If a package by the same name
+ /// already exists, that is fine, but if some other kind of symbol
+ /// exists under the same name, an exception is thrown. If the package
+ /// has multiple components, this also adds the parent package(s).
+ /// </summary>
+ internal void AddPackage(string fullName, FileDescriptor file)
+ {
+ int dotpos = fullName.LastIndexOf('.');
+ String name;
+ if (dotpos != -1)
+ {
+ AddPackage(fullName.Substring(0, dotpos), file);
+ name = fullName.Substring(dotpos + 1);
+ }
+ else
+ {
+ name = fullName;
+ }
+
+ IDescriptor old;
+ if (descriptorsByName.TryGetValue(fullName, out old))
+ {
+ if (!(old is PackageDescriptor))
+ {
+ throw new DescriptorValidationException(file,
+ "\"" + name +
+ "\" is already defined (as something other than a " +
+ "package) in file \"" + old.File.Name + "\".");
+ }
+ }
+ descriptorsByName[fullName] = new PackageDescriptor(name, fullName, file);
+ }
+
+ /// <summary>
+ /// Adds a symbol to the symbol table.
+ /// </summary>
+ /// <exception cref="DescriptorValidationException">The symbol already existed
+ /// in the symbol table.</exception>
+ internal void AddSymbol(IDescriptor descriptor)
+ {
+ ValidateSymbolName(descriptor);
+ String fullName = descriptor.FullName;
+
+ IDescriptor old;
+ if (descriptorsByName.TryGetValue(fullName, out old))
+ {
+ int dotPos = fullName.LastIndexOf('.');
+ string message;
+ if (descriptor.File == old.File)
+ {
+ if (dotPos == -1)
+ {
+ message = "\"" + fullName + "\" is already defined.";
+ }
+ else
+ {
+ message = "\"" + fullName.Substring(dotPos + 1) + "\" is already defined in \"" +
+ fullName.Substring(0, dotPos) + "\".";
+ }
+ }
+ else
+ {
+ message = "\"" + fullName + "\" is already defined in file \"" + old.File.Name + "\".";
+ }
+ throw new DescriptorValidationException(descriptor, message);
+ }
+ descriptorsByName[fullName] = descriptor;
+ }
+
+ private static readonly Regex ValidationRegex = new Regex("^[_A-Za-z][_A-Za-z0-9]*$",
+ FrameworkPortability.CompiledRegexWhereAvailable);
+
+ /// <summary>
+ /// Verifies that the descriptor's name is valid (i.e. it contains
+ /// only letters, digits and underscores, and does not start with a digit).
+ /// </summary>
+ /// <param name="descriptor"></param>
+ private static void ValidateSymbolName(IDescriptor descriptor)
+ {
+ if (descriptor.Name == "")
+ {
+ throw new DescriptorValidationException(descriptor, "Missing name.");
+ }
+ if (!ValidationRegex.IsMatch(descriptor.Name))
+ {
+ throw new DescriptorValidationException(descriptor,
+ "\"" + descriptor.Name + "\" is not a valid identifier.");
+ }
+ }
+
+ /// <summary>
+ /// Returns the field with the given number in the given descriptor,
+ /// or null if it can't be found.
+ /// </summary>
+ internal FieldDescriptor FindFieldByNumber(MessageDescriptor messageDescriptor, int number)
+ {
+ FieldDescriptor ret;
+ fieldsByNumber.TryGetValue(new DescriptorIntPair(messageDescriptor, number), out ret);
+ return ret;
+ }
+
+ internal EnumValueDescriptor FindEnumValueByNumber(EnumDescriptor enumDescriptor, int number)
+ {
+ EnumValueDescriptor ret;
+ enumValuesByNumber.TryGetValue(new DescriptorIntPair(enumDescriptor, number), out ret);
+ return ret;
+ }
+
+ /// <summary>
+ /// Adds a field to the fieldsByNumber table.
+ /// </summary>
+ /// <exception cref="DescriptorValidationException">A field with the same
+ /// containing type and number already exists.</exception>
+ internal void AddFieldByNumber(FieldDescriptor field)
+ {
+ DescriptorIntPair key = new DescriptorIntPair(field.ContainingType, field.FieldNumber);
+ FieldDescriptor old;
+ if (fieldsByNumber.TryGetValue(key, out old))
+ {
+ throw new DescriptorValidationException(field, "Field number " + field.FieldNumber +
+ "has already been used in \"" +
+ field.ContainingType.FullName +
+ "\" by field \"" + old.Name + "\".");
+ }
+ fieldsByNumber[key] = field;
+ }
+
+ /// <summary>
+ /// Adds an enum value to the enumValuesByNumber table. If an enum value
+ /// with the same type and number already exists, this method does nothing.
+ /// (This is allowed; the first value defined with the number takes precedence.)
+ /// </summary>
+ internal void AddEnumValueByNumber(EnumValueDescriptor enumValue)
+ {
+ DescriptorIntPair key = new DescriptorIntPair(enumValue.EnumDescriptor, enumValue.Number);
+ if (!enumValuesByNumber.ContainsKey(key))
+ {
+ enumValuesByNumber[key] = enumValue;
+ }
+ }
+
+ /// <summary>
+ /// Looks up a descriptor by name, relative to some other descriptor.
+ /// The name may be fully-qualified (with a leading '.'), partially-qualified,
+ /// or unqualified. C++-like name lookup semantics are used to search for the
+ /// matching descriptor.
+ /// </summary>
+ internal IDescriptor LookupSymbol(string name, IDescriptor relativeTo)
+ {
+ // TODO(jonskeet): This could be optimized in a number of ways.
+
+ IDescriptor result;
+ if (name.StartsWith("."))
+ {
+ // Fully-qualified name.
+ result = FindSymbol<IDescriptor>(name.Substring(1));
+ }
+ else
+ {
+ // If "name" is a compound identifier, we want to search for the
+ // first component of it, then search within it for the rest.
+ int firstPartLength = name.IndexOf('.');
+ string firstPart = firstPartLength == -1 ? name : name.Substring(0, firstPartLength);
+
+ // We will search each parent scope of "relativeTo" looking for the
+ // symbol.
+ StringBuilder scopeToTry = new StringBuilder(relativeTo.FullName);
+
+ while (true)
+ {
+ // Chop off the last component of the scope.
+
+ // TODO(jonskeet): Make this more efficient. May not be worth using StringBuilder at all
+ int dotpos = scopeToTry.ToString().LastIndexOf(".");
+ if (dotpos == -1)
+ {
+ result = FindSymbol<IDescriptor>(name);
+ break;
+ }
+ else
+ {
+ scopeToTry.Length = dotpos + 1;
+
+ // Append firstPart and try to find.
+ scopeToTry.Append(firstPart);
+ result = FindSymbol<IDescriptor>(scopeToTry.ToString());
+
+ if (result != null)
+ {
+ if (firstPartLength != -1)
+ {
+ // We only found the first part of the symbol. Now look for
+ // the whole thing. If this fails, we *don't* want to keep
+ // searching parent scopes.
+ scopeToTry.Length = dotpos + 1;
+ scopeToTry.Append(name);
+ result = FindSymbol<IDescriptor>(scopeToTry.ToString());
+ }
+ break;
+ }
+
+ // Not found. Remove the name so we can try again.
+ scopeToTry.Length = dotpos;
+ }
+ }
+ }
+
+ if (result == null)
+ {
+ throw new DescriptorValidationException(relativeTo, "\"" + name + "\" is not defined.");
+ }
+ else
+ {
+ return result;
+ }
+ }
+
+ /// <summary>
+ /// Struct used to hold the keys for the fieldByNumber table.
+ /// </summary>
+ private struct DescriptorIntPair : IEquatable<DescriptorIntPair>
+ {
+ private readonly int number;
+ private readonly IDescriptor descriptor;
+
+ internal DescriptorIntPair(IDescriptor descriptor, int number)
+ {
+ this.number = number;
+ this.descriptor = descriptor;
+ }
+
+ public bool Equals(DescriptorIntPair other)
+ {
+ return descriptor == other.descriptor
+ && number == other.number;
+ }
+
+ public override bool Equals(object obj)
+ {
+ if (obj is DescriptorIntPair)
+ {
+ return Equals((DescriptorIntPair) obj);
+ }
+ return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return descriptor.GetHashCode()*((1 << 16) - 1) + number;
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs b/csharp/src/ProtocolBuffers/Reflection/DescriptorProtoFile.cs
index c87b367a..c87969b9 100644
--- a/csharp/src/ProtocolBuffers/DescriptorProtos/DescriptorProtoFile.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/DescriptorProtoFile.cs
@@ -5,42 +5,42 @@
using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
-using pbd = global::Google.Protobuf.Descriptors;
+using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
-namespace Google.Protobuf.DescriptorProtos {
+namespace Google.Protobuf.Reflection {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
internal static partial class DescriptorProtoFile {
#region Static variables
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ReservedRange__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_OneofDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FileOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MessageOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_FieldOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_ServiceOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_MethodOptions__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_SourceCodeInfo__FieldAccessorTable;
- internal static pb::FieldAccess.FieldAccessorTable internal__static_google_protobuf_SourceCodeInfo_Location__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_DescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_DescriptorProto_ReservedRange__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_OneofDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FileOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_MessageOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FieldOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_EnumOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_ServiceOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_MethodOptions__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_SourceCodeInfo__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_SourceCodeInfo_Location__FieldAccessorTable;
#endregion
#region Descriptor
- public static pbd::FileDescriptor Descriptor {
+ public static pbr::FileDescriptor Descriptor {
get { return descriptor; }
}
- private static pbd::FileDescriptor descriptor;
+ private static pbr::FileDescriptor descriptor;
static DescriptorProtoFile() {
byte[] descriptorData = global::System.Convert.FromBase64String(
@@ -153,78 +153,78 @@ namespace Google.Protobuf.DescriptorProtos {
"LkxvY2F0aW9uGoYBCghMb2NhdGlvbhIQCgRwYXRoGAEgAygFQgIQARIQCgRz",
"cGFuGAIgAygFQgIQARIYChBsZWFkaW5nX2NvbW1lbnRzGAMgASgJEhkKEXRy",
"YWlsaW5nX2NvbW1lbnRzGAQgASgJEiEKGWxlYWRpbmdfZGV0YWNoZWRfY29t",
- "bWVudHMYBiADKAlCXgoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRv",
- "clByb3Rvc0gBWgpkZXNjcmlwdG9yogIDR1BCqgIgR29vZ2xlLlByb3RvYnVm",
- "LkRlc2NyaXB0b3JQcm90b3M="));
- descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
- new pbd::FileDescriptor[] {
+ "bWVudHMYBiADKAlCWAoTY29tLmdvb2dsZS5wcm90b2J1ZkIQRGVzY3JpcHRv",
+ "clByb3Rvc0gBWgpkZXNjcmlwdG9yogIDR1BCqgIaR29vZ2xlLlByb3RvYnVm",
+ "LlJlZmxlY3Rpb24="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
});
internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.FileDescriptorSet), descriptor.MessageTypes[0],
- new string[] { "File", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.FileDescriptorSet), descriptor.MessageTypes[0],
+ new string[] { "File", }, new string[] { });
internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.FileDescriptorProto), descriptor.MessageTypes[1],
- new string[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.FileDescriptorProto), descriptor.MessageTypes[1],
+ new string[] { "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax", }, new string[] { });
internal__static_google_protobuf_DescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.DescriptorProto), descriptor.MessageTypes[2],
- new string[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.DescriptorProto), descriptor.MessageTypes[2],
+ new string[] { "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName", }, new string[] { });
internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange), descriptor.MessageTypes[2].NestedTypes[0],
- new string[] { "Start", "End", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange), descriptor.MessageTypes[2].NestedTypes[0],
+ new string[] { "Start", "End", }, new string[] { });
internal__static_google_protobuf_DescriptorProto_ReservedRange__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange), descriptor.MessageTypes[2].NestedTypes[1],
- new string[] { "Start", "End", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange), descriptor.MessageTypes[2].NestedTypes[1],
+ new string[] { "Start", "End", }, new string[] { });
internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto), descriptor.MessageTypes[3],
- new string[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "Options", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto), descriptor.MessageTypes[3],
+ new string[] { "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "Options", }, new string[] { });
internal__static_google_protobuf_OneofDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto), descriptor.MessageTypes[4],
- new string[] { "Name", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.OneofDescriptorProto), descriptor.MessageTypes[4],
+ new string[] { "Name", }, new string[] { });
internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto), descriptor.MessageTypes[5],
- new string[] { "Name", "Value", "Options", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.EnumDescriptorProto), descriptor.MessageTypes[5],
+ new string[] { "Name", "Value", "Options", }, new string[] { });
internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto), descriptor.MessageTypes[6],
- new string[] { "Name", "Number", "Options", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.EnumValueDescriptorProto), descriptor.MessageTypes[6],
+ new string[] { "Name", "Number", "Options", }, new string[] { });
internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto), descriptor.MessageTypes[7],
- new string[] { "Name", "Method", "Options", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.ServiceDescriptorProto), descriptor.MessageTypes[7],
+ new string[] { "Name", "Method", "Options", }, new string[] { });
internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto), descriptor.MessageTypes[8],
- new string[] { "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.MethodDescriptorProto), descriptor.MessageTypes[8],
+ new string[] { "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming", }, new string[] { });
internal__static_google_protobuf_FileOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.FileOptions), descriptor.MessageTypes[9],
- new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.FileOptions), descriptor.MessageTypes[9],
+ new string[] { "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_MessageOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.MessageOptions), descriptor.MessageTypes[10],
- new string[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.MessageOptions), descriptor.MessageTypes[10],
+ new string[] { "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_FieldOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.FieldOptions), descriptor.MessageTypes[11],
- new string[] { "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.FieldOptions), descriptor.MessageTypes[11],
+ new string[] { "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_EnumOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.EnumOptions), descriptor.MessageTypes[12],
- new string[] { "AllowAlias", "Deprecated", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.EnumOptions), descriptor.MessageTypes[12],
+ new string[] { "AllowAlias", "Deprecated", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.EnumValueOptions), descriptor.MessageTypes[13],
- new string[] { "Deprecated", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.EnumValueOptions), descriptor.MessageTypes[13],
+ new string[] { "Deprecated", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_ServiceOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.ServiceOptions), descriptor.MessageTypes[14],
- new string[] { "Deprecated", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.ServiceOptions), descriptor.MessageTypes[14],
+ new string[] { "Deprecated", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_MethodOptions__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.MethodOptions), descriptor.MessageTypes[15],
- new string[] { "Deprecated", "UninterpretedOption", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.MethodOptions), descriptor.MessageTypes[15],
+ new string[] { "Deprecated", "UninterpretedOption", }, new string[] { });
internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.UninterpretedOption), descriptor.MessageTypes[16],
- new string[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.UninterpretedOption), descriptor.MessageTypes[16],
+ new string[] { "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue", }, new string[] { });
internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart), descriptor.MessageTypes[16].NestedTypes[0],
- new string[] { "NamePart_", "IsExtension", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart), descriptor.MessageTypes[16].NestedTypes[0],
+ new string[] { "NamePart_", "IsExtension", }, new string[] { });
internal__static_google_protobuf_SourceCodeInfo__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.SourceCodeInfo), descriptor.MessageTypes[17],
- new string[] { "Location", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo), descriptor.MessageTypes[17],
+ new string[] { "Location", }, new string[] { });
internal__static_google_protobuf_SourceCodeInfo_Location__FieldAccessorTable =
- new pb::FieldAccess.FieldAccessorTable(typeof(global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location), descriptor.MessageTypes[17].NestedTypes[0],
- new string[] { "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments", });
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location), descriptor.MessageTypes[17].NestedTypes[0],
+ new string[] { "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments", }, new string[] { });
}
#endregion
@@ -237,12 +237,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "file" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[0]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorSet__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -271,10 +271,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int FileFieldNumber = 1;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.FileDescriptorProto> _repeated_file_codec
- = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.DescriptorProtos.FileDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FileDescriptorProto> file_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FileDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FileDescriptorProto> File {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FileDescriptorProto> _repeated_file_codec
+ = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.FileDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> file_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.FileDescriptorProto> File {
get { return file_; }
}
@@ -299,6 +299,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
file_.WriteTo(output, _repeated_file_codec);
}
@@ -344,12 +348,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "dependency", "enum_type", "extension", "message_type", "name", "options", "package", "public_dependency", "service", "source_code_info", "syntax", "weak_dependency" };
private static readonly uint[] _fieldTags = new uint[] { 26, 42, 58, 34, 10, 66, 18, 80, 50, 74, 98, 88 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[1]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_FileDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -441,40 +445,40 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int MessageTypeFieldNumber = 4;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.DescriptorProto> _repeated_messageType_codec
- = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.DescriptorProtos.DescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto> messageType_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto> MessageType {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_messageType_codec
+ = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> messageType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> MessageType {
get { return messageType_; }
}
public const int EnumTypeFieldNumber = 5;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> _repeated_enumType_codec
- = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> EnumType {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
+ = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
get { return enumType_; }
}
public const int ServiceFieldNumber = 6;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto> _repeated_service_codec
- = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto> service_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.ServiceDescriptorProto> Service {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.ServiceDescriptorProto> _repeated_service_codec
+ = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> service_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.ServiceDescriptorProto> Service {
get { return service_; }
}
public const int ExtensionFieldNumber = 7;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> _repeated_extension_codec
- = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> Extension {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
+ = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
get { return extension_; }
}
public const int OptionsFieldNumber = 8;
- private global::Google.Protobuf.DescriptorProtos.FileOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.FileOptions Options {
+ private global::Google.Protobuf.Reflection.FileOptions options_;
+ internal global::Google.Protobuf.Reflection.FileOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -483,8 +487,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int SourceCodeInfoFieldNumber = 9;
- private global::Google.Protobuf.DescriptorProtos.SourceCodeInfo sourceCodeInfo_;
- internal global::Google.Protobuf.DescriptorProtos.SourceCodeInfo SourceCodeInfo {
+ private global::Google.Protobuf.Reflection.SourceCodeInfo sourceCodeInfo_;
+ internal global::Google.Protobuf.Reflection.SourceCodeInfo SourceCodeInfo {
get { return sourceCodeInfo_; }
set {
pb::Freezable.CheckMutable(this);
@@ -545,6 +549,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -621,13 +629,13 @@ namespace Google.Protobuf.DescriptorProtos {
extension_.Add(other.extension_);
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.FileOptions();
+ options_ = new global::Google.Protobuf.Reflection.FileOptions();
}
Options.MergeFrom(other.Options);
}
if (other.sourceCodeInfo_ != null) {
if (sourceCodeInfo_ == null) {
- sourceCodeInfo_ = new global::Google.Protobuf.DescriptorProtos.SourceCodeInfo();
+ sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
}
SourceCodeInfo.MergeFrom(other.SourceCodeInfo);
}
@@ -677,14 +685,14 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 66: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.FileOptions();
+ options_ = new global::Google.Protobuf.Reflection.FileOptions();
}
input.ReadMessage(options_);
break;
}
case 74: {
if (sourceCodeInfo_ == null) {
- sourceCodeInfo_ = new global::Google.Protobuf.DescriptorProtos.SourceCodeInfo();
+ sourceCodeInfo_ = new global::Google.Protobuf.Reflection.SourceCodeInfo();
}
input.ReadMessage(sourceCodeInfo_);
break;
@@ -716,12 +724,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "enum_type", "extension", "extension_range", "field", "name", "nested_type", "oneof_decl", "options", "reserved_name", "reserved_range" };
private static readonly uint[] _fieldTags = new uint[] { 34, 50, 42, 18, 10, 26, 66, 58, 82, 74 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[2]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[2]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -777,56 +785,56 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int FieldFieldNumber = 2;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> _repeated_field_codec
- = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> field_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> Field {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_field_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> field_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Field {
get { return field_; }
}
public const int ExtensionFieldNumber = 6;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> _repeated_extension_codec
- = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto> Extension {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.FieldDescriptorProto> _repeated_extension_codec
+ = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> extension_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.FieldDescriptorProto> Extension {
get { return extension_; }
}
public const int NestedTypeFieldNumber = 3;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.DescriptorProto> _repeated_nestedType_codec
- = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.DescriptorProtos.DescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto> nestedType_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto> NestedType {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto> _repeated_nestedType_codec
+ = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.Reflection.DescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> nestedType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto> NestedType {
get { return nestedType_; }
}
public const int EnumTypeFieldNumber = 4;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> _repeated_enumType_codec
- = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumDescriptorProto> EnumType {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumDescriptorProto> _repeated_enumType_codec
+ = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> enumType_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumDescriptorProto> EnumType {
get { return enumType_; }
}
public const int ExtensionRangeFieldNumber = 5;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange> _repeated_extensionRange_codec
- = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange> extensionRange_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ExtensionRange> ExtensionRange {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> _repeated_extensionRange_codec
+ = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> extensionRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange> ExtensionRange {
get { return extensionRange_; }
}
public const int OneofDeclFieldNumber = 8;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto> _repeated_oneofDecl_codec
- = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto> oneofDecl_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.OneofDescriptorProto> OneofDecl {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.OneofDescriptorProto> _repeated_oneofDecl_codec
+ = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> oneofDecl_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.OneofDescriptorProto> OneofDecl {
get { return oneofDecl_; }
}
public const int OptionsFieldNumber = 7;
- private global::Google.Protobuf.DescriptorProtos.MessageOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.MessageOptions Options {
+ private global::Google.Protobuf.Reflection.MessageOptions options_;
+ internal global::Google.Protobuf.Reflection.MessageOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -835,10 +843,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int ReservedRangeFieldNumber = 9;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange> _repeated_reservedRange_codec
- = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange> reservedRange_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.DescriptorProto.Types.ReservedRange> ReservedRange {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> _repeated_reservedRange_codec
+ = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> reservedRange_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange> ReservedRange {
get { return reservedRange_; }
}
@@ -889,6 +897,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -942,7 +954,7 @@ namespace Google.Protobuf.DescriptorProtos {
oneofDecl_.Add(other.oneofDecl_);
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.MessageOptions();
+ options_ = new global::Google.Protobuf.Reflection.MessageOptions();
}
Options.MergeFrom(other.Options);
}
@@ -987,7 +999,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 58: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.MessageOptions();
+ options_ = new global::Google.Protobuf.Reflection.MessageOptions();
}
input.ReadMessage(options_);
break;
@@ -1018,12 +1030,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "end", "start" };
private static readonly uint[] _fieldTags = new uint[] { 16, 8 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProto.Descriptor.NestedTypes[0]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ExtensionRange__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -1094,6 +1106,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Start != 0) {
output.WriteRawTag(8);
@@ -1160,12 +1176,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "end", "start" };
private static readonly uint[] _fieldTags = new uint[] { 16, 8 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProto.Descriptor.NestedTypes[1]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[1]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ReservedRange__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_DescriptorProto_ReservedRange__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -1236,6 +1252,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Start != 0) {
output.WriteRawTag(8);
@@ -1307,12 +1327,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "default_value", "extendee", "label", "name", "number", "oneof_index", "options", "type", "type_name" };
private static readonly uint[] _fieldTags = new uint[] { 58, 18, 32, 10, 24, 72, 66, 40, 50 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[3]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[3]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_FieldDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -1369,8 +1389,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int LabelFieldNumber = 4;
- private global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label label_ = global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
- internal global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label Label {
+ private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL;
+ internal global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label {
get { return label_; }
set {
pb::Freezable.CheckMutable(this);
@@ -1379,8 +1399,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int TypeFieldNumber = 5;
- private global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type type_ = global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
- internal global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type Type {
+ private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_ = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE;
+ internal global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type Type {
get { return type_; }
set {
pb::Freezable.CheckMutable(this);
@@ -1429,8 +1449,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int OptionsFieldNumber = 8;
- private global::Google.Protobuf.DescriptorProtos.FieldOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.FieldOptions Options {
+ private global::Google.Protobuf.Reflection.FieldOptions options_;
+ internal global::Google.Protobuf.Reflection.FieldOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -1465,8 +1485,8 @@ namespace Google.Protobuf.DescriptorProtos {
int hash = 1;
if (Name.Length != 0) hash ^= Name.GetHashCode();
if (Number != 0) hash ^= Number.GetHashCode();
- if (Label != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) hash ^= Label.GetHashCode();
- if (Type != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) hash ^= Type.GetHashCode();
+ if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) hash ^= Label.GetHashCode();
+ if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) hash ^= Type.GetHashCode();
if (TypeName.Length != 0) hash ^= TypeName.GetHashCode();
if (Extendee.Length != 0) hash ^= Extendee.GetHashCode();
if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode();
@@ -1475,6 +1495,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -1488,11 +1512,11 @@ namespace Google.Protobuf.DescriptorProtos {
output.WriteRawTag(24);
output.WriteInt32(Number);
}
- if (Label != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+ if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
output.WriteRawTag(32);
output.WriteEnum((int) Label);
}
- if (Type != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+ if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
output.WriteRawTag(40);
output.WriteEnum((int) Type);
}
@@ -1522,10 +1546,10 @@ namespace Google.Protobuf.DescriptorProtos {
if (Number != 0) {
size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
}
- if (Label != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+ if (Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label);
}
- if (Type != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+ if (Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
}
if (TypeName.Length != 0) {
@@ -1556,10 +1580,10 @@ namespace Google.Protobuf.DescriptorProtos {
if (other.Number != 0) {
Number = other.Number;
}
- if (other.Label != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
+ if (other.Label != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.LABEL_OPTIONAL) {
Label = other.Label;
}
- if (other.Type != global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
+ if (other.Type != global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.TYPE_DOUBLE) {
Type = other.Type;
}
if (other.TypeName.Length != 0) {
@@ -1576,7 +1600,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.FieldOptions();
+ options_ = new global::Google.Protobuf.Reflection.FieldOptions();
}
Options.MergeFrom(other.Options);
}
@@ -1606,11 +1630,11 @@ namespace Google.Protobuf.DescriptorProtos {
break;
}
case 32: {
- label_ = (global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Label) input.ReadEnum();
+ label_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) input.ReadEnum();
break;
}
case 40: {
- type_ = (global::Google.Protobuf.DescriptorProtos.FieldDescriptorProto.Types.Type) input.ReadEnum();
+ type_ = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type) input.ReadEnum();
break;
}
case 50: {
@@ -1623,7 +1647,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 66: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.FieldOptions();
+ options_ = new global::Google.Protobuf.Reflection.FieldOptions();
}
input.ReadMessage(options_);
break;
@@ -1678,12 +1702,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "name" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[4]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[4]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_OneofDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_OneofDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -1741,6 +1765,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -1793,12 +1821,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "name", "options", "value" };
private static readonly uint[] _fieldTags = new uint[] { 10, 26, 18 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[5]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[5]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_EnumDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -1840,16 +1868,16 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int ValueFieldNumber = 2;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto> _repeated_value_codec
- = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto> value_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.EnumValueDescriptorProto> Value {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> _repeated_value_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> value_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.EnumValueDescriptorProto> Value {
get { return value_; }
}
public const int OptionsFieldNumber = 3;
- private global::Google.Protobuf.DescriptorProtos.EnumOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.EnumOptions Options {
+ private global::Google.Protobuf.Reflection.EnumOptions options_;
+ internal global::Google.Protobuf.Reflection.EnumOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -1882,6 +1910,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -1916,7 +1948,7 @@ namespace Google.Protobuf.DescriptorProtos {
value_.Add(other.value_);
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.EnumOptions();
+ options_ = new global::Google.Protobuf.Reflection.EnumOptions();
}
Options.MergeFrom(other.Options);
}
@@ -1943,7 +1975,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 26: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.EnumOptions();
+ options_ = new global::Google.Protobuf.Reflection.EnumOptions();
}
input.ReadMessage(options_);
break;
@@ -1961,12 +1993,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "name", "number", "options" };
private static readonly uint[] _fieldTags = new uint[] { 10, 16, 26 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[6]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[6]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_EnumValueDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -2017,8 +2049,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int OptionsFieldNumber = 3;
- private global::Google.Protobuf.DescriptorProtos.EnumValueOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.EnumValueOptions Options {
+ private global::Google.Protobuf.Reflection.EnumValueOptions options_;
+ internal global::Google.Protobuf.Reflection.EnumValueOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -2051,6 +2083,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -2092,7 +2128,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.EnumValueOptions();
+ options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
}
Options.MergeFrom(other.Options);
}
@@ -2119,7 +2155,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 26: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.EnumValueOptions();
+ options_ = new global::Google.Protobuf.Reflection.EnumValueOptions();
}
input.ReadMessage(options_);
break;
@@ -2137,12 +2173,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "method", "name", "options" };
private static readonly uint[] _fieldTags = new uint[] { 18, 10, 26 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[7]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[7]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_ServiceDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -2184,16 +2220,16 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int MethodFieldNumber = 2;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto> _repeated_method_codec
- = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto> method_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.MethodDescriptorProto> Method {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.MethodDescriptorProto> _repeated_method_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> method_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.MethodDescriptorProto> Method {
get { return method_; }
}
public const int OptionsFieldNumber = 3;
- private global::Google.Protobuf.DescriptorProtos.ServiceOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.ServiceOptions Options {
+ private global::Google.Protobuf.Reflection.ServiceOptions options_;
+ internal global::Google.Protobuf.Reflection.ServiceOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -2226,6 +2262,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -2260,7 +2300,7 @@ namespace Google.Protobuf.DescriptorProtos {
method_.Add(other.method_);
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.ServiceOptions();
+ options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
}
Options.MergeFrom(other.Options);
}
@@ -2287,7 +2327,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 26: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.ServiceOptions();
+ options_ = new global::Google.Protobuf.Reflection.ServiceOptions();
}
input.ReadMessage(options_);
break;
@@ -2305,12 +2345,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "client_streaming", "input_type", "name", "options", "output_type", "server_streaming" };
private static readonly uint[] _fieldTags = new uint[] { 40, 18, 10, 34, 26, 48 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[8]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[8]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_MethodDescriptorProto__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -2374,8 +2414,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int OptionsFieldNumber = 4;
- private global::Google.Protobuf.DescriptorProtos.MethodOptions options_;
- internal global::Google.Protobuf.DescriptorProtos.MethodOptions Options {
+ private global::Google.Protobuf.Reflection.MethodOptions options_;
+ internal global::Google.Protobuf.Reflection.MethodOptions Options {
get { return options_; }
set {
pb::Freezable.CheckMutable(this);
@@ -2434,6 +2474,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Name.Length != 0) {
output.WriteRawTag(10);
@@ -2499,7 +2543,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
if (other.options_ != null) {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.MethodOptions();
+ options_ = new global::Google.Protobuf.Reflection.MethodOptions();
}
Options.MergeFrom(other.Options);
}
@@ -2536,7 +2580,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
case 34: {
if (options_ == null) {
- options_ = new global::Google.Protobuf.DescriptorProtos.MethodOptions();
+ options_ = new global::Google.Protobuf.Reflection.MethodOptions();
}
input.ReadMessage(options_);
break;
@@ -2562,12 +2606,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "cc_enable_arenas", "cc_generic_services", "csharp_namespace", "deprecated", "go_package", "java_generate_equals_and_hash", "java_generic_services", "java_multiple_files", "java_outer_classname", "java_package", "java_string_check_utf8", "objc_class_prefix", "optimize_for", "py_generic_services", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 248, 128, 298, 184, 90, 160, 136, 80, 66, 10, 216, 290, 72, 144, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[9]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[9]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_FileOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -2660,8 +2704,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int OptimizeForFieldNumber = 9;
- private global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED;
- internal global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode OptimizeFor {
+ private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_ = global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED;
+ internal global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor {
get { return optimizeFor_; }
set {
pb::Freezable.CheckMutable(this);
@@ -2750,10 +2794,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -2793,7 +2837,7 @@ namespace Google.Protobuf.DescriptorProtos {
if (JavaMultipleFiles != false) hash ^= JavaMultipleFiles.GetHashCode();
if (JavaGenerateEqualsAndHash != false) hash ^= JavaGenerateEqualsAndHash.GetHashCode();
if (JavaStringCheckUtf8 != false) hash ^= JavaStringCheckUtf8.GetHashCode();
- if (OptimizeFor != global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED) hash ^= OptimizeFor.GetHashCode();
+ if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) hash ^= OptimizeFor.GetHashCode();
if (GoPackage.Length != 0) hash ^= GoPackage.GetHashCode();
if (CcGenericServices != false) hash ^= CcGenericServices.GetHashCode();
if (JavaGenericServices != false) hash ^= JavaGenericServices.GetHashCode();
@@ -2806,6 +2850,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (JavaPackage.Length != 0) {
output.WriteRawTag(10);
@@ -2815,7 +2863,7 @@ namespace Google.Protobuf.DescriptorProtos {
output.WriteRawTag(66);
output.WriteString(JavaOuterClassname);
}
- if (OptimizeFor != global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED) {
+ if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
output.WriteRawTag(72);
output.WriteEnum((int) OptimizeFor);
}
@@ -2883,7 +2931,7 @@ namespace Google.Protobuf.DescriptorProtos {
if (JavaStringCheckUtf8 != false) {
size += 2 + 1;
}
- if (OptimizeFor != global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED) {
+ if (OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor);
}
if (GoPackage.Length != 0) {
@@ -2933,7 +2981,7 @@ namespace Google.Protobuf.DescriptorProtos {
if (other.JavaStringCheckUtf8 != false) {
JavaStringCheckUtf8 = other.JavaStringCheckUtf8;
}
- if (other.OptimizeFor != global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED) {
+ if (other.OptimizeFor != global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.SPEED) {
OptimizeFor = other.OptimizeFor;
}
if (other.GoPackage.Length != 0) {
@@ -2983,7 +3031,7 @@ namespace Google.Protobuf.DescriptorProtos {
break;
}
case 72: {
- optimizeFor_ = (global::Google.Protobuf.DescriptorProtos.FileOptions.Types.OptimizeMode) input.ReadEnum();
+ optimizeFor_ = (global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) input.ReadEnum();
break;
}
case 80: {
@@ -3059,12 +3107,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "deprecated", "map_entry", "message_set_wire_format", "no_standard_descriptor_accessor", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 24, 56, 8, 16, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[10]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[10]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_MessageOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -3137,10 +3185,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -3173,6 +3221,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (MessageSetWireFormat != false) {
output.WriteRawTag(8);
@@ -3274,12 +3326,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "ctype", "deprecated", "jstype", "lazy", "packed", "uninterpreted_option", "weak" };
private static readonly uint[] _fieldTags = new uint[] { 8, 24, 48, 40, 16, 7994, 80 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[11]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[11]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_FieldOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -3314,8 +3366,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int CtypeFieldNumber = 1;
- private global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType ctype_ = global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType.STRING;
- internal global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType Ctype {
+ private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING;
+ internal global::Google.Protobuf.Reflection.FieldOptions.Types.CType Ctype {
get { return ctype_; }
set {
pb::Freezable.CheckMutable(this);
@@ -3334,8 +3386,8 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int JstypeFieldNumber = 6;
- private global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType jstype_ = global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType.JS_NORMAL;
- internal global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType Jstype {
+ private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_ = global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL;
+ internal global::Google.Protobuf.Reflection.FieldOptions.Types.JSType Jstype {
get { return jstype_; }
set {
pb::Freezable.CheckMutable(this);
@@ -3374,10 +3426,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -3404,9 +3456,9 @@ namespace Google.Protobuf.DescriptorProtos {
public override int GetHashCode() {
int hash = 1;
- if (Ctype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType.STRING) hash ^= Ctype.GetHashCode();
+ if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) hash ^= Ctype.GetHashCode();
if (Packed != false) hash ^= Packed.GetHashCode();
- if (Jstype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType.JS_NORMAL) hash ^= Jstype.GetHashCode();
+ if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) hash ^= Jstype.GetHashCode();
if (Lazy != false) hash ^= Lazy.GetHashCode();
if (Deprecated != false) hash ^= Deprecated.GetHashCode();
if (Weak != false) hash ^= Weak.GetHashCode();
@@ -3414,8 +3466,12 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
- if (Ctype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType.STRING) {
+ if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
output.WriteRawTag(8);
output.WriteEnum((int) Ctype);
}
@@ -3431,7 +3487,7 @@ namespace Google.Protobuf.DescriptorProtos {
output.WriteRawTag(40);
output.WriteBool(Lazy);
}
- if (Jstype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType.JS_NORMAL) {
+ if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
output.WriteRawTag(48);
output.WriteEnum((int) Jstype);
}
@@ -3444,13 +3500,13 @@ namespace Google.Protobuf.DescriptorProtos {
public int CalculateSize() {
int size = 0;
- if (Ctype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType.STRING) {
+ if (Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype);
}
if (Packed != false) {
size += 1 + 1;
}
- if (Jstype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType.JS_NORMAL) {
+ if (Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype);
}
if (Lazy != false) {
@@ -3470,13 +3526,13 @@ namespace Google.Protobuf.DescriptorProtos {
if (other == null) {
return;
}
- if (other.Ctype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType.STRING) {
+ if (other.Ctype != global::Google.Protobuf.Reflection.FieldOptions.Types.CType.STRING) {
Ctype = other.Ctype;
}
if (other.Packed != false) {
Packed = other.Packed;
}
- if (other.Jstype != global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType.JS_NORMAL) {
+ if (other.Jstype != global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JS_NORMAL) {
Jstype = other.Jstype;
}
if (other.Lazy != false) {
@@ -3503,7 +3559,7 @@ namespace Google.Protobuf.DescriptorProtos {
}
break;
case 8: {
- ctype_ = (global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.CType) input.ReadEnum();
+ ctype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.CType) input.ReadEnum();
break;
}
case 16: {
@@ -3519,7 +3575,7 @@ namespace Google.Protobuf.DescriptorProtos {
break;
}
case 48: {
- jstype_ = (global::Google.Protobuf.DescriptorProtos.FieldOptions.Types.JSType) input.ReadEnum();
+ jstype_ = (global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) input.ReadEnum();
break;
}
case 80: {
@@ -3561,12 +3617,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "allow_alias", "deprecated", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 16, 24, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[12]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[12]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_EnumOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -3617,10 +3673,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -3649,6 +3705,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (AllowAlias != false) {
output.WriteRawTag(16);
@@ -3722,12 +3782,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "deprecated", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 8, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[13]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[13]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_EnumValueOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -3767,10 +3827,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -3797,6 +3857,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Deprecated != false) {
output.WriteRawTag(8);
@@ -3856,12 +3920,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "deprecated", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 264, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[14]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[14]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_ServiceOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -3901,10 +3965,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -3931,6 +3995,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Deprecated != false) {
output.WriteRawTag(136, 2);
@@ -3990,12 +4058,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "deprecated", "uninterpreted_option" };
private static readonly uint[] _fieldTags = new uint[] { 264, 7994 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[15]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[15]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_MethodOptions__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -4035,10 +4103,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int UninterpretedOptionFieldNumber = 999;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> _repeated_uninterpretedOption_codec
- = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption> UninterpretedOption {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption> _repeated_uninterpretedOption_codec
+ = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> uninterpretedOption_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption> UninterpretedOption {
get { return uninterpretedOption_; }
}
@@ -4065,6 +4133,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (Deprecated != false) {
output.WriteRawTag(136, 2);
@@ -4124,12 +4196,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "aggregate_value", "double_value", "identifier_value", "name", "negative_int_value", "positive_int_value", "string_value" };
private static readonly uint[] _fieldTags = new uint[] { 66, 49, 26, 18, 40, 32, 58 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[16]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[16]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -4164,10 +4236,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int NameFieldNumber = 2;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart> _repeated_name_codec
- = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart> name_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Types.NamePart> Name {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> _repeated_name_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> name_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart> Name {
get { return name_; }
}
@@ -4264,6 +4336,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
name_.WriteTo(output, _repeated_name_codec);
if (IdentifierValue.Length != 0) {
@@ -4394,12 +4470,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "is_extension", "name_part" };
private static readonly uint[] _fieldTags = new uint[] { 16, 10 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.UninterpretedOption.Descriptor.NestedTypes[0]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.UninterpretedOption.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_UninterpretedOption_NamePart__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -4470,6 +4546,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
if (NamePart_.Length != 0) {
output.WriteRawTag(10);
@@ -4541,12 +4621,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "location" };
private static readonly uint[] _fieldTags = new uint[] { 10 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.Descriptor.MessageTypes[17]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.Descriptor.MessageTypes[17]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_SourceCodeInfo__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_SourceCodeInfo__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -4575,10 +4655,10 @@ namespace Google.Protobuf.DescriptorProtos {
}
public const int LocationFieldNumber = 1;
- private static readonly pb::FieldCodec<global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location> _repeated_location_codec
- = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location.Parser);
- private readonly pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location> location_ = new pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location>();
- internal pbc::RepeatedField<global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Types.Location> Location {
+ private static readonly pb::FieldCodec<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> _repeated_location_codec
+ = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> location_ = new pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location>();
+ internal pbc::RepeatedField<global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location> Location {
get { return location_; }
}
@@ -4603,6 +4683,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
location_.WriteTo(output, _repeated_location_codec);
}
@@ -4649,12 +4733,12 @@ namespace Google.Protobuf.DescriptorProtos {
private static readonly string[] _fieldNames = new string[] { "leading_comments", "leading_detached_comments", "path", "span", "trailing_comments" };
private static readonly uint[] _fieldTags = new uint[] { 26, 50, 10, 18, 34 };
- public static pbd::MessageDescriptor Descriptor {
- get { return global::Google.Protobuf.DescriptorProtos.SourceCodeInfo.Descriptor.NestedTypes[0]; }
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.Reflection.SourceCodeInfo.Descriptor.NestedTypes[0]; }
}
- public pb::FieldAccess.FieldAccessorTable Fields {
- get { return global::Google.Protobuf.DescriptorProtos.DescriptorProtoFile.internal__static_google_protobuf_SourceCodeInfo_Location__FieldAccessorTable; }
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.Reflection.DescriptorProtoFile.internal__static_google_protobuf_SourceCodeInfo_Location__FieldAccessorTable; }
}
private bool _frozen = false;
@@ -4761,6 +4845,10 @@ namespace Google.Protobuf.DescriptorProtos {
return hash;
}
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
public void WriteTo(pb::CodedOutputStream output) {
path_.WriteTo(output, _repeated_path_codec);
span_.WriteTo(output, _repeated_span_codec);
diff --git a/csharp/src/ProtocolBuffers/Descriptors/DescriptorUtil.cs b/csharp/src/ProtocolBuffers/Reflection/DescriptorUtil.cs
index eb4ced60..af31dfb1 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/DescriptorUtil.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/DescriptorUtil.cs
@@ -1,65 +1,65 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Internal class containing utility methods when working with descriptors.
- /// </summary>
- internal static class DescriptorUtil
- {
- /// <summary>
- /// Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert
- /// arrays.
- /// </summary>
- internal delegate TOutput IndexedConverter<TInput, TOutput>(TInput element, int index);
-
- /// <summary>
- /// Converts the given array into a read-only list, applying the specified conversion to
- /// each input element.
- /// </summary>
- internal static IList<TOutput> ConvertAndMakeReadOnly<TInput, TOutput>(IList<TInput> input,
- IndexedConverter<TInput, TOutput>
- converter)
- {
- TOutput[] array = new TOutput[input.Count];
- for (int i = 0; i < array.Length; i++)
- {
- array[i] = converter(input[i], i);
- }
- return new ReadOnlyCollection<TOutput>(array);
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Internal class containing utility methods when working with descriptors.
+ /// </summary>
+ internal static class DescriptorUtil
+ {
+ /// <summary>
+ /// Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert
+ /// arrays.
+ /// </summary>
+ internal delegate TOutput IndexedConverter<TInput, TOutput>(TInput element, int index);
+
+ /// <summary>
+ /// Converts the given array into a read-only list, applying the specified conversion to
+ /// each input element.
+ /// </summary>
+ internal static IList<TOutput> ConvertAndMakeReadOnly<TInput, TOutput>(IList<TInput> input,
+ IndexedConverter<TInput, TOutput>
+ converter)
+ {
+ TOutput[] array = new TOutput[input.Count];
+ for (int i = 0; i < array.Length; i++)
+ {
+ array[i] = converter(input[i], i);
+ }
+ return new ReadOnlyCollection<TOutput>(array);
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/DescriptorValidationException.cs b/csharp/src/ProtocolBuffers/Reflection/DescriptorValidationException.cs
index 855eda61..143671db 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/DescriptorValidationException.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/DescriptorValidationException.cs
@@ -1,80 +1,80 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Thrown when building descriptors fails because the source DescriptorProtos
- /// are not valid.
- /// </summary>
- public sealed class DescriptorValidationException : Exception
- {
- private readonly String name;
- private readonly string description;
-
- /// <value>
- /// The full name of the descriptor where the error occurred.
- /// </value>
- public String ProblemSymbolName
- {
- get { return name; }
- }
-
- /// <value>
- /// A human-readable description of the error. (The Message property
- /// is made up of the descriptor's name and this description.)
- /// </value>
- public string Description
- {
- get { return description; }
- }
-
- internal DescriptorValidationException(IDescriptor problemDescriptor, string description) :
- base(problemDescriptor.FullName + ": " + description)
- {
- // Note that problemDescriptor may be partially uninitialized, so we
- // don't want to expose it directly to the user. So, we only provide
- // the name and the original proto.
- name = problemDescriptor.FullName;
- this.description = description;
- }
-
- internal DescriptorValidationException(IDescriptor problemDescriptor, string description, Exception cause) :
- base(problemDescriptor.FullName + ": " + description, cause)
- {
- name = problemDescriptor.FullName;
- this.description = description;
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Thrown when building descriptors fails because the source DescriptorProtos
+ /// are not valid.
+ /// </summary>
+ public sealed class DescriptorValidationException : Exception
+ {
+ private readonly String name;
+ private readonly string description;
+
+ /// <value>
+ /// The full name of the descriptor where the error occurred.
+ /// </value>
+ public String ProblemSymbolName
+ {
+ get { return name; }
+ }
+
+ /// <value>
+ /// A human-readable description of the error. (The Message property
+ /// is made up of the descriptor's name and this description.)
+ /// </value>
+ public string Description
+ {
+ get { return description; }
+ }
+
+ internal DescriptorValidationException(IDescriptor problemDescriptor, string description) :
+ base(problemDescriptor.FullName + ": " + description)
+ {
+ // Note that problemDescriptor may be partially uninitialized, so we
+ // don't want to expose it directly to the user. So, we only provide
+ // the name and the original proto.
+ name = problemDescriptor.FullName;
+ this.description = description;
+ }
+
+ internal DescriptorValidationException(IDescriptor problemDescriptor, string description, Exception cause) :
+ base(problemDescriptor.FullName + ": " + description, cause)
+ {
+ name = problemDescriptor.FullName;
+ this.description = description;
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/EnumDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/EnumDescriptor.cs
index a6db5268..bf8f8c83 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/EnumDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/EnumDescriptor.cs
@@ -1,108 +1,108 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System.Collections.Generic;
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Descriptor for an enum type in a .proto file.
- /// </summary>
- public sealed class EnumDescriptor : DescriptorBase
- {
- private readonly EnumDescriptorProto proto;
- private readonly MessageDescriptor containingType;
- private readonly IList<EnumValueDescriptor> values;
-
- internal EnumDescriptor(EnumDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index)
- : base(file, file.ComputeFullName(parent, proto.Name), index)
- {
- this.proto = proto;
- containingType = parent;
-
- if (proto.Value.Count == 0)
- {
- // We cannot allow enums with no values because this would mean there
- // would be no valid default value for fields of this type.
- throw new DescriptorValidationException(this, "Enums must contain at least one value.");
- }
-
- values = DescriptorUtil.ConvertAndMakeReadOnly(proto.Value,
- (value, i) => new EnumValueDescriptor(value, file, this, i));
-
- File.DescriptorPool.AddSymbol(this);
- }
-
- internal EnumDescriptorProto Proto { get { return proto; } }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- /// <value>
- /// If this is a nested type, get the outer descriptor, otherwise null.
- /// </value>
- public MessageDescriptor ContainingType
- {
- get { return containingType; }
- }
-
- /// <value>
- /// An unmodifiable list of defined value descriptors for this enum.
- /// </value>
- public IList<EnumValueDescriptor> Values
- {
- get { return values; }
- }
-
- /// <summary>
- /// Finds an enum value by number. If multiple enum values have the
- /// same number, this returns the first defined value with that number.
- /// </summary>
- public EnumValueDescriptor FindValueByNumber(int number)
- {
- return File.DescriptorPool.FindEnumValueByNumber(this, number);
- }
-
- /// <summary>
- /// Finds an enum value by name.
- /// </summary>
- /// <param name="name">The unqualified name of the value (e.g. "FOO").</param>
- /// <returns>The value's descriptor, or null if not found.</returns>
- public EnumValueDescriptor FindValueByName(string name)
- {
- return File.DescriptorPool.FindSymbol<EnumValueDescriptor>(FullName + "." + name);
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System.Collections.Generic;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Descriptor for an enum type in a .proto file.
+ /// </summary>
+ public sealed class EnumDescriptor : DescriptorBase
+ {
+ private readonly EnumDescriptorProto proto;
+ private readonly MessageDescriptor containingType;
+ private readonly IList<EnumValueDescriptor> values;
+
+ internal EnumDescriptor(EnumDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index)
+ : base(file, file.ComputeFullName(parent, proto.Name), index)
+ {
+ this.proto = proto;
+ containingType = parent;
+
+ if (proto.Value.Count == 0)
+ {
+ // We cannot allow enums with no values because this would mean there
+ // would be no valid default value for fields of this type.
+ throw new DescriptorValidationException(this, "Enums must contain at least one value.");
+ }
+
+ values = DescriptorUtil.ConvertAndMakeReadOnly(proto.Value,
+ (value, i) => new EnumValueDescriptor(value, file, this, i));
+
+ File.DescriptorPool.AddSymbol(this);
+ }
+
+ internal EnumDescriptorProto Proto { get { return proto; } }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ /// <value>
+ /// If this is a nested type, get the outer descriptor, otherwise null.
+ /// </value>
+ public MessageDescriptor ContainingType
+ {
+ get { return containingType; }
+ }
+
+ /// <value>
+ /// An unmodifiable list of defined value descriptors for this enum.
+ /// </value>
+ public IList<EnumValueDescriptor> Values
+ {
+ get { return values; }
+ }
+
+ /// <summary>
+ /// Finds an enum value by number. If multiple enum values have the
+ /// same number, this returns the first defined value with that number.
+ /// If there is no value for the given number, this returns <c>null</c>.
+ /// </summary>
+ public EnumValueDescriptor FindValueByNumber(int number)
+ {
+ return File.DescriptorPool.FindEnumValueByNumber(this, number);
+ }
+
+ /// <summary>
+ /// Finds an enum value by name.
+ /// </summary>
+ /// <param name="name">The unqualified name of the value (e.g. "FOO").</param>
+ /// <returns>The value's descriptor, or null if not found.</returns>
+ public EnumValueDescriptor FindValueByName(string name)
+ {
+ return File.DescriptorPool.FindSymbol<EnumValueDescriptor>(FullName + "." + name);
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/EnumValueDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/EnumValueDescriptor.cs
index e609b1f8..29833c4a 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/EnumValueDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/EnumValueDescriptor.cs
@@ -1,63 +1,61 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Descriptor for a single enum value within an enum in a .proto file.
- /// </summary>
- public sealed class EnumValueDescriptor : DescriptorBase
- {
- private readonly EnumDescriptor enumDescriptor;
- private readonly EnumValueDescriptorProto proto;
-
- internal EnumValueDescriptor(EnumValueDescriptorProto proto, FileDescriptor file,
- EnumDescriptor parent, int index)
- : base(file, parent.FullName + "." + proto.Name, index)
- {
- this.proto = proto;
- enumDescriptor = parent;
- file.DescriptorPool.AddSymbol(this);
- file.DescriptorPool.AddEnumValueByNumber(this);
- }
-
- internal EnumValueDescriptorProto Proto { get { return proto; } }
-
- public override string Name { get { return proto.Name; } }
-
- public int Number { get { return Proto.Number; } }
-
- public EnumDescriptor EnumDescriptor { get { return enumDescriptor; } }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Descriptor for a single enum value within an enum in a .proto file.
+ /// </summary>
+ public sealed class EnumValueDescriptor : DescriptorBase
+ {
+ private readonly EnumDescriptor enumDescriptor;
+ private readonly EnumValueDescriptorProto proto;
+
+ internal EnumValueDescriptor(EnumValueDescriptorProto proto, FileDescriptor file,
+ EnumDescriptor parent, int index)
+ : base(file, parent.FullName + "." + proto.Name, index)
+ {
+ this.proto = proto;
+ enumDescriptor = parent;
+ file.DescriptorPool.AddSymbol(this);
+ file.DescriptorPool.AddEnumValueByNumber(this);
+ }
+
+ internal EnumValueDescriptorProto Proto { get { return proto; } }
+
+ public override string Name { get { return proto.Name; } }
+
+ public int Number { get { return Proto.Number; } }
+
+ public EnumDescriptor EnumDescriptor { get { return enumDescriptor; } }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorBase.cs b/csharp/src/ProtocolBuffers/Reflection/FieldAccessorBase.cs
index 2a3e5b8b..39a63b47 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorBase.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/FieldAccessorBase.cs
@@ -32,9 +32,8 @@
using System;
using System.Reflection;
-using Google.Protobuf.Descriptors;
-namespace Google.Protobuf.FieldAccess
+namespace Google.Protobuf.Reflection
{
/// <summary>
/// Base class for field accessors.
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs b/csharp/src/ProtocolBuffers/Reflection/FieldAccessorTable.cs
index 57ea9c87..24fcbc64 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/FieldAccessorTable.cs
@@ -1,99 +1,97 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Collections.ObjectModel;
-using Google.Protobuf.Descriptors;
-
-namespace Google.Protobuf.FieldAccess
-{
- /// <summary>
- /// Provides access to fields in generated messages via reflection.
- /// </summary>
- public sealed class FieldAccessorTable
- {
- private readonly ReadOnlyCollection<IFieldAccessor> accessors;
- private readonly MessageDescriptor descriptor;
-
- /// <summary>
- /// Constructs a FieldAccessorTable for a particular message class.
- /// Only one FieldAccessorTable should be constructed per class.
- /// </summary>
- /// <param name="type">The CLR type for the message.</param>
- /// <param name="descriptor">The type's descriptor</param>
- /// <param name="propertyNames">The Pascal-case names of all the field-based properties in the message.</param>
- public FieldAccessorTable(Type type, MessageDescriptor descriptor, string[] propertyNames)
- {
- this.descriptor = descriptor;
- var accessorsArray = new IFieldAccessor[descriptor.Fields.Count];
- for (int i = 0; i < accessorsArray.Length; i++)
- {
- var field = descriptor.Fields[i];
- var name = propertyNames[i];
- accessorsArray[i] =
- field.IsMap ? new MapFieldAccessor(type, name, field)
- : field.IsRepeated ? new RepeatedFieldAccessor(type, name, field)
- : (IFieldAccessor) new SingleFieldAccessor(type, name, field);
- }
- accessors = new ReadOnlyCollection<IFieldAccessor>(accessorsArray);
- // TODO(jonskeet): Oneof support
- }
-
- // TODO: Validate the name here... should possibly make this type a more "general reflection access" type,
- // bearing in mind the oneof parts to come as well.
- /// <summary>
- /// Returns all of the field accessors for the message type.
- /// </summary>
- public ReadOnlyCollection<IFieldAccessor> Accessors { get { return accessors; } }
-
- public IFieldAccessor this[int fieldNumber]
- {
- get
- {
- FieldDescriptor field = descriptor.FindFieldByNumber(fieldNumber);
- return accessors[field.Index];
- }
- }
-
- internal IFieldAccessor this[FieldDescriptor field]
- {
- get
- {
- if (field.ContainingType != descriptor)
- {
- throw new ArgumentException("FieldDescriptor does not match message type.");
- }
- return accessors[field.Index];
- }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.ObjectModel;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Provides access to fields in generated messages via reflection.
+ /// </summary>
+ public sealed class FieldAccessorTable
+ {
+ private readonly ReadOnlyCollection<IFieldAccessor> accessors;
+ private readonly ReadOnlyCollection<OneofAccessor> oneofs;
+ private readonly MessageDescriptor descriptor;
+
+ /// <summary>
+ /// Constructs a FieldAccessorTable for a particular message class.
+ /// Only one FieldAccessorTable should be constructed per class.
+ /// </summary>
+ /// <param name="type">The CLR type for the message.</param>
+ /// <param name="descriptor">The type's descriptor</param>
+ /// <param name="propertyNames">The Pascal-case names of all the field-based properties in the message.</param>
+ public FieldAccessorTable(Type type, MessageDescriptor descriptor, string[] propertyNames, string[] oneofPropertyNames)
+ {
+ this.descriptor = descriptor;
+ var accessorsArray = new IFieldAccessor[descriptor.Fields.Count];
+ for (int i = 0; i < accessorsArray.Length; i++)
+ {
+ var field = descriptor.Fields[i];
+ var name = propertyNames[i];
+ accessorsArray[i] =
+ field.IsMap ? new MapFieldAccessor(type, name, field)
+ : field.IsRepeated ? new RepeatedFieldAccessor(type, name, field)
+ : (IFieldAccessor) new SingleFieldAccessor(type, name, field);
+ }
+ accessors = new ReadOnlyCollection<IFieldAccessor>(accessorsArray);
+ var oneofsArray = new OneofAccessor[descriptor.Oneofs.Count];
+ for (int i = 0; i < oneofsArray.Length; i++)
+ {
+ var oneof = descriptor.Oneofs[i];
+ oneofsArray[i] = new OneofAccessor(type, oneofPropertyNames[i], oneof);
+ }
+ oneofs = new ReadOnlyCollection<OneofAccessor>(oneofsArray);
+ }
+
+ // TODO: Validate the name here... should possibly make this type a more "general reflection access" type,
+ // bearing in mind the oneof parts to come as well.
+ /// <summary>
+ /// Returns all of the field accessors for the message type.
+ /// </summary>
+ public ReadOnlyCollection<IFieldAccessor> Accessors { get { return accessors; } }
+
+ public ReadOnlyCollection<OneofAccessor> Oneofs { get { return oneofs; } }
+
+ // TODO: Review this, as it's easy to get confused between FieldNumber and Index.
+ // Currently only used to get an accessor related to a oneof... maybe just make that simpler?
+ public IFieldAccessor this[int fieldNumber]
+ {
+ get
+ {
+ FieldDescriptor field = descriptor.FindFieldByNumber(fieldNumber);
+ return accessors[field.Index];
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/FieldDescriptor.cs
index 7af69bbb..3d9d0d75 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/FieldDescriptor.cs
@@ -1,293 +1,292 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Descriptor for a field or extension within a message in a .proto file.
- /// </summary>
- public sealed class FieldDescriptor : DescriptorBase, IComparable<FieldDescriptor>
- {
- private readonly FieldDescriptorProto proto;
- private EnumDescriptor enumType;
- private MessageDescriptor messageType;
- private readonly MessageDescriptor containingType;
- private readonly OneofDescriptor containingOneof;
- private FieldType fieldType;
-
- internal FieldDescriptor(FieldDescriptorProto proto, FileDescriptor file,
- MessageDescriptor parent, int index)
- : base(file, file.ComputeFullName(parent, proto.Name), index)
- {
- this.proto = proto;
- if (proto.Type != 0)
- {
- fieldType = GetFieldTypeFromProtoType(proto.Type);
- }
-
- if (FieldNumber <= 0)
- {
- throw new DescriptorValidationException(this,
- "Field numbers must be positive integers.");
- }
- containingType = parent;
- // OneofIndex "defaults" to -1 due to a hack in FieldDescriptor.OnConstruction.
- if (proto.OneofIndex != -1)
- {
- if (proto.OneofIndex < 0 || proto.OneofIndex >= parent.Proto.OneofDecl.Count)
- {
- throw new DescriptorValidationException(this,
- "FieldDescriptorProto.oneof_index is out of range for type " + parent.Name);
- }
- containingOneof = parent.Oneofs[proto.OneofIndex];
- }
-
- file.DescriptorPool.AddSymbol(this);
- }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- internal FieldDescriptorProto Proto { get { return proto; } }
-
- /// <summary>
- /// Maps a field type as included in the .proto file to a FieldType.
- /// </summary>
- private static FieldType GetFieldTypeFromProtoType(FieldDescriptorProto.Types.Type type)
- {
- switch (type)
- {
- case FieldDescriptorProto.Types.Type.TYPE_DOUBLE:
- return FieldType.Double;
- case FieldDescriptorProto.Types.Type.TYPE_FLOAT:
- return FieldType.Float;
- case FieldDescriptorProto.Types.Type.TYPE_INT64:
- return FieldType.Int64;
- case FieldDescriptorProto.Types.Type.TYPE_UINT64:
- return FieldType.UInt64;
- case FieldDescriptorProto.Types.Type.TYPE_INT32:
- return FieldType.Int32;
- case FieldDescriptorProto.Types.Type.TYPE_FIXED64:
- return FieldType.Fixed64;
- case FieldDescriptorProto.Types.Type.TYPE_FIXED32:
- return FieldType.Fixed32;
- case FieldDescriptorProto.Types.Type.TYPE_BOOL:
- return FieldType.Bool;
- case FieldDescriptorProto.Types.Type.TYPE_STRING:
- return FieldType.String;
- case FieldDescriptorProto.Types.Type.TYPE_GROUP:
- return FieldType.Group;
- case FieldDescriptorProto.Types.Type.TYPE_MESSAGE:
- return FieldType.Message;
- case FieldDescriptorProto.Types.Type.TYPE_BYTES:
- return FieldType.Bytes;
- case FieldDescriptorProto.Types.Type.TYPE_UINT32:
- return FieldType.UInt32;
- case FieldDescriptorProto.Types.Type.TYPE_ENUM:
- return FieldType.Enum;
- case FieldDescriptorProto.Types.Type.TYPE_SFIXED32:
- return FieldType.SFixed32;
- case FieldDescriptorProto.Types.Type.TYPE_SFIXED64:
- return FieldType.SFixed64;
- case FieldDescriptorProto.Types.Type.TYPE_SINT32:
- return FieldType.SInt32;
- case FieldDescriptorProto.Types.Type.TYPE_SINT64:
- return FieldType.SInt64;
- default:
- throw new ArgumentException("Invalid type specified");
- }
- }
-
- public bool IsRepeated
- {
- get { return Proto.Label == FieldDescriptorProto.Types.Label.LABEL_REPEATED; }
- }
-
- public bool IsMap
- {
- get { return fieldType == FieldType.Message && messageType.Proto.Options != null && messageType.Proto.Options.MapEntry; }
- }
-
- public bool IsPacked
- {
- get { return Proto.Options != null && Proto.Options.Packed; }
- }
-
- /// <summary>
- /// Get the field's containing type. For extensions, this is the type being
- /// extended, not the location where the extension was defined. See
- /// <see cref="ExtensionScope" />.
- /// </summary>
- public MessageDescriptor ContainingType
- {
- get { return containingType; }
- }
-
- public OneofDescriptor ContainingOneof
- {
- get { return containingOneof; }
- }
-
- public FieldType FieldType
- {
- get { return fieldType; }
- }
-
- public int FieldNumber
- {
- get { return Proto.Number; }
- }
-
- /// <summary>
- /// Compares this descriptor with another one, ordering in "canonical" order
- /// which simply means ascending order by field number. <paramref name="other"/>
- /// must be a field of the same type, i.e. the <see cref="ContainingType"/> of
- /// both fields must be the same.
- /// </summary>
- public int CompareTo(FieldDescriptor other)
- {
- if (other.containingType != containingType)
- {
- throw new ArgumentException("FieldDescriptors can only be compared to other FieldDescriptors " +
- "for fields of the same message type.");
- }
- return FieldNumber - other.FieldNumber;
- }
-
- /// <summary>
- /// For enum fields, returns the field's type.
- /// </summary>
- public EnumDescriptor EnumType
- {
- get
- {
- if (fieldType != FieldType.Enum)
- {
- throw new InvalidOperationException("EnumType is only valid for enum fields.");
- }
- return enumType;
- }
- }
-
- /// <summary>
- /// For embedded message and group fields, returns the field's type.
- /// </summary>
- public MessageDescriptor MessageType
- {
- get
- {
- if (fieldType != FieldType.Message)
- {
- throw new InvalidOperationException("MessageType is only valid for enum fields.");
- }
- return messageType;
- }
- }
-
- /// <summary>
- /// Look up and cross-link all field types etc.
- /// </summary>
- internal void CrossLink()
- {
- if (Proto.TypeName != "")
- {
- IDescriptor typeDescriptor =
- File.DescriptorPool.LookupSymbol(Proto.TypeName, this);
-
- if (Proto.Type != 0)
- {
- // Choose field type based on symbol.
- if (typeDescriptor is MessageDescriptor)
- {
- fieldType = FieldType.Message;
- }
- else if (typeDescriptor is EnumDescriptor)
- {
- fieldType = FieldType.Enum;
- }
- else
- {
- throw new DescriptorValidationException(this, "\"" + Proto.TypeName + "\" is not a type.");
- }
- }
-
- if (fieldType == FieldType.Message)
- {
- if (!(typeDescriptor is MessageDescriptor))
- {
- throw new DescriptorValidationException(this,
- "\"" + Proto.TypeName + "\" is not a message type.");
- }
- messageType = (MessageDescriptor) typeDescriptor;
-
- if (Proto.DefaultValue != "")
- {
- throw new DescriptorValidationException(this, "Messages can't have default values.");
- }
- }
- else if (fieldType == FieldType.Enum)
- {
- if (!(typeDescriptor is EnumDescriptor))
- {
- throw new DescriptorValidationException(this, "\"" + Proto.TypeName + "\" is not an enum type.");
- }
- enumType = (EnumDescriptor) typeDescriptor;
- }
- else
- {
- throw new DescriptorValidationException(this, "Field with primitive type has type_name.");
- }
- }
- else
- {
- if (fieldType == FieldType.Message || fieldType == FieldType.Enum)
- {
- throw new DescriptorValidationException(this, "Field with message or enum type missing type_name.");
- }
- }
-
- // Note: no attempt to perform any default value parsing
-
- File.DescriptorPool.AddFieldByNumber(this);
-
- if (containingType != null && containingType.Proto.Options != null && containingType.Proto.Options.MessageSetWireFormat)
- {
- throw new DescriptorValidationException(this, "MessageSet format is not supported.");
- }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Descriptor for a field or extension within a message in a .proto file.
+ /// </summary>
+ public sealed class FieldDescriptor : DescriptorBase, IComparable<FieldDescriptor>
+ {
+ private readonly FieldDescriptorProto proto;
+ private EnumDescriptor enumType;
+ private MessageDescriptor messageType;
+ private readonly MessageDescriptor containingType;
+ private readonly OneofDescriptor containingOneof;
+ private FieldType fieldType;
+
+ internal FieldDescriptor(FieldDescriptorProto proto, FileDescriptor file,
+ MessageDescriptor parent, int index)
+ : base(file, file.ComputeFullName(parent, proto.Name), index)
+ {
+ this.proto = proto;
+ if (proto.Type != 0)
+ {
+ fieldType = GetFieldTypeFromProtoType(proto.Type);
+ }
+
+ if (FieldNumber <= 0)
+ {
+ throw new DescriptorValidationException(this,
+ "Field numbers must be positive integers.");
+ }
+ containingType = parent;
+ // OneofIndex "defaults" to -1 due to a hack in FieldDescriptor.OnConstruction.
+ if (proto.OneofIndex != -1)
+ {
+ if (proto.OneofIndex < 0 || proto.OneofIndex >= parent.Proto.OneofDecl.Count)
+ {
+ throw new DescriptorValidationException(this,
+ "FieldDescriptorProto.oneof_index is out of range for type " + parent.Name);
+ }
+ containingOneof = parent.Oneofs[proto.OneofIndex];
+ }
+
+ file.DescriptorPool.AddSymbol(this);
+ }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ internal FieldDescriptorProto Proto { get { return proto; } }
+
+ /// <summary>
+ /// Maps a field type as included in the .proto file to a FieldType.
+ /// </summary>
+ private static FieldType GetFieldTypeFromProtoType(FieldDescriptorProto.Types.Type type)
+ {
+ switch (type)
+ {
+ case FieldDescriptorProto.Types.Type.TYPE_DOUBLE:
+ return FieldType.Double;
+ case FieldDescriptorProto.Types.Type.TYPE_FLOAT:
+ return FieldType.Float;
+ case FieldDescriptorProto.Types.Type.TYPE_INT64:
+ return FieldType.Int64;
+ case FieldDescriptorProto.Types.Type.TYPE_UINT64:
+ return FieldType.UInt64;
+ case FieldDescriptorProto.Types.Type.TYPE_INT32:
+ return FieldType.Int32;
+ case FieldDescriptorProto.Types.Type.TYPE_FIXED64:
+ return FieldType.Fixed64;
+ case FieldDescriptorProto.Types.Type.TYPE_FIXED32:
+ return FieldType.Fixed32;
+ case FieldDescriptorProto.Types.Type.TYPE_BOOL:
+ return FieldType.Bool;
+ case FieldDescriptorProto.Types.Type.TYPE_STRING:
+ return FieldType.String;
+ case FieldDescriptorProto.Types.Type.TYPE_GROUP:
+ return FieldType.Group;
+ case FieldDescriptorProto.Types.Type.TYPE_MESSAGE:
+ return FieldType.Message;
+ case FieldDescriptorProto.Types.Type.TYPE_BYTES:
+ return FieldType.Bytes;
+ case FieldDescriptorProto.Types.Type.TYPE_UINT32:
+ return FieldType.UInt32;
+ case FieldDescriptorProto.Types.Type.TYPE_ENUM:
+ return FieldType.Enum;
+ case FieldDescriptorProto.Types.Type.TYPE_SFIXED32:
+ return FieldType.SFixed32;
+ case FieldDescriptorProto.Types.Type.TYPE_SFIXED64:
+ return FieldType.SFixed64;
+ case FieldDescriptorProto.Types.Type.TYPE_SINT32:
+ return FieldType.SInt32;
+ case FieldDescriptorProto.Types.Type.TYPE_SINT64:
+ return FieldType.SInt64;
+ default:
+ throw new ArgumentException("Invalid type specified");
+ }
+ }
+
+ public bool IsRepeated
+ {
+ get { return Proto.Label == FieldDescriptorProto.Types.Label.LABEL_REPEATED; }
+ }
+
+ public bool IsMap
+ {
+ get { return fieldType == FieldType.Message && messageType.Proto.Options != null && messageType.Proto.Options.MapEntry; }
+ }
+
+ public bool IsPacked
+ {
+ get { return Proto.Options != null && Proto.Options.Packed; }
+ }
+
+ /// <summary>
+ /// Get the field's containing type. For extensions, this is the type being
+ /// extended, not the location where the extension was defined. See
+ /// <see cref="ExtensionScope" />.
+ /// </summary>
+ public MessageDescriptor ContainingType
+ {
+ get { return containingType; }
+ }
+
+ public OneofDescriptor ContainingOneof
+ {
+ get { return containingOneof; }
+ }
+
+ public FieldType FieldType
+ {
+ get { return fieldType; }
+ }
+
+ public int FieldNumber
+ {
+ get { return Proto.Number; }
+ }
+
+ /// <summary>
+ /// Compares this descriptor with another one, ordering in "canonical" order
+ /// which simply means ascending order by field number. <paramref name="other"/>
+ /// must be a field of the same type, i.e. the <see cref="ContainingType"/> of
+ /// both fields must be the same.
+ /// </summary>
+ public int CompareTo(FieldDescriptor other)
+ {
+ if (other.containingType != containingType)
+ {
+ throw new ArgumentException("FieldDescriptors can only be compared to other FieldDescriptors " +
+ "for fields of the same message type.");
+ }
+ return FieldNumber - other.FieldNumber;
+ }
+
+ /// <summary>
+ /// For enum fields, returns the field's type.
+ /// </summary>
+ public EnumDescriptor EnumType
+ {
+ get
+ {
+ if (fieldType != FieldType.Enum)
+ {
+ throw new InvalidOperationException("EnumType is only valid for enum fields.");
+ }
+ return enumType;
+ }
+ }
+
+ /// <summary>
+ /// For embedded message and group fields, returns the field's type.
+ /// </summary>
+ public MessageDescriptor MessageType
+ {
+ get
+ {
+ if (fieldType != FieldType.Message)
+ {
+ throw new InvalidOperationException("MessageType is only valid for enum fields.");
+ }
+ return messageType;
+ }
+ }
+
+ /// <summary>
+ /// Look up and cross-link all field types etc.
+ /// </summary>
+ internal void CrossLink()
+ {
+ if (Proto.TypeName != "")
+ {
+ IDescriptor typeDescriptor =
+ File.DescriptorPool.LookupSymbol(Proto.TypeName, this);
+
+ if (Proto.Type != 0)
+ {
+ // Choose field type based on symbol.
+ if (typeDescriptor is MessageDescriptor)
+ {
+ fieldType = FieldType.Message;
+ }
+ else if (typeDescriptor is EnumDescriptor)
+ {
+ fieldType = FieldType.Enum;
+ }
+ else
+ {
+ throw new DescriptorValidationException(this, "\"" + Proto.TypeName + "\" is not a type.");
+ }
+ }
+
+ if (fieldType == FieldType.Message)
+ {
+ if (!(typeDescriptor is MessageDescriptor))
+ {
+ throw new DescriptorValidationException(this,
+ "\"" + Proto.TypeName + "\" is not a message type.");
+ }
+ messageType = (MessageDescriptor) typeDescriptor;
+
+ if (Proto.DefaultValue != "")
+ {
+ throw new DescriptorValidationException(this, "Messages can't have default values.");
+ }
+ }
+ else if (fieldType == FieldType.Enum)
+ {
+ if (!(typeDescriptor is EnumDescriptor))
+ {
+ throw new DescriptorValidationException(this, "\"" + Proto.TypeName + "\" is not an enum type.");
+ }
+ enumType = (EnumDescriptor) typeDescriptor;
+ }
+ else
+ {
+ throw new DescriptorValidationException(this, "Field with primitive type has type_name.");
+ }
+ }
+ else
+ {
+ if (fieldType == FieldType.Message || fieldType == FieldType.Enum)
+ {
+ throw new DescriptorValidationException(this, "Field with message or enum type missing type_name.");
+ }
+ }
+
+ // Note: no attempt to perform any default value parsing
+
+ File.DescriptorPool.AddFieldByNumber(this);
+
+ if (containingType != null && containingType.Proto.Options != null && containingType.Proto.Options.MessageSetWireFormat)
+ {
+ throw new DescriptorValidationException(this, "MessageSet format is not supported.");
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/FieldType.cs b/csharp/src/ProtocolBuffers/Reflection/FieldType.cs
index 69851464..41fa702d 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/FieldType.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/FieldType.cs
@@ -1,60 +1,60 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Enumeration of all the possible field types. The odd formatting is to make it very clear
- /// which attribute applies to which value, while maintaining a compact format.
- /// </summary>
- public enum FieldType
- {
- Double,
- Float,
- Int64,
- UInt64,
- Int32,
- Fixed64,
- Fixed32,
- Bool,
- String,
- Group,
- Message,
- Bytes,
- UInt32,
- SFixed32,
- SFixed64,
- SInt32,
- SInt64,
- Enum
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Enumeration of all the possible field types. The odd formatting is to make it very clear
+ /// which attribute applies to which value, while maintaining a compact format.
+ /// </summary>
+ public enum FieldType
+ {
+ Double,
+ Float,
+ Int64,
+ UInt64,
+ Int32,
+ Fixed64,
+ Fixed32,
+ Bool,
+ String,
+ Group,
+ Message,
+ Bytes,
+ UInt32,
+ SFixed32,
+ SFixed64,
+ SInt32,
+ SInt64,
+ Enum
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/FileDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/FileDescriptor.cs
index 9d0bdfd3..db393480 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/FileDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/FileDescriptor.cs
@@ -1,354 +1,352 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using Google.Protobuf.DescriptorProtos;
-using FileOptions = Google.Protobuf.DescriptorProtos.FileOptions;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Describes a .proto file, including everything defined within.
- /// IDescriptor is implemented such that the File property returns this descriptor,
- /// and the FullName is the same as the Name.
- /// </summary>
- public sealed class FileDescriptor : IDescriptor
- {
- private readonly FileDescriptorProto proto;
- private readonly IList<MessageDescriptor> messageTypes;
- private readonly IList<EnumDescriptor> enumTypes;
- private readonly IList<ServiceDescriptor> services;
- private readonly IList<FileDescriptor> dependencies;
- private readonly IList<FileDescriptor> publicDependencies;
- private readonly DescriptorPool pool;
-
- public enum ProtoSyntax
- {
- Proto2,
- Proto3
- }
-
- public ProtoSyntax Syntax
- {
- get { return proto.Syntax == "proto3" ? ProtoSyntax.Proto3 : ProtoSyntax.Proto2; }
- }
-
- private FileDescriptor(FileDescriptorProto proto, FileDescriptor[] dependencies, DescriptorPool pool, bool allowUnknownDependencies)
- {
- this.pool = pool;
- this.proto = proto;
- this.dependencies = new ReadOnlyCollection<FileDescriptor>((FileDescriptor[]) dependencies.Clone());
-
- publicDependencies = DeterminePublicDependencies(this, proto, dependencies, allowUnknownDependencies);
-
- pool.AddPackage(Package, this);
-
- messageTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.MessageType,
- (message, index) =>
- new MessageDescriptor(message, this, null, index));
-
- enumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumType,
- (enumType, index) =>
- new EnumDescriptor(enumType, this, null, index));
-
- services = DescriptorUtil.ConvertAndMakeReadOnly(proto.Service,
- (service, index) =>
- new ServiceDescriptor(service, this, index));
- }
-
- /// <summary>
- /// Computes the full name of a descriptor within this file, with an optional parent message.
- /// </summary>
- internal string ComputeFullName(MessageDescriptor parent, string name)
- {
- if (parent != null)
- {
- return parent.FullName + "." + name;
- }
- if (Package.Length > 0)
- {
- return Package + "." + name;
- }
- return name;
- }
-
- /// <summary>
- /// Extracts public dependencies from direct dependencies. This is a static method despite its
- /// first parameter, as the value we're in the middle of constructing is only used for exceptions.
- /// </summary>
- private static IList<FileDescriptor> DeterminePublicDependencies(FileDescriptor @this, FileDescriptorProto proto, FileDescriptor[] dependencies, bool allowUnknownDependencies)
- {
- var nameToFileMap = new Dictionary<string, FileDescriptor>();
- foreach (var file in dependencies)
- {
- nameToFileMap[file.Name] = file;
- }
- var publicDependencies = new List<FileDescriptor>();
- for (int i = 0; i < proto.PublicDependency.Count; i++)
- {
- int index = proto.PublicDependency[i];
- if (index < 0 || index >= proto.Dependency.Count)
- {
- throw new DescriptorValidationException(@this, "Invalid public dependency index.");
- }
- string name = proto.Dependency[index];
- FileDescriptor file = nameToFileMap[name];
- if (file == null)
- {
- if (!allowUnknownDependencies)
- {
- throw new DescriptorValidationException(@this, "Invalid public dependency: " + name);
- }
- // Ignore unknown dependencies.
- }
- else
- {
- publicDependencies.Add(file);
- }
- }
- return new ReadOnlyCollection<FileDescriptor>(publicDependencies);
- }
-
- /// <value>
- /// The descriptor in its protocol message representation.
- /// </value>
- internal FileDescriptorProto Proto
- {
- get { return proto; }
- }
-
- /// <value>
- /// The file name.
- /// </value>
- public string Name
- {
- get { return proto.Name; }
- }
-
- /// <summary>
- /// The package as declared in the .proto file. This may or may not
- /// be equivalent to the .NET namespace of the generated classes.
- /// </summary>
- public string Package
- {
- get { return proto.Package; }
- }
-
- /// <value>
- /// Unmodifiable list of top-level message types declared in this file.
- /// </value>
- public IList<MessageDescriptor> MessageTypes
- {
- get { return messageTypes; }
- }
-
- /// <value>
- /// Unmodifiable list of top-level enum types declared in this file.
- /// </value>
- public IList<EnumDescriptor> EnumTypes
- {
- get { return enumTypes; }
- }
-
- /// <value>
- /// Unmodifiable list of top-level services declared in this file.
- /// </value>
- public IList<ServiceDescriptor> Services
- {
- get { return services; }
- }
-
- /// <value>
- /// Unmodifiable list of this file's dependencies (imports).
- /// </value>
- public IList<FileDescriptor> Dependencies
- {
- get { return dependencies; }
- }
-
- /// <value>
- /// Unmodifiable list of this file's public dependencies (public imports).
- /// </value>
- public IList<FileDescriptor> PublicDependencies
- {
- get { return publicDependencies; }
- }
-
- /// <value>
- /// Implementation of IDescriptor.FullName - just returns the same as Name.
- /// </value>
- string IDescriptor.FullName
- {
- get { return Name; }
- }
-
- /// <value>
- /// Implementation of IDescriptor.File - just returns this descriptor.
- /// </value>
- FileDescriptor IDescriptor.File
- {
- get { return this; }
- }
-
- /// <value>
- /// Pool containing symbol descriptors.
- /// </value>
- internal DescriptorPool DescriptorPool
- {
- get { return pool; }
- }
-
- /// <summary>
- /// Finds a type (message, enum, service or extension) in the file by name. Does not find nested types.
- /// </summary>
- /// <param name="name">The unqualified type name to look for.</param>
- /// <typeparam name="T">The type of descriptor to look for (or ITypeDescriptor for any)</typeparam>
- /// <returns>The type's descriptor, or null if not found.</returns>
- public T FindTypeByName<T>(String name)
- where T : class, IDescriptor
- {
- // Don't allow looking up nested types. This will make optimization
- // easier later.
- if (name.IndexOf('.') != -1)
- {
- return null;
- }
- if (Package.Length > 0)
- {
- name = Package + "." + name;
- }
- T result = pool.FindSymbol<T>(name);
- if (result != null && result.File == this)
- {
- return result;
- }
- return null;
- }
-
- /// <summary>
- /// Builds a FileDescriptor from its protocol buffer representation.
- /// </summary>
- /// <param name="proto">The protocol message form of the FileDescriptor.</param>
- /// <param name="dependencies">FileDescriptors corresponding to all of the
- /// file's dependencies, in the exact order listed in the .proto file. May be null,
- /// in which case it is treated as an empty array.</param>
- /// <param name="allowUnknownDependencies">Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false).</param>
- /// <exception cref="DescriptorValidationException">If <paramref name="proto"/> is not
- /// a valid descriptor. This can occur for a number of reasons, such as a field
- /// having an undefined type or because two messages were defined with the same name.</exception>
- private static FileDescriptor BuildFrom(FileDescriptorProto proto, FileDescriptor[] dependencies, bool allowUnknownDependencies)
- {
- // Building descriptors involves two steps: translating and linking.
- // In the translation step (implemented by FileDescriptor's
- // constructor), we build an object tree mirroring the
- // FileDescriptorProto's tree and put all of the descriptors into the
- // DescriptorPool's lookup tables. In the linking step, we look up all
- // type references in the DescriptorPool, so that, for example, a
- // FieldDescriptor for an embedded message contains a pointer directly
- // to the Descriptor for that message's type. We also detect undefined
- // types in the linking step.
- if (dependencies == null)
- {
- dependencies = new FileDescriptor[0];
- }
-
- DescriptorPool pool = new DescriptorPool(dependencies);
- FileDescriptor result = new FileDescriptor(proto, dependencies, pool, allowUnknownDependencies);
-
- // TODO(jonskeet): Reinstate these checks, or get rid of them entirely. They aren't in the Java code,
- // and fail for the CustomOptions test right now. (We get "descriptor.proto" vs "google/protobuf/descriptor.proto".)
- //if (dependencies.Length != proto.DependencyCount)
- //{
- // throw new DescriptorValidationException(result,
- // "Dependencies passed to FileDescriptor.BuildFrom() don't match " +
- // "those listed in the FileDescriptorProto.");
- //}
- //for (int i = 0; i < proto.DependencyCount; i++)
- //{
- // if (dependencies[i].Name != proto.DependencyList[i])
- // {
- // throw new DescriptorValidationException(result,
- // "Dependencies passed to FileDescriptor.BuildFrom() don't match " +
- // "those listed in the FileDescriptorProto.");
- // }
- //}
-
- result.CrossLink();
- return result;
- }
-
- private void CrossLink()
- {
- foreach (MessageDescriptor message in messageTypes)
- {
- message.CrossLink();
- }
-
- foreach (ServiceDescriptor service in services)
- {
- service.CrossLink();
- }
- }
-
- public static FileDescriptor InternalBuildGeneratedFileFrom(byte[] descriptorData,
- FileDescriptor[] dependencies)
- {
- FileDescriptorProto proto;
- try
- {
- proto = FileDescriptorProto.Parser.ParseFrom(descriptorData);
- }
- catch (InvalidProtocolBufferException e)
- {
- throw new ArgumentException("Failed to parse protocol buffer descriptor for generated code.", e);
- }
-
- try
- {
- // When building descriptors for generated code, we allow unknown
- // dependencies by default.
- return BuildFrom(proto, dependencies, true);
- }
- catch (DescriptorValidationException e)
- {
- throw new ArgumentException("Invalid embedded descriptor for \"" + proto.Name + "\".", e);
- }
- }
-
- public override string ToString()
- {
- return "FileDescriptor for " + proto.Name;
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Describes a .proto file, including everything defined within.
+ /// IDescriptor is implemented such that the File property returns this descriptor,
+ /// and the FullName is the same as the Name.
+ /// </summary>
+ public sealed class FileDescriptor : IDescriptor
+ {
+ private readonly FileDescriptorProto proto;
+ private readonly IList<MessageDescriptor> messageTypes;
+ private readonly IList<EnumDescriptor> enumTypes;
+ private readonly IList<ServiceDescriptor> services;
+ private readonly IList<FileDescriptor> dependencies;
+ private readonly IList<FileDescriptor> publicDependencies;
+ private readonly DescriptorPool pool;
+
+ public enum ProtoSyntax
+ {
+ Proto2,
+ Proto3
+ }
+
+ public ProtoSyntax Syntax
+ {
+ get { return proto.Syntax == "proto3" ? ProtoSyntax.Proto3 : ProtoSyntax.Proto2; }
+ }
+
+ private FileDescriptor(FileDescriptorProto proto, FileDescriptor[] dependencies, DescriptorPool pool, bool allowUnknownDependencies)
+ {
+ this.pool = pool;
+ this.proto = proto;
+ this.dependencies = new ReadOnlyCollection<FileDescriptor>((FileDescriptor[]) dependencies.Clone());
+
+ publicDependencies = DeterminePublicDependencies(this, proto, dependencies, allowUnknownDependencies);
+
+ pool.AddPackage(Package, this);
+
+ messageTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.MessageType,
+ (message, index) =>
+ new MessageDescriptor(message, this, null, index));
+
+ enumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumType,
+ (enumType, index) =>
+ new EnumDescriptor(enumType, this, null, index));
+
+ services = DescriptorUtil.ConvertAndMakeReadOnly(proto.Service,
+ (service, index) =>
+ new ServiceDescriptor(service, this, index));
+ }
+
+ /// <summary>
+ /// Computes the full name of a descriptor within this file, with an optional parent message.
+ /// </summary>
+ internal string ComputeFullName(MessageDescriptor parent, string name)
+ {
+ if (parent != null)
+ {
+ return parent.FullName + "." + name;
+ }
+ if (Package.Length > 0)
+ {
+ return Package + "." + name;
+ }
+ return name;
+ }
+
+ /// <summary>
+ /// Extracts public dependencies from direct dependencies. This is a static method despite its
+ /// first parameter, as the value we're in the middle of constructing is only used for exceptions.
+ /// </summary>
+ private static IList<FileDescriptor> DeterminePublicDependencies(FileDescriptor @this, FileDescriptorProto proto, FileDescriptor[] dependencies, bool allowUnknownDependencies)
+ {
+ var nameToFileMap = new Dictionary<string, FileDescriptor>();
+ foreach (var file in dependencies)
+ {
+ nameToFileMap[file.Name] = file;
+ }
+ var publicDependencies = new List<FileDescriptor>();
+ for (int i = 0; i < proto.PublicDependency.Count; i++)
+ {
+ int index = proto.PublicDependency[i];
+ if (index < 0 || index >= proto.Dependency.Count)
+ {
+ throw new DescriptorValidationException(@this, "Invalid public dependency index.");
+ }
+ string name = proto.Dependency[index];
+ FileDescriptor file = nameToFileMap[name];
+ if (file == null)
+ {
+ if (!allowUnknownDependencies)
+ {
+ throw new DescriptorValidationException(@this, "Invalid public dependency: " + name);
+ }
+ // Ignore unknown dependencies.
+ }
+ else
+ {
+ publicDependencies.Add(file);
+ }
+ }
+ return new ReadOnlyCollection<FileDescriptor>(publicDependencies);
+ }
+
+ /// <value>
+ /// The descriptor in its protocol message representation.
+ /// </value>
+ internal FileDescriptorProto Proto
+ {
+ get { return proto; }
+ }
+
+ /// <value>
+ /// The file name.
+ /// </value>
+ public string Name
+ {
+ get { return proto.Name; }
+ }
+
+ /// <summary>
+ /// The package as declared in the .proto file. This may or may not
+ /// be equivalent to the .NET namespace of the generated classes.
+ /// </summary>
+ public string Package
+ {
+ get { return proto.Package; }
+ }
+
+ /// <value>
+ /// Unmodifiable list of top-level message types declared in this file.
+ /// </value>
+ public IList<MessageDescriptor> MessageTypes
+ {
+ get { return messageTypes; }
+ }
+
+ /// <value>
+ /// Unmodifiable list of top-level enum types declared in this file.
+ /// </value>
+ public IList<EnumDescriptor> EnumTypes
+ {
+ get { return enumTypes; }
+ }
+
+ /// <value>
+ /// Unmodifiable list of top-level services declared in this file.
+ /// </value>
+ public IList<ServiceDescriptor> Services
+ {
+ get { return services; }
+ }
+
+ /// <value>
+ /// Unmodifiable list of this file's dependencies (imports).
+ /// </value>
+ public IList<FileDescriptor> Dependencies
+ {
+ get { return dependencies; }
+ }
+
+ /// <value>
+ /// Unmodifiable list of this file's public dependencies (public imports).
+ /// </value>
+ public IList<FileDescriptor> PublicDependencies
+ {
+ get { return publicDependencies; }
+ }
+
+ /// <value>
+ /// Implementation of IDescriptor.FullName - just returns the same as Name.
+ /// </value>
+ string IDescriptor.FullName
+ {
+ get { return Name; }
+ }
+
+ /// <value>
+ /// Implementation of IDescriptor.File - just returns this descriptor.
+ /// </value>
+ FileDescriptor IDescriptor.File
+ {
+ get { return this; }
+ }
+
+ /// <value>
+ /// Pool containing symbol descriptors.
+ /// </value>
+ internal DescriptorPool DescriptorPool
+ {
+ get { return pool; }
+ }
+
+ /// <summary>
+ /// Finds a type (message, enum, service or extension) in the file by name. Does not find nested types.
+ /// </summary>
+ /// <param name="name">The unqualified type name to look for.</param>
+ /// <typeparam name="T">The type of descriptor to look for (or ITypeDescriptor for any)</typeparam>
+ /// <returns>The type's descriptor, or null if not found.</returns>
+ public T FindTypeByName<T>(String name)
+ where T : class, IDescriptor
+ {
+ // Don't allow looking up nested types. This will make optimization
+ // easier later.
+ if (name.IndexOf('.') != -1)
+ {
+ return null;
+ }
+ if (Package.Length > 0)
+ {
+ name = Package + "." + name;
+ }
+ T result = pool.FindSymbol<T>(name);
+ if (result != null && result.File == this)
+ {
+ return result;
+ }
+ return null;
+ }
+
+ /// <summary>
+ /// Builds a FileDescriptor from its protocol buffer representation.
+ /// </summary>
+ /// <param name="proto">The protocol message form of the FileDescriptor.</param>
+ /// <param name="dependencies">FileDescriptors corresponding to all of the
+ /// file's dependencies, in the exact order listed in the .proto file. May be null,
+ /// in which case it is treated as an empty array.</param>
+ /// <param name="allowUnknownDependencies">Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false).</param>
+ /// <exception cref="DescriptorValidationException">If <paramref name="proto"/> is not
+ /// a valid descriptor. This can occur for a number of reasons, such as a field
+ /// having an undefined type or because two messages were defined with the same name.</exception>
+ private static FileDescriptor BuildFrom(FileDescriptorProto proto, FileDescriptor[] dependencies, bool allowUnknownDependencies)
+ {
+ // Building descriptors involves two steps: translating and linking.
+ // In the translation step (implemented by FileDescriptor's
+ // constructor), we build an object tree mirroring the
+ // FileDescriptorProto's tree and put all of the descriptors into the
+ // DescriptorPool's lookup tables. In the linking step, we look up all
+ // type references in the DescriptorPool, so that, for example, a
+ // FieldDescriptor for an embedded message contains a pointer directly
+ // to the Descriptor for that message's type. We also detect undefined
+ // types in the linking step.
+ if (dependencies == null)
+ {
+ dependencies = new FileDescriptor[0];
+ }
+
+ DescriptorPool pool = new DescriptorPool(dependencies);
+ FileDescriptor result = new FileDescriptor(proto, dependencies, pool, allowUnknownDependencies);
+
+ // TODO(jonskeet): Reinstate these checks, or get rid of them entirely. They aren't in the Java code,
+ // and fail for the CustomOptions test right now. (We get "descriptor.proto" vs "google/protobuf/descriptor.proto".)
+ //if (dependencies.Length != proto.DependencyCount)
+ //{
+ // throw new DescriptorValidationException(result,
+ // "Dependencies passed to FileDescriptor.BuildFrom() don't match " +
+ // "those listed in the FileDescriptorProto.");
+ //}
+ //for (int i = 0; i < proto.DependencyCount; i++)
+ //{
+ // if (dependencies[i].Name != proto.DependencyList[i])
+ // {
+ // throw new DescriptorValidationException(result,
+ // "Dependencies passed to FileDescriptor.BuildFrom() don't match " +
+ // "those listed in the FileDescriptorProto.");
+ // }
+ //}
+
+ result.CrossLink();
+ return result;
+ }
+
+ private void CrossLink()
+ {
+ foreach (MessageDescriptor message in messageTypes)
+ {
+ message.CrossLink();
+ }
+
+ foreach (ServiceDescriptor service in services)
+ {
+ service.CrossLink();
+ }
+ }
+
+ public static FileDescriptor InternalBuildGeneratedFileFrom(byte[] descriptorData,
+ FileDescriptor[] dependencies)
+ {
+ FileDescriptorProto proto;
+ try
+ {
+ proto = FileDescriptorProto.Parser.ParseFrom(descriptorData);
+ }
+ catch (InvalidProtocolBufferException e)
+ {
+ throw new ArgumentException("Failed to parse protocol buffer descriptor for generated code.", e);
+ }
+
+ try
+ {
+ // When building descriptors for generated code, we allow unknown
+ // dependencies by default.
+ return BuildFrom(proto, dependencies, true);
+ }
+ catch (DescriptorValidationException e)
+ {
+ throw new ArgumentException("Invalid embedded descriptor for \"" + proto.Name + "\".", e);
+ }
+ }
+
+ public override string ToString()
+ {
+ return "FileDescriptor for " + proto.Name;
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/IDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/IDescriptor.cs
index 92c6d463..6506db1b 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/IDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/IDescriptor.cs
@@ -1,44 +1,44 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Interface implemented by all descriptor types.
- /// </summary>
- public interface IDescriptor
- {
- string Name { get; }
- string FullName { get; }
- FileDescriptor File { get; }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Interface implemented by all descriptor types.
+ /// </summary>
+ public interface IDescriptor
+ {
+ string Name { get; }
+ string FullName { get; }
+ FileDescriptor File { get; }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/IFieldAccessor.cs b/csharp/src/ProtocolBuffers/Reflection/IFieldAccessor.cs
index 77e7146d..3f4f05f4 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/IFieldAccessor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/IFieldAccessor.cs
@@ -1,70 +1,70 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using Google.Protobuf.Descriptors;
-
-namespace Google.Protobuf.FieldAccess
-{
- /// <summary>
- /// Allows fields to be reflectively accessed.
- /// </summary>
- public interface IFieldAccessor
- {
- /// <summary>
- /// Returns the descriptor associated with this field.
- /// </summary>
- FieldDescriptor Descriptor { get; }
-
- /// <summary>
- /// Clears the field in the specified message. (For repeated fields,
- /// this clears the list.)
- /// </summary>
- void Clear(object message);
-
- /// <summary>
- /// Fetches the field value. For repeated values, this will be an
- /// <see cref="IList"/> implementation. For map values, this will be an
- /// <see cref="IDictionary"/> implementation.
- /// </summary>
- object GetValue(object message);
-
- /// <summary>
- /// Mutator for single "simple" fields only.
- /// </summary>
- /// <remarks>
- /// Repeated fields are mutated by fetching the value and manipulating it as a list.
- /// Map fields are mutated by fetching the value and manipulating it as a dictionary.
- /// </remarks>
- /// <exception cref="InvalidOperationException">The field is not a "simple" field, or the message is frozen.</exception>
- void SetValue(object message, object value);
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Allows fields to be reflectively accessed.
+ /// </summary>
+ public interface IFieldAccessor
+ {
+ /// <summary>
+ /// Returns the descriptor associated with this field.
+ /// </summary>
+ FieldDescriptor Descriptor { get; }
+
+ // TODO: Should the argument type for these messages be IReflectedMessage?
+
+ /// <summary>
+ /// Clears the field in the specified message. (For repeated fields,
+ /// this clears the list.)
+ /// </summary>
+ void Clear(object message);
+
+ /// <summary>
+ /// Fetches the field value. For repeated values, this will be an
+ /// <see cref="IList"/> implementation. For map values, this will be an
+ /// <see cref="IDictionary"/> implementation.
+ /// </summary>
+ object GetValue(object message);
+
+ /// <summary>
+ /// Mutator for single "simple" fields only.
+ /// </summary>
+ /// <remarks>
+ /// Repeated fields are mutated by fetching the value and manipulating it as a list.
+ /// Map fields are mutated by fetching the value and manipulating it as a dictionary.
+ /// </remarks>
+ /// <exception cref="InvalidOperationException">The field is not a "simple" field, or the message is frozen.</exception>
+ void SetValue(object message, object value);
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/MapFieldAccessor.cs b/csharp/src/ProtocolBuffers/Reflection/MapFieldAccessor.cs
index 100dbb37..317fbd8d 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/MapFieldAccessor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/MapFieldAccessor.cs
@@ -32,9 +32,8 @@
using System;
using System.Collections;
-using Google.Protobuf.Descriptors;
-namespace Google.Protobuf.FieldAccess
+namespace Google.Protobuf.Reflection
{
/// <summary>
/// Accessor for map fields.
diff --git a/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/MessageDescriptor.cs
index e65e8bb0..b6351d36 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/MessageDescriptor.cs
@@ -1,173 +1,172 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Describes a message type.
- /// </summary>
- public sealed class MessageDescriptor : DescriptorBase
- {
- private readonly DescriptorProto proto;
- private readonly MessageDescriptor containingType;
- private readonly IList<MessageDescriptor> nestedTypes;
- private readonly IList<EnumDescriptor> enumTypes;
- private readonly IList<FieldDescriptor> fields;
- private readonly IList<OneofDescriptor> oneofs;
-
- internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex)
- : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
- {
- this.proto = proto;
- containingType = parent;
-
- oneofs = DescriptorUtil.ConvertAndMakeReadOnly(proto.OneofDecl,
- (oneof, index) =>
- new OneofDescriptor(oneof, file, this, index));
-
- nestedTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.NestedType,
- (type, index) =>
- new MessageDescriptor(type, file, this, index));
-
- enumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumType,
- (type, index) =>
- new EnumDescriptor(type, file, this, index));
-
- // TODO(jonskeet): Sort fields first?
- fields = DescriptorUtil.ConvertAndMakeReadOnly(proto.Field,
- (field, index) =>
- new FieldDescriptor(field, file, this, index));
- file.DescriptorPool.AddSymbol(this);
- }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- internal DescriptorProto Proto { get { return proto; } }
-
- /// <value>
- /// If this is a nested type, get the outer descriptor, otherwise null.
- /// </value>
- public MessageDescriptor ContainingType
- {
- get { return containingType; }
- }
-
- /// <value>
- /// An unmodifiable list of this message type's fields.
- /// </value>
- public IList<FieldDescriptor> Fields
- {
- get { return fields; }
- }
-
- /// <value>
- /// An unmodifiable list of this message type's nested types.
- /// </value>
- public IList<MessageDescriptor> NestedTypes
- {
- get { return nestedTypes; }
- }
-
- /// <value>
- /// An unmodifiable list of this message type's enum types.
- /// </value>
- public IList<EnumDescriptor> EnumTypes
- {
- get { return enumTypes; }
- }
-
- public IList<OneofDescriptor> Oneofs
- {
- get { return oneofs; }
- }
-
- /// <summary>
- /// Finds a field by field name.
- /// </summary>
- /// <param name="name">The unqualified name of the field (e.g. "foo").</param>
- /// <returns>The field's descriptor, or null if not found.</returns>
- public FieldDescriptor FindFieldByName(String name)
- {
- return File.DescriptorPool.FindSymbol<FieldDescriptor>(FullName + "." + name);
- }
-
- /// <summary>
- /// Finds a field by field number.
- /// </summary>
- /// <param name="number">The field number within this message type.</param>
- /// <returns>The field's descriptor, or null if not found.</returns>
- public FieldDescriptor FindFieldByNumber(int number)
- {
- return File.DescriptorPool.FindFieldByNumber(this, number);
- }
-
- /// <summary>
- /// Finds a nested descriptor by name. The is valid for fields, nested
- /// message types, oneofs and enums.
- /// </summary>
- /// <param name="name">The unqualified name of the descriptor, e.g. "Foo"</param>
- /// <returns>The descriptor, or null if not found.</returns>
- public T FindDescriptor<T>(string name)
- where T : class, IDescriptor
- {
- return File.DescriptorPool.FindSymbol<T>(FullName + "." + name);
- }
-
- /// <summary>
- /// Looks up and cross-links all fields and nested types.
- /// </summary>
- internal void CrossLink()
- {
- foreach (MessageDescriptor message in nestedTypes)
- {
- message.CrossLink();
- }
-
- foreach (FieldDescriptor field in fields)
- {
- field.CrossLink();
- }
-
- foreach (OneofDescriptor oneof in oneofs)
- {
- oneof.CrossLink();
- }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Describes a message type.
+ /// </summary>
+ public sealed class MessageDescriptor : DescriptorBase
+ {
+ private readonly DescriptorProto proto;
+ private readonly MessageDescriptor containingType;
+ private readonly IList<MessageDescriptor> nestedTypes;
+ private readonly IList<EnumDescriptor> enumTypes;
+ private readonly IList<FieldDescriptor> fields;
+ private readonly IList<OneofDescriptor> oneofs;
+
+ internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex)
+ : base(file, file.ComputeFullName(parent, proto.Name), typeIndex)
+ {
+ this.proto = proto;
+ containingType = parent;
+
+ oneofs = DescriptorUtil.ConvertAndMakeReadOnly(proto.OneofDecl,
+ (oneof, index) =>
+ new OneofDescriptor(oneof, file, this, index));
+
+ nestedTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.NestedType,
+ (type, index) =>
+ new MessageDescriptor(type, file, this, index));
+
+ enumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumType,
+ (type, index) =>
+ new EnumDescriptor(type, file, this, index));
+
+ // TODO(jonskeet): Sort fields first?
+ fields = DescriptorUtil.ConvertAndMakeReadOnly(proto.Field,
+ (field, index) =>
+ new FieldDescriptor(field, file, this, index));
+ file.DescriptorPool.AddSymbol(this);
+ }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ internal DescriptorProto Proto { get { return proto; } }
+
+ /// <value>
+ /// If this is a nested type, get the outer descriptor, otherwise null.
+ /// </value>
+ public MessageDescriptor ContainingType
+ {
+ get { return containingType; }
+ }
+
+ /// <value>
+ /// An unmodifiable list of this message type's fields.
+ /// </value>
+ public IList<FieldDescriptor> Fields
+ {
+ get { return fields; }
+ }
+
+ /// <value>
+ /// An unmodifiable list of this message type's nested types.
+ /// </value>
+ public IList<MessageDescriptor> NestedTypes
+ {
+ get { return nestedTypes; }
+ }
+
+ /// <value>
+ /// An unmodifiable list of this message type's enum types.
+ /// </value>
+ public IList<EnumDescriptor> EnumTypes
+ {
+ get { return enumTypes; }
+ }
+
+ public IList<OneofDescriptor> Oneofs
+ {
+ get { return oneofs; }
+ }
+
+ /// <summary>
+ /// Finds a field by field name.
+ /// </summary>
+ /// <param name="name">The unqualified name of the field (e.g. "foo").</param>
+ /// <returns>The field's descriptor, or null if not found.</returns>
+ public FieldDescriptor FindFieldByName(String name)
+ {
+ return File.DescriptorPool.FindSymbol<FieldDescriptor>(FullName + "." + name);
+ }
+
+ /// <summary>
+ /// Finds a field by field number.
+ /// </summary>
+ /// <param name="number">The field number within this message type.</param>
+ /// <returns>The field's descriptor, or null if not found.</returns>
+ public FieldDescriptor FindFieldByNumber(int number)
+ {
+ return File.DescriptorPool.FindFieldByNumber(this, number);
+ }
+
+ /// <summary>
+ /// Finds a nested descriptor by name. The is valid for fields, nested
+ /// message types, oneofs and enums.
+ /// </summary>
+ /// <param name="name">The unqualified name of the descriptor, e.g. "Foo"</param>
+ /// <returns>The descriptor, or null if not found.</returns>
+ public T FindDescriptor<T>(string name)
+ where T : class, IDescriptor
+ {
+ return File.DescriptorPool.FindSymbol<T>(FullName + "." + name);
+ }
+
+ /// <summary>
+ /// Looks up and cross-links all fields and nested types.
+ /// </summary>
+ internal void CrossLink()
+ {
+ foreach (MessageDescriptor message in nestedTypes)
+ {
+ message.CrossLink();
+ }
+
+ foreach (FieldDescriptor field in fields)
+ {
+ field.CrossLink();
+ }
+
+ foreach (OneofDescriptor oneof in oneofs)
+ {
+ oneof.CrossLink();
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/Descriptors/MethodDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/MethodDescriptor.cs
index 7d4a6f4f..0c9c6949 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/MethodDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/MethodDescriptor.cs
@@ -1,95 +1,93 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Describes a single method in a service.
- /// </summary>
- public sealed class MethodDescriptor : DescriptorBase
- {
- private readonly MethodDescriptorProto proto;
- private readonly ServiceDescriptor service;
- private MessageDescriptor inputType;
- private MessageDescriptor outputType;
-
- /// <value>
- /// The service this method belongs to.
- /// </value>
- public ServiceDescriptor Service { get { return service; } }
-
- /// <value>
- /// The method's input type.
- /// </value>
- public MessageDescriptor InputType { get { return inputType; } }
-
- /// <value>
- /// The method's input type.
- /// </value>
- public MessageDescriptor OutputType { get { return outputType; } }
-
- internal MethodDescriptor(MethodDescriptorProto proto, FileDescriptor file,
- ServiceDescriptor parent, int index)
- : base(file, parent.FullName + "." + proto.Name, index)
- {
- this.proto = proto;
- service = parent;
- file.DescriptorPool.AddSymbol(this);
- }
-
- internal MethodDescriptorProto Proto { get { return proto; } }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- internal void CrossLink()
- {
- IDescriptor lookup = File.DescriptorPool.LookupSymbol(Proto.InputType, this);
- if (!(lookup is MessageDescriptor))
- {
- throw new DescriptorValidationException(this, "\"" + Proto.InputType + "\" is not a message type.");
- }
- inputType = (MessageDescriptor) lookup;
-
- lookup = File.DescriptorPool.LookupSymbol(Proto.OutputType, this);
- if (!(lookup is MessageDescriptor))
- {
- throw new DescriptorValidationException(this, "\"" + Proto.OutputType + "\" is not a message type.");
- }
- outputType = (MessageDescriptor) lookup;
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Describes a single method in a service.
+ /// </summary>
+ public sealed class MethodDescriptor : DescriptorBase
+ {
+ private readonly MethodDescriptorProto proto;
+ private readonly ServiceDescriptor service;
+ private MessageDescriptor inputType;
+ private MessageDescriptor outputType;
+
+ /// <value>
+ /// The service this method belongs to.
+ /// </value>
+ public ServiceDescriptor Service { get { return service; } }
+
+ /// <value>
+ /// The method's input type.
+ /// </value>
+ public MessageDescriptor InputType { get { return inputType; } }
+
+ /// <value>
+ /// The method's input type.
+ /// </value>
+ public MessageDescriptor OutputType { get { return outputType; } }
+
+ internal MethodDescriptor(MethodDescriptorProto proto, FileDescriptor file,
+ ServiceDescriptor parent, int index)
+ : base(file, parent.FullName + "." + proto.Name, index)
+ {
+ this.proto = proto;
+ service = parent;
+ file.DescriptorPool.AddSymbol(this);
+ }
+
+ internal MethodDescriptorProto Proto { get { return proto; } }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ internal void CrossLink()
+ {
+ IDescriptor lookup = File.DescriptorPool.LookupSymbol(Proto.InputType, this);
+ if (!(lookup is MessageDescriptor))
+ {
+ throw new DescriptorValidationException(this, "\"" + Proto.InputType + "\" is not a message type.");
+ }
+ inputType = (MessageDescriptor) lookup;
+
+ lookup = File.DescriptorPool.LookupSymbol(Proto.OutputType, this);
+ if (!(lookup is MessageDescriptor))
+ {
+ throw new DescriptorValidationException(this, "\"" + Proto.OutputType + "\" is not a message type.");
+ }
+ outputType = (MessageDescriptor) lookup;
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs b/csharp/src/ProtocolBuffers/Reflection/OneofAccessor.cs
index feaa6232..7a11d36b 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/OneofAccessor.cs
@@ -1,91 +1,85 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2015 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-namespace Google.Protobuf.FieldAccess
-{
- // TODO(jonskeet): Add "new" oneof API support
-
- /// <summary>
- /// Access for an oneof
- /// </summary>
- internal class OneofAccessor<TMessage> where TMessage : IMessage<TMessage>
- {
- /*
- private readonly Func<TMessage, object> caseDelegate;
- private readonly Func<TBuilder, IBuilder> clearDelegate;
- private MessageDescriptor descriptor;
-
- internal OneofAccessor(MessageDescriptor descriptor, string name)
- {
- this.descriptor = descriptor;
- MethodInfo clearMethod = typeof(TBuilder).GetMethod("Clear" + name);
- PropertyInfo caseProperty = typeof(TMessage).GetProperty(name + "Case");
- if (clearMethod == null || caseProperty == null)
- {
- throw new ArgumentException("Not all required properties/methods available for oneof");
- }
-
-
- clearDelegate = ReflectionUtil.CreateDelegateFunc<TBuilder, IBuilder>(clearMethod);
- caseDelegate = ReflectionUtil.CreateUpcastDelegate<TMessage>(caseProperty.GetGetMethod());
- }
-
- /// <summary>
- /// Indicates whether the specified message has set any field in the oneof.
- /// </summary>
- public bool Has(TMessage message)
- {
- return ((int) caseDelegate(message) != 0);
- }
-
- /// <summary>
- /// Clears the oneof in the specified builder.
- /// </summary>
- public void Clear(TBuilder builder)
- {
- clearDelegate(builder);
- }
-
- /// <summary>
- /// Indicates which field in the oneof is set for specified message
- /// </summary>
- public virtual FieldDescriptor GetOneofFieldDescriptor(TMessage message)
- {
- int fieldNumber = (int) caseDelegate(message);
- if (fieldNumber > 0)
- {
- return descriptor.FindFieldByNumber(fieldNumber);
- }
- return null;
- }*/
- }
-}
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2015 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Reflection;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Reflection access for a oneof, allowing clear and "get case" actions.
+ /// </summary>
+ public sealed class OneofAccessor
+ {
+ private readonly Func<object, int> caseDelegate;
+ private readonly Action<object> clearDelegate;
+ private OneofDescriptor descriptor;
+
+ internal OneofAccessor(Type type, string propertyName, OneofDescriptor descriptor)
+ {
+ PropertyInfo property = type.GetProperty(propertyName + "Case");
+ if (property == null || !property.CanRead)
+ {
+ throw new ArgumentException("Not all required properties/methods available");
+ }
+ this.descriptor = descriptor;
+ caseDelegate = ReflectionUtil.CreateFuncObjectT<int>(property.GetGetMethod());
+
+ this.descriptor = descriptor;
+ MethodInfo clearMethod = type.GetMethod("Clear" + propertyName);
+ clearDelegate = ReflectionUtil.CreateActionObject(clearMethod);
+ }
+
+ public OneofDescriptor Descriptor { get { return descriptor; } }
+
+ /// <summary>
+ /// Clears the oneof in the specified message.
+ /// </summary>
+ public void Clear(object message)
+ {
+ clearDelegate(message);
+ }
+
+ /// <summary>
+ /// Indicates which field in the oneof is set for specified message
+ /// </summary>
+ public FieldDescriptor GetCaseFieldDescriptor(object message)
+ {
+ int fieldNumber = caseDelegate(message);
+ if (fieldNumber > 0)
+ {
+ return descriptor.ContainingType.FindFieldByNumber(fieldNumber);
+ }
+ return null;
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/OneofDescriptor.cs
index 8418948f..e92dc8bb 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/OneofDescriptor.cs
@@ -1,79 +1,78 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2015 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- public sealed class OneofDescriptor : DescriptorBase
- {
- private readonly OneofDescriptorProto proto;
- private MessageDescriptor containingType;
- private IList<FieldDescriptor> fields;
-
- internal OneofDescriptor(OneofDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index)
- : base(file, file.ComputeFullName(parent, proto.Name), index)
- {
- this.proto = proto;
- containingType = parent;
-
- file.DescriptorPool.AddSymbol(this);
- }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- public MessageDescriptor ContainingType
- {
- get { return containingType; }
- }
-
- public IList<FieldDescriptor> Fields { get { return fields; } }
-
- internal void CrossLink()
- {
- List<FieldDescriptor> fieldCollection = new List<FieldDescriptor>();
- foreach (var field in ContainingType.Fields)
- {
- if (field.ContainingOneof == this)
- {
- fieldCollection.Add(field);
- }
- }
- fields = new ReadOnlyCollection<FieldDescriptor>(fieldCollection);
- }
- }
-}
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2015 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+
+namespace Google.Protobuf.Reflection
+{
+ public sealed class OneofDescriptor : DescriptorBase
+ {
+ private readonly OneofDescriptorProto proto;
+ private MessageDescriptor containingType;
+ private IList<FieldDescriptor> fields;
+
+ internal OneofDescriptor(OneofDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index)
+ : base(file, file.ComputeFullName(parent, proto.Name), index)
+ {
+ this.proto = proto;
+ containingType = parent;
+
+ file.DescriptorPool.AddSymbol(this);
+ }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ public MessageDescriptor ContainingType
+ {
+ get { return containingType; }
+ }
+
+ public IList<FieldDescriptor> Fields { get { return fields; } }
+
+ internal void CrossLink()
+ {
+ List<FieldDescriptor> fieldCollection = new List<FieldDescriptor>();
+ foreach (var field in ContainingType.Fields)
+ {
+ if (field.ContainingOneof == this)
+ {
+ fieldCollection.Add(field);
+ }
+ }
+ fields = new ReadOnlyCollection<FieldDescriptor>(fieldCollection);
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers/Descriptors/PackageDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/PackageDescriptor.cs
index 18adc9e3..e547d834 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/PackageDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/PackageDescriptor.cs
@@ -1,68 +1,68 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Represents a package in the symbol table. We use PackageDescriptors
- /// just as placeholders so that someone cannot define, say, a message type
- /// that has the same name as an existing package.
- /// </summary>
- internal sealed class PackageDescriptor : IDescriptor
- {
- private readonly string name;
- private readonly string fullName;
- private readonly FileDescriptor file;
-
- internal PackageDescriptor(string name, string fullName, FileDescriptor file)
- {
- this.file = file;
- this.fullName = fullName;
- this.name = name;
- }
-
- public string Name
- {
- get { return name; }
- }
-
- public string FullName
- {
- get { return fullName; }
- }
-
- public FileDescriptor File
- {
- get { return file; }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Represents a package in the symbol table. We use PackageDescriptors
+ /// just as placeholders so that someone cannot define, say, a message type
+ /// that has the same name as an existing package.
+ /// </summary>
+ internal sealed class PackageDescriptor : IDescriptor
+ {
+ private readonly string name;
+ private readonly string fullName;
+ private readonly FileDescriptor file;
+
+ internal PackageDescriptor(string name, string fullName, FileDescriptor file)
+ {
+ this.file = file;
+ this.fullName = fullName;
+ this.name = name;
+ }
+
+ public string Name
+ {
+ get { return name; }
+ }
+
+ public string FullName
+ {
+ get { return fullName; }
+ }
+
+ public FileDescriptor File
+ {
+ get { return file; }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/DescriptorProtos/PartialClasses.cs b/csharp/src/ProtocolBuffers/Reflection/PartialClasses.cs
index dc19cdad..c7ed4342 100644
--- a/csharp/src/ProtocolBuffers/DescriptorProtos/PartialClasses.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/PartialClasses.cs
@@ -31,7 +31,7 @@
#endregion
// This file just contains partial classes for any autogenerated classes that need additional support.
-namespace Google.Protobuf.DescriptorProtos
+namespace Google.Protobuf.Reflection
{
internal partial class FieldDescriptorProto
{
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/ReflectionUtil.cs b/csharp/src/ProtocolBuffers/Reflection/ReflectionUtil.cs
index d3053920..d0dc3e8b 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/ReflectionUtil.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/ReflectionUtil.cs
@@ -1,93 +1,106 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Linq.Expressions;
-using System.Reflection;
-
-namespace Google.Protobuf.FieldAccess
-{
- /// <summary>
- /// The methods in this class are somewhat evil, and should not be tampered with lightly.
- /// Basically they allow the creation of relatively weakly typed delegates from MethodInfos
- /// which are more strongly typed. They do this by creating an appropriate strongly typed
- /// delegate from the MethodInfo, and then calling that within an anonymous method.
- /// Mind-bending stuff (at least to your humble narrator) but the resulting delegates are
- /// very fast compared with calling Invoke later on.
- /// </summary>
- internal static class ReflectionUtil
- {
- /// <summary>
- /// Empty Type[] used when calling GetProperty to force property instead of indexer fetching.
- /// </summary>
- internal static readonly Type[] EmptyTypes = new Type[0];
-
- /// <summary>
- /// Creates a delegate which will cast the argument to the appropriate method target type,
- /// call the method on it, then convert the result to object.
- /// </summary>
- internal static Func<object, object> CreateFuncObjectObject(MethodInfo method)
- {
- ParameterExpression parameter = Expression.Parameter(typeof(object), "p");
- Expression downcast = Expression.Convert(parameter, method.DeclaringType);
- Expression call = Expression.Call(downcast, method);
- Expression upcast = Expression.Convert(call, typeof(object));
- return Expression.Lambda<Func<object, object>>(upcast, parameter).Compile();
- }
-
- /// <summary>
- /// Creates a delegate which will execute the given method after casting the first argument to
- /// the target type of the method, and the second argument to the first parameter type of the method.
- /// </summary>
- internal static Action<object, object> CreateActionObjectObject(MethodInfo method)
- {
- ParameterExpression targetParameter = Expression.Parameter(typeof(object), "target");
- ParameterExpression argParameter = Expression.Parameter(typeof(object), "arg");
- Expression castTarget = Expression.Convert(targetParameter, method.DeclaringType);
- Expression castArgument = Expression.Convert(argParameter, method.GetParameters()[0].ParameterType);
- Expression call = Expression.Call(castTarget, method, castArgument);
- return Expression.Lambda<Action<object, object>>(call, targetParameter, argParameter).Compile();
- }
-
- /// <summary>
- /// Creates a delegate which will execute the given method after casting the first argument to
- /// the target type of the method.
- /// </summary>
- internal static Action<object> CreateActionObject(MethodInfo method)
- {
- ParameterExpression targetParameter = Expression.Parameter(typeof(object), "target");
- Expression castTarget = Expression.Convert(targetParameter, method.DeclaringType);
- Expression call = Expression.Call(castTarget, method);
- return Expression.Lambda<Action<object>>(call, targetParameter).Compile();
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Linq.Expressions;
+using System.Reflection;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// The methods in this class are somewhat evil, and should not be tampered with lightly.
+ /// Basically they allow the creation of relatively weakly typed delegates from MethodInfos
+ /// which are more strongly typed. They do this by creating an appropriate strongly typed
+ /// delegate from the MethodInfo, and then calling that within an anonymous method.
+ /// Mind-bending stuff (at least to your humble narrator) but the resulting delegates are
+ /// very fast compared with calling Invoke later on.
+ /// </summary>
+ internal static class ReflectionUtil
+ {
+ /// <summary>
+ /// Empty Type[] used when calling GetProperty to force property instead of indexer fetching.
+ /// </summary>
+ internal static readonly Type[] EmptyTypes = new Type[0];
+
+ /// <summary>
+ /// Creates a delegate which will cast the argument to the appropriate method target type,
+ /// call the method on it, then convert the result to object.
+ /// </summary>
+ internal static Func<object, object> CreateFuncObjectObject(MethodInfo method)
+ {
+ ParameterExpression parameter = Expression.Parameter(typeof(object), "p");
+ Expression downcast = Expression.Convert(parameter, method.DeclaringType);
+ Expression call = Expression.Call(downcast, method);
+ Expression upcast = Expression.Convert(call, typeof(object));
+ return Expression.Lambda<Func<object, object>>(upcast, parameter).Compile();
+ }
+
+ /// <summary>
+ /// Creates a delegate which will cast the argument to the appropriate method target type,
+ /// call the method on it, then convert the result to the specified type.
+ /// </summary>
+ internal static Func<object, T> CreateFuncObjectT<T>(MethodInfo method)
+ {
+ ParameterExpression parameter = Expression.Parameter(typeof(object), "p");
+ Expression downcast = Expression.Convert(parameter, method.DeclaringType);
+ Expression call = Expression.Call(downcast, method);
+ Expression upcast = Expression.Convert(call, typeof(T));
+ return Expression.Lambda<Func<object, T>>(upcast, parameter).Compile();
+ }
+
+ /// <summary>
+ /// Creates a delegate which will execute the given method after casting the first argument to
+ /// the target type of the method, and the second argument to the first parameter type of the method.
+ /// </summary>
+ internal static Action<object, object> CreateActionObjectObject(MethodInfo method)
+ {
+ ParameterExpression targetParameter = Expression.Parameter(typeof(object), "target");
+ ParameterExpression argParameter = Expression.Parameter(typeof(object), "arg");
+ Expression castTarget = Expression.Convert(targetParameter, method.DeclaringType);
+ Expression castArgument = Expression.Convert(argParameter, method.GetParameters()[0].ParameterType);
+ Expression call = Expression.Call(castTarget, method, castArgument);
+ return Expression.Lambda<Action<object, object>>(call, targetParameter, argParameter).Compile();
+ }
+
+ /// <summary>
+ /// Creates a delegate which will execute the given method after casting the first argument to
+ /// the target type of the method.
+ /// </summary>
+ internal static Action<object> CreateActionObject(MethodInfo method)
+ {
+ ParameterExpression targetParameter = Expression.Parameter(typeof(object), "target");
+ Expression castTarget = Expression.Convert(targetParameter, method.DeclaringType);
+ Expression call = Expression.Call(castTarget, method);
+ return Expression.Lambda<Action<object>>(call, targetParameter).Compile();
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/RepeatedFieldAccessor.cs b/csharp/src/ProtocolBuffers/Reflection/RepeatedFieldAccessor.cs
index 8d7ecbaf..0ada7567 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/RepeatedFieldAccessor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/RepeatedFieldAccessor.cs
@@ -32,9 +32,8 @@
using System;
using System.Collections;
-using Google.Protobuf.Descriptors;
-namespace Google.Protobuf.FieldAccess
+namespace Google.Protobuf.Reflection
{
/// <summary>
/// Accessor for repeated fields.
diff --git a/csharp/src/ProtocolBuffers/Descriptors/ServiceDescriptor.cs b/csharp/src/ProtocolBuffers/Reflection/ServiceDescriptor.cs
index 2556e272..cc0a5010 100644
--- a/csharp/src/ProtocolBuffers/Descriptors/ServiceDescriptor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/ServiceDescriptor.cs
@@ -1,90 +1,89 @@
-#region Copyright notice and license
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#endregion
-
-using System;
-using System.Collections.Generic;
-using Google.Protobuf.DescriptorProtos;
-
-namespace Google.Protobuf.Descriptors
-{
- /// <summary>
- /// Describes a service type.
- /// </summary>
- public sealed class ServiceDescriptor : DescriptorBase
- {
- private readonly ServiceDescriptorProto proto;
- private readonly IList<MethodDescriptor> methods;
-
- internal ServiceDescriptor(ServiceDescriptorProto proto, FileDescriptor file, int index)
- : base(file, file.ComputeFullName(null, proto.Name), index)
- {
- this.proto = proto;
- methods = DescriptorUtil.ConvertAndMakeReadOnly(proto.Method,
- (method, i) => new MethodDescriptor(method, file, this, i));
-
- file.DescriptorPool.AddSymbol(this);
- }
-
- /// <summary>
- /// The brief name of the descriptor's target.
- /// </summary>
- public override string Name { get { return proto.Name; } }
-
- internal ServiceDescriptorProto Proto { get { return proto; } }
-
- /// <value>
- /// An unmodifiable list of methods in this service.
- /// </value>
- public IList<MethodDescriptor> Methods
- {
- get { return methods; }
- }
-
- /// <summary>
- /// Finds a method by name.
- /// </summary>
- /// <param name="name">The unqualified name of the method (e.g. "Foo").</param>
- /// <returns>The method's decsriptor, or null if not found.</returns>
- public MethodDescriptor FindMethodByName(String name)
- {
- return File.DescriptorPool.FindSymbol<MethodDescriptor>(FullName + "." + name);
- }
-
- internal void CrossLink()
- {
- foreach (MethodDescriptor method in methods)
- {
- method.CrossLink();
- }
- }
- }
+#region Copyright notice and license
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#endregion
+
+using System;
+using System.Collections.Generic;
+
+namespace Google.Protobuf.Reflection
+{
+ /// <summary>
+ /// Describes a service type.
+ /// </summary>
+ public sealed class ServiceDescriptor : DescriptorBase
+ {
+ private readonly ServiceDescriptorProto proto;
+ private readonly IList<MethodDescriptor> methods;
+
+ internal ServiceDescriptor(ServiceDescriptorProto proto, FileDescriptor file, int index)
+ : base(file, file.ComputeFullName(null, proto.Name), index)
+ {
+ this.proto = proto;
+ methods = DescriptorUtil.ConvertAndMakeReadOnly(proto.Method,
+ (method, i) => new MethodDescriptor(method, file, this, i));
+
+ file.DescriptorPool.AddSymbol(this);
+ }
+
+ /// <summary>
+ /// The brief name of the descriptor's target.
+ /// </summary>
+ public override string Name { get { return proto.Name; } }
+
+ internal ServiceDescriptorProto Proto { get { return proto; } }
+
+ /// <value>
+ /// An unmodifiable list of methods in this service.
+ /// </value>
+ public IList<MethodDescriptor> Methods
+ {
+ get { return methods; }
+ }
+
+ /// <summary>
+ /// Finds a method by name.
+ /// </summary>
+ /// <param name="name">The unqualified name of the method (e.g. "Foo").</param>
+ /// <returns>The method's decsriptor, or null if not found.</returns>
+ public MethodDescriptor FindMethodByName(String name)
+ {
+ return File.DescriptorPool.FindSymbol<MethodDescriptor>(FullName + "." + name);
+ }
+
+ internal void CrossLink()
+ {
+ foreach (MethodDescriptor method in methods)
+ {
+ method.CrossLink();
+ }
+ }
+ }
} \ No newline at end of file
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/SingleFieldAccessor.cs b/csharp/src/ProtocolBuffers/Reflection/SingleFieldAccessor.cs
index cdc89e8d..8c24e46e 100644
--- a/csharp/src/ProtocolBuffers/FieldAccess/SingleFieldAccessor.cs
+++ b/csharp/src/ProtocolBuffers/Reflection/SingleFieldAccessor.cs
@@ -29,12 +29,11 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#endregion
-
+
using System;
using System.Reflection;
-using Google.Protobuf.Descriptors;
-namespace Google.Protobuf.FieldAccess
+namespace Google.Protobuf.Reflection
{
/// <summary>
/// Accessor for single fields.
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Any.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Any.cs
new file mode 100644
index 00000000..64d52ac5
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Any.cs
@@ -0,0 +1,195 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/any.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Any {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Any__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Any() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYi",
+ "JgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQksKE2Nv",
+ "bS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAGgAQGiAgNHUEKqAh5Hb29n",
+ "bGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_Any__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Any), descriptor.MessageTypes[0],
+ new string[] { "TypeUrl", "Value", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Any : pb::IMessage<Any> {
+ private static readonly pb::MessageParser<Any> _parser = new pb::MessageParser<Any>(() => new Any());
+ public static pb::MessageParser<Any> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "type_url", "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 10, 18 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Any.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Any.internal__static_google_protobuf_Any__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Any() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Any(Any other) : this() {
+ typeUrl_ = other.typeUrl_;
+ value_ = other.value_;
+ }
+
+ public Any Clone() {
+ return new Any(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int TypeUrlFieldNumber = 1;
+ private string typeUrl_ = "";
+ public string TypeUrl {
+ get { return typeUrl_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ typeUrl_ = value ?? "";
+ }
+ }
+
+ public const int ValueFieldNumber = 2;
+ private pb::ByteString value_ = pb::ByteString.Empty;
+ public pb::ByteString Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value ?? pb::ByteString.Empty;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Any);
+ }
+
+ public bool Equals(Any other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (TypeUrl != other.TypeUrl) return false;
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
+ if (Value.Length != 0) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (TypeUrl.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(TypeUrl);
+ }
+ if (Value.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteBytes(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (TypeUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeUrl);
+ }
+ if (Value.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Any other) {
+ if (other == null) {
+ return;
+ }
+ if (other.TypeUrl.Length != 0) {
+ TypeUrl = other.TypeUrl;
+ }
+ if (other.Value.Length != 0) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ TypeUrl = input.ReadString();
+ break;
+ }
+ case 18: {
+ Value = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Api.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Api.cs
new file mode 100644
index 00000000..1e2506a4
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Api.cs
@@ -0,0 +1,528 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/api.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Api {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Api__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Method__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Api() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Chlnb29nbGUvcHJvdG9idWYvYXBpLnByb3RvEg9nb29nbGUucHJvdG9idWYa",
+ "JGdvb2dsZS9wcm90b2J1Zi9zb3VyY2VfY29udGV4dC5wcm90bxoaZ29vZ2xl",
+ "L3Byb3RvYnVmL3R5cGUucHJvdG8isAEKA0FwaRIMCgRuYW1lGAEgASgJEigK",
+ "B21ldGhvZHMYAiADKAsyFy5nb29nbGUucHJvdG9idWYuTWV0aG9kEigKB29w",
+ "dGlvbnMYAyADKAsyFy5nb29nbGUucHJvdG9idWYuT3B0aW9uEg8KB3ZlcnNp",
+ "b24YBCABKAkSNgoOc291cmNlX2NvbnRleHQYBSABKAsyHi5nb29nbGUucHJv",
+ "dG9idWYuU291cmNlQ29udGV4dCKsAQoGTWV0aG9kEgwKBG5hbWUYASABKAkS",
+ "GAoQcmVxdWVzdF90eXBlX3VybBgCIAEoCRIZChFyZXF1ZXN0X3N0cmVhbWlu",
+ "ZxgDIAEoCBIZChFyZXNwb25zZV90eXBlX3VybBgEIAEoCRIaChJyZXNwb25z",
+ "ZV9zdHJlYW1pbmcYBSABKAgSKAoHb3B0aW9ucxgGIAMoCzIXLmdvb2dsZS5w",
+ "cm90b2J1Zi5PcHRpb25CSAoTY29tLmdvb2dsZS5wcm90b2J1ZkIIQXBpUHJv",
+ "dG9QAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IG",
+ "cHJvdG8z"));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ global::Google.Protobuf.WellKnownTypes.Proto.SourceContext.Descriptor,
+ global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor,
+ });
+ internal__static_google_protobuf_Api__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Api), descriptor.MessageTypes[0],
+ new string[] { "Name", "Methods", "Options", "Version", "SourceContext", }, new string[] { });
+ internal__static_google_protobuf_Method__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Method), descriptor.MessageTypes[1],
+ new string[] { "Name", "RequestTypeUrl", "RequestStreaming", "ResponseTypeUrl", "ResponseStreaming", "Options", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Api : pb::IMessage<Api> {
+ private static readonly pb::MessageParser<Api> _parser = new pb::MessageParser<Api>(() => new Api());
+ public static pb::MessageParser<Api> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "methods", "name", "options", "source_context", "version" };
+ private static readonly uint[] _fieldTags = new uint[] { 18, 10, 26, 42, 34 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Api.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Api.internal__static_google_protobuf_Api__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Api() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Api(Api other) : this() {
+ name_ = other.name_;
+ methods_ = other.methods_.Clone();
+ options_ = other.options_.Clone();
+ version_ = other.version_;
+ SourceContext = other.sourceContext_ != null ? other.SourceContext.Clone() : null;
+ }
+
+ public Api Clone() {
+ return new Api(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ methods_.Freeze();
+ options_.Freeze();
+ if (sourceContext_ != null) SourceContext.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int MethodsFieldNumber = 2;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Method> _repeated_methods_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Method.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Method> methods_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Method>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Method> Methods {
+ get { return methods_; }
+ }
+
+ public const int OptionsFieldNumber = 3;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public const int VersionFieldNumber = 4;
+ private string version_ = "";
+ public string Version {
+ get { return version_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ version_ = value ?? "";
+ }
+ }
+
+ public const int SourceContextFieldNumber = 5;
+ private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_;
+ public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext {
+ get { return sourceContext_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ sourceContext_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Api);
+ }
+
+ public bool Equals(Api other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if(!methods_.Equals(other.methods_)) return false;
+ if(!options_.Equals(other.options_)) return false;
+ if (Version != other.Version) return false;
+ if (!object.Equals(SourceContext, other.SourceContext)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ hash ^= methods_.GetHashCode();
+ hash ^= options_.GetHashCode();
+ if (Version.Length != 0) hash ^= Version.GetHashCode();
+ if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ methods_.WriteTo(output, _repeated_methods_codec);
+ options_.WriteTo(output, _repeated_options_codec);
+ if (Version.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(Version);
+ }
+ if (sourceContext_ != null) {
+ output.WriteRawTag(42);
+ output.WriteMessage(SourceContext);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ size += methods_.CalculateSize(_repeated_methods_codec);
+ size += options_.CalculateSize(_repeated_options_codec);
+ if (Version.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Version);
+ }
+ if (sourceContext_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Api other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ methods_.Add(other.methods_);
+ options_.Add(other.options_);
+ if (other.Version.Length != 0) {
+ Version = other.Version;
+ }
+ if (other.sourceContext_ != null) {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ SourceContext.MergeFrom(other.SourceContext);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ methods_.AddEntriesFrom(input, _repeated_methods_codec);
+ break;
+ }
+ case 26: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ case 34: {
+ Version = input.ReadString();
+ break;
+ }
+ case 42: {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ input.ReadMessage(sourceContext_);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Method : pb::IMessage<Method> {
+ private static readonly pb::MessageParser<Method> _parser = new pb::MessageParser<Method>(() => new Method());
+ public static pb::MessageParser<Method> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "name", "options", "request_streaming", "request_type_url", "response_streaming", "response_type_url" };
+ private static readonly uint[] _fieldTags = new uint[] { 10, 50, 24, 18, 40, 34 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Api.Descriptor.MessageTypes[1]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Api.internal__static_google_protobuf_Method__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Method() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Method(Method other) : this() {
+ name_ = other.name_;
+ requestTypeUrl_ = other.requestTypeUrl_;
+ requestStreaming_ = other.requestStreaming_;
+ responseTypeUrl_ = other.responseTypeUrl_;
+ responseStreaming_ = other.responseStreaming_;
+ options_ = other.options_.Clone();
+ }
+
+ public Method Clone() {
+ return new Method(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ options_.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int RequestTypeUrlFieldNumber = 2;
+ private string requestTypeUrl_ = "";
+ public string RequestTypeUrl {
+ get { return requestTypeUrl_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ requestTypeUrl_ = value ?? "";
+ }
+ }
+
+ public const int RequestStreamingFieldNumber = 3;
+ private bool requestStreaming_;
+ public bool RequestStreaming {
+ get { return requestStreaming_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ requestStreaming_ = value;
+ }
+ }
+
+ public const int ResponseTypeUrlFieldNumber = 4;
+ private string responseTypeUrl_ = "";
+ public string ResponseTypeUrl {
+ get { return responseTypeUrl_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ responseTypeUrl_ = value ?? "";
+ }
+ }
+
+ public const int ResponseStreamingFieldNumber = 5;
+ private bool responseStreaming_;
+ public bool ResponseStreaming {
+ get { return responseStreaming_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ responseStreaming_ = value;
+ }
+ }
+
+ public const int OptionsFieldNumber = 6;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Method);
+ }
+
+ public bool Equals(Method other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (RequestTypeUrl != other.RequestTypeUrl) return false;
+ if (RequestStreaming != other.RequestStreaming) return false;
+ if (ResponseTypeUrl != other.ResponseTypeUrl) return false;
+ if (ResponseStreaming != other.ResponseStreaming) return false;
+ if(!options_.Equals(other.options_)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (RequestTypeUrl.Length != 0) hash ^= RequestTypeUrl.GetHashCode();
+ if (RequestStreaming != false) hash ^= RequestStreaming.GetHashCode();
+ if (ResponseTypeUrl.Length != 0) hash ^= ResponseTypeUrl.GetHashCode();
+ if (ResponseStreaming != false) hash ^= ResponseStreaming.GetHashCode();
+ hash ^= options_.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (RequestTypeUrl.Length != 0) {
+ output.WriteRawTag(18);
+ output.WriteString(RequestTypeUrl);
+ }
+ if (RequestStreaming != false) {
+ output.WriteRawTag(24);
+ output.WriteBool(RequestStreaming);
+ }
+ if (ResponseTypeUrl.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(ResponseTypeUrl);
+ }
+ if (ResponseStreaming != false) {
+ output.WriteRawTag(40);
+ output.WriteBool(ResponseStreaming);
+ }
+ options_.WriteTo(output, _repeated_options_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (RequestTypeUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestTypeUrl);
+ }
+ if (RequestStreaming != false) {
+ size += 1 + 1;
+ }
+ if (ResponseTypeUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(ResponseTypeUrl);
+ }
+ if (ResponseStreaming != false) {
+ size += 1 + 1;
+ }
+ size += options_.CalculateSize(_repeated_options_codec);
+ return size;
+ }
+
+ public void MergeFrom(Method other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.RequestTypeUrl.Length != 0) {
+ RequestTypeUrl = other.RequestTypeUrl;
+ }
+ if (other.RequestStreaming != false) {
+ RequestStreaming = other.RequestStreaming;
+ }
+ if (other.ResponseTypeUrl.Length != 0) {
+ ResponseTypeUrl = other.ResponseTypeUrl;
+ }
+ if (other.ResponseStreaming != false) {
+ ResponseStreaming = other.ResponseStreaming;
+ }
+ options_.Add(other.options_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ RequestTypeUrl = input.ReadString();
+ break;
+ }
+ case 24: {
+ RequestStreaming = input.ReadBool();
+ break;
+ }
+ case 34: {
+ ResponseTypeUrl = input.ReadString();
+ break;
+ }
+ case 40: {
+ ResponseStreaming = input.ReadBool();
+ break;
+ }
+ case 50: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Duration.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Duration.cs
new file mode 100644
index 00000000..fbc9c007
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Duration.cs
@@ -0,0 +1,196 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/duration.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Duration {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Duration__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Duration() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90",
+ "b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIg",
+ "ASgFQlAKE2NvbS5nb29nbGUucHJvdG9idWZCDUR1cmF0aW9uUHJvdG9QAaAB",
+ "AaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJv",
+ "dG8z"));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_Duration__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Duration), descriptor.MessageTypes[0],
+ new string[] { "Seconds", "Nanos", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Duration : pb::IMessage<Duration> {
+ private static readonly pb::MessageParser<Duration> _parser = new pb::MessageParser<Duration>(() => new Duration());
+ public static pb::MessageParser<Duration> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "nanos", "seconds" };
+ private static readonly uint[] _fieldTags = new uint[] { 16, 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Duration.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Duration.internal__static_google_protobuf_Duration__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Duration() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Duration(Duration other) : this() {
+ seconds_ = other.seconds_;
+ nanos_ = other.nanos_;
+ }
+
+ public Duration Clone() {
+ return new Duration(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int SecondsFieldNumber = 1;
+ private long seconds_;
+ public long Seconds {
+ get { return seconds_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ seconds_ = value;
+ }
+ }
+
+ public const int NanosFieldNumber = 2;
+ private int nanos_;
+ public int Nanos {
+ get { return nanos_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ nanos_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Duration);
+ }
+
+ public bool Equals(Duration other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Seconds != other.Seconds) return false;
+ if (Nanos != other.Nanos) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Seconds != 0L) hash ^= Seconds.GetHashCode();
+ if (Nanos != 0) hash ^= Nanos.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Seconds != 0L) {
+ output.WriteRawTag(8);
+ output.WriteInt64(Seconds);
+ }
+ if (Nanos != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Nanos);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Seconds != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seconds);
+ }
+ if (Nanos != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Nanos);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Duration other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Seconds != 0L) {
+ Seconds = other.Seconds;
+ }
+ if (other.Nanos != 0) {
+ Nanos = other.Nanos;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Seconds = input.ReadInt64();
+ break;
+ }
+ case 16: {
+ Nanos = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Empty.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Empty.cs
new file mode 100644
index 00000000..c2681e29
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Empty.cs
@@ -0,0 +1,141 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/empty.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Empty {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Empty__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Empty() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1",
+ "ZiIHCgVFbXB0eUJKChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3Rv",
+ "UAGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnBy",
+ "b3RvMw=="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_Empty__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Empty), descriptor.MessageTypes[0],
+ new string[] { }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Empty : pb::IMessage<Empty> {
+ private static readonly pb::MessageParser<Empty> _parser = new pb::MessageParser<Empty>(() => new Empty());
+ public static pb::MessageParser<Empty> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { };
+ private static readonly uint[] _fieldTags = new uint[] { };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Empty.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Empty.internal__static_google_protobuf_Empty__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Empty() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Empty(Empty other) : this() {
+ }
+
+ public Empty Clone() {
+ return new Empty(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Empty);
+ }
+
+ public bool Equals(Empty other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ return size;
+ }
+
+ public void MergeFrom(Empty other) {
+ if (other == null) {
+ return;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/FieldMask.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/FieldMask.cs
new file mode 100644
index 00000000..310c0d21
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/FieldMask.cs
@@ -0,0 +1,160 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/field_mask.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class FieldMask {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FieldMask__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static FieldMask() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnBy",
+ "b3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUJOChNjb20uZ29v",
+ "Z2xlLnByb3RvYnVmQg5GaWVsZE1hc2tQcm90b1ABogIDR1BCqgIeR29vZ2xl",
+ "LlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_FieldMask__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.FieldMask), descriptor.MessageTypes[0],
+ new string[] { "Paths", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class FieldMask : pb::IMessage<FieldMask> {
+ private static readonly pb::MessageParser<FieldMask> _parser = new pb::MessageParser<FieldMask>(() => new FieldMask());
+ public static pb::MessageParser<FieldMask> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "paths" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.FieldMask.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.FieldMask.internal__static_google_protobuf_FieldMask__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public FieldMask() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public FieldMask(FieldMask other) : this() {
+ paths_ = other.paths_.Clone();
+ }
+
+ public FieldMask Clone() {
+ return new FieldMask(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ paths_.Freeze();
+ }
+
+ public const int PathsFieldNumber = 1;
+ private static readonly pb::FieldCodec<string> _repeated_paths_codec
+ = pb::FieldCodec.ForString(10);
+ private readonly pbc::RepeatedField<string> paths_ = new pbc::RepeatedField<string>();
+ public pbc::RepeatedField<string> Paths {
+ get { return paths_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as FieldMask);
+ }
+
+ public bool Equals(FieldMask other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if(!paths_.Equals(other.paths_)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ hash ^= paths_.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ paths_.WriteTo(output, _repeated_paths_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ size += paths_.CalculateSize(_repeated_paths_codec);
+ return size;
+ }
+
+ public void MergeFrom(FieldMask other) {
+ if (other == null) {
+ return;
+ }
+ paths_.Add(other.paths_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ paths_.AddEntriesFrom(input, _repeated_paths_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/SourceContext.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/SourceContext.cs
new file mode 100644
index 00000000..ee60fbe9
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/SourceContext.cs
@@ -0,0 +1,169 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/source_context.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class SourceContext {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_SourceContext__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static SourceContext() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "CiRnb29nbGUvcHJvdG9idWYvc291cmNlX2NvbnRleHQucHJvdG8SD2dvb2ds",
+ "ZS5wcm90b2J1ZiIiCg1Tb3VyY2VDb250ZXh0EhEKCWZpbGVfbmFtZRgBIAEo",
+ "CUJSChNjb20uZ29vZ2xlLnByb3RvYnVmQhJTb3VyY2VDb250ZXh0UHJvdG9Q",
+ "AaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJv",
+ "dG8z"));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_SourceContext__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.SourceContext), descriptor.MessageTypes[0],
+ new string[] { "FileName", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class SourceContext : pb::IMessage<SourceContext> {
+ private static readonly pb::MessageParser<SourceContext> _parser = new pb::MessageParser<SourceContext>(() => new SourceContext());
+ public static pb::MessageParser<SourceContext> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "file_name" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.SourceContext.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.SourceContext.internal__static_google_protobuf_SourceContext__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public SourceContext() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public SourceContext(SourceContext other) : this() {
+ fileName_ = other.fileName_;
+ }
+
+ public SourceContext Clone() {
+ return new SourceContext(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int FileNameFieldNumber = 1;
+ private string fileName_ = "";
+ public string FileName {
+ get { return fileName_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ fileName_ = value ?? "";
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as SourceContext);
+ }
+
+ public bool Equals(SourceContext other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (FileName != other.FileName) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (FileName.Length != 0) hash ^= FileName.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (FileName.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(FileName);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (FileName.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(FileName);
+ }
+ return size;
+ }
+
+ public void MergeFrom(SourceContext other) {
+ if (other == null) {
+ return;
+ }
+ if (other.FileName.Length != 0) {
+ FileName = other.FileName;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ FileName = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Struct.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Struct.cs
new file mode 100644
index 00000000..99f88a96
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Struct.cs
@@ -0,0 +1,601 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/struct.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Struct {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Struct__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Value__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_ListValue__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Struct() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9i",
+ "dWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9i",
+ "dWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgB",
+ "IAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToC",
+ "OAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJv",
+ "dG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoM",
+ "c3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8K",
+ "DHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RI",
+ "ABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RW",
+ "YWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIW",
+ "Lmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9W",
+ "QUxVRRAAQk4KE2NvbS5nb29nbGUucHJvdG9idWZCC1N0cnVjdFByb3RvUAGg",
+ "AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnBy",
+ "b3RvMw=="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_Struct__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Struct), descriptor.MessageTypes[0],
+ new string[] { "Fields", }, new string[] { });
+ internal__static_google_protobuf_Value__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Value), descriptor.MessageTypes[1],
+ new string[] { "NullValue", "NumberValue", "StringValue", "BoolValue", "StructValue", "ListValue", }, new string[] { "Kind", });
+ internal__static_google_protobuf_ListValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.ListValue), descriptor.MessageTypes[2],
+ new string[] { "Values", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Enums
+ public enum NullValue {
+ NULL_VALUE = 0,
+ }
+
+ #endregion
+
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Struct : pb::IMessage<Struct> {
+ private static readonly pb::MessageParser<Struct> _parser = new pb::MessageParser<Struct>(() => new Struct());
+ public static pb::MessageParser<Struct> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "fields" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.internal__static_google_protobuf_Struct__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Struct() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Struct(Struct other) : this() {
+ fields_ = other.fields_.Clone();
+ }
+
+ public Struct Clone() {
+ return new Struct(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ fields_.Freeze();
+ }
+
+ public const int FieldsFieldNumber = 1;
+ private static readonly pbc::MapField<string, global::Google.Protobuf.WellKnownTypes.Value>.Codec _map_fields_codec
+ = new pbc::MapField<string, global::Google.Protobuf.WellKnownTypes.Value>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 10);
+ private readonly pbc::MapField<string, global::Google.Protobuf.WellKnownTypes.Value> fields_ = new pbc::MapField<string, global::Google.Protobuf.WellKnownTypes.Value>();
+ public pbc::MapField<string, global::Google.Protobuf.WellKnownTypes.Value> Fields {
+ get { return fields_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Struct);
+ }
+
+ public bool Equals(Struct other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (!Fields.Equals(other.Fields)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ hash ^= Fields.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ fields_.WriteTo(output, _map_fields_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ size += fields_.CalculateSize(_map_fields_codec);
+ return size;
+ }
+
+ public void MergeFrom(Struct other) {
+ if (other == null) {
+ return;
+ }
+ fields_.Add(other.fields_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ fields_.AddEntriesFrom(input, _map_fields_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Value : pb::IMessage<Value> {
+ private static readonly pb::MessageParser<Value> _parser = new pb::MessageParser<Value>(() => new Value());
+ public static pb::MessageParser<Value> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "bool_value", "list_value", "null_value", "number_value", "string_value", "struct_value" };
+ private static readonly uint[] _fieldTags = new uint[] { 32, 50, 8, 17, 26, 42 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.Descriptor.MessageTypes[1]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.internal__static_google_protobuf_Value__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Value() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Value(Value other) : this() {
+ switch (other.KindCase) {
+ case KindOneofCase.NullValue:
+ NullValue = other.NullValue;
+ break;
+ case KindOneofCase.NumberValue:
+ NumberValue = other.NumberValue;
+ break;
+ case KindOneofCase.StringValue:
+ StringValue = other.StringValue;
+ break;
+ case KindOneofCase.BoolValue:
+ BoolValue = other.BoolValue;
+ break;
+ case KindOneofCase.StructValue:
+ StructValue = other.StructValue.Clone();
+ break;
+ case KindOneofCase.ListValue:
+ ListValue = other.ListValue.Clone();
+ break;
+ }
+
+ }
+
+ public Value Clone() {
+ return new Value(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ if (kind_ is IFreezable) ((IFreezable) kind_).Freeze();
+ }
+
+ public const int NullValueFieldNumber = 1;
+ public global::Google.Protobuf.WellKnownTypes.NullValue NullValue {
+ get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : global::Google.Protobuf.WellKnownTypes.NullValue.NULL_VALUE; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ kindCase_ = KindOneofCase.NullValue;
+ }
+ }
+
+ public const int NumberValueFieldNumber = 2;
+ public double NumberValue {
+ get { return kindCase_ == KindOneofCase.NumberValue ? (double) kind_ : 0D; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ kindCase_ = KindOneofCase.NumberValue;
+ }
+ }
+
+ public const int StringValueFieldNumber = 3;
+ public string StringValue {
+ get { return kindCase_ == KindOneofCase.StringValue ? (string) kind_ : ""; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value ?? "";
+ kindCase_ = KindOneofCase.StringValue;
+ }
+ }
+
+ public const int BoolValueFieldNumber = 4;
+ public bool BoolValue {
+ get { return kindCase_ == KindOneofCase.BoolValue ? (bool) kind_ : false; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ kindCase_ = KindOneofCase.BoolValue;
+ }
+ }
+
+ public const int StructValueFieldNumber = 5;
+ public global::Google.Protobuf.WellKnownTypes.Struct StructValue {
+ get { return kindCase_ == KindOneofCase.StructValue ? (global::Google.Protobuf.WellKnownTypes.Struct) kind_ : null; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.StructValue;
+ }
+ }
+
+ public const int ListValueFieldNumber = 6;
+ public global::Google.Protobuf.WellKnownTypes.ListValue ListValue {
+ get { return kindCase_ == KindOneofCase.ListValue ? (global::Google.Protobuf.WellKnownTypes.ListValue) kind_ : null; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.ListValue;
+ }
+ }
+
+ private object kind_;
+ public enum KindOneofCase {
+ None = 0,
+ NullValue = 1,
+ NumberValue = 2,
+ StringValue = 3,
+ BoolValue = 4,
+ StructValue = 5,
+ ListValue = 6,
+ }
+ private KindOneofCase kindCase_ = KindOneofCase.None;
+ public KindOneofCase KindCase {
+ get { return kindCase_; }
+ }
+
+ public void ClearKind() {
+ pb::Freezable.CheckMutable(this);
+ kindCase_ = KindOneofCase.None;
+ kind_ = null;
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Value);
+ }
+
+ public bool Equals(Value other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (NullValue != other.NullValue) return false;
+ if (NumberValue != other.NumberValue) return false;
+ if (StringValue != other.StringValue) return false;
+ if (BoolValue != other.BoolValue) return false;
+ if (!object.Equals(StructValue, other.StructValue)) return false;
+ if (!object.Equals(ListValue, other.ListValue)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (kindCase_ == KindOneofCase.NullValue) hash ^= NullValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.NumberValue) hash ^= NumberValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.StringValue) hash ^= StringValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.BoolValue) hash ^= BoolValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.StructValue) hash ^= StructValue.GetHashCode();
+ if (kindCase_ == KindOneofCase.ListValue) hash ^= ListValue.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (kindCase_ == KindOneofCase.NullValue) {
+ output.WriteRawTag(8);
+ output.WriteEnum((int) NullValue);
+ }
+ if (kindCase_ == KindOneofCase.NumberValue) {
+ output.WriteRawTag(17);
+ output.WriteDouble(NumberValue);
+ }
+ if (kindCase_ == KindOneofCase.StringValue) {
+ output.WriteRawTag(26);
+ output.WriteString(StringValue);
+ }
+ if (kindCase_ == KindOneofCase.BoolValue) {
+ output.WriteRawTag(32);
+ output.WriteBool(BoolValue);
+ }
+ if (kindCase_ == KindOneofCase.StructValue) {
+ output.WriteRawTag(42);
+ output.WriteMessage(StructValue);
+ }
+ if (kindCase_ == KindOneofCase.ListValue) {
+ output.WriteRawTag(50);
+ output.WriteMessage(ListValue);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (kindCase_ == KindOneofCase.NullValue) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) NullValue);
+ }
+ if (kindCase_ == KindOneofCase.NumberValue) {
+ size += 1 + 8;
+ }
+ if (kindCase_ == KindOneofCase.StringValue) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(StringValue);
+ }
+ if (kindCase_ == KindOneofCase.BoolValue) {
+ size += 1 + 1;
+ }
+ if (kindCase_ == KindOneofCase.StructValue) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(StructValue);
+ }
+ if (kindCase_ == KindOneofCase.ListValue) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(ListValue);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Value other) {
+ if (other == null) {
+ return;
+ }
+ switch (other.KindCase) {
+ case KindOneofCase.NullValue:
+ NullValue = other.NullValue;
+ break;
+ case KindOneofCase.NumberValue:
+ NumberValue = other.NumberValue;
+ break;
+ case KindOneofCase.StringValue:
+ StringValue = other.StringValue;
+ break;
+ case KindOneofCase.BoolValue:
+ BoolValue = other.BoolValue;
+ break;
+ case KindOneofCase.StructValue:
+ StructValue = other.StructValue;
+ break;
+ case KindOneofCase.ListValue:
+ ListValue = other.ListValue;
+ break;
+ }
+
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ kind_ = input.ReadEnum();
+ kindCase_ = KindOneofCase.NullValue;
+ break;
+ }
+ case 17: {
+ NumberValue = input.ReadDouble();
+ break;
+ }
+ case 26: {
+ StringValue = input.ReadString();
+ break;
+ }
+ case 32: {
+ BoolValue = input.ReadBool();
+ break;
+ }
+ case 42: {
+ global::Google.Protobuf.WellKnownTypes.Struct subBuilder = new global::Google.Protobuf.WellKnownTypes.Struct();
+ if (kindCase_ == KindOneofCase.StructValue) {
+ subBuilder.MergeFrom(StructValue);
+ }
+ input.ReadMessage(subBuilder);
+ StructValue = subBuilder;
+ break;
+ }
+ case 50: {
+ global::Google.Protobuf.WellKnownTypes.ListValue subBuilder = new global::Google.Protobuf.WellKnownTypes.ListValue();
+ if (kindCase_ == KindOneofCase.ListValue) {
+ subBuilder.MergeFrom(ListValue);
+ }
+ input.ReadMessage(subBuilder);
+ ListValue = subBuilder;
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class ListValue : pb::IMessage<ListValue> {
+ private static readonly pb::MessageParser<ListValue> _parser = new pb::MessageParser<ListValue>(() => new ListValue());
+ public static pb::MessageParser<ListValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "values" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.Descriptor.MessageTypes[2]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Struct.internal__static_google_protobuf_ListValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public ListValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public ListValue(ListValue other) : this() {
+ values_ = other.values_.Clone();
+ }
+
+ public ListValue Clone() {
+ return new ListValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ values_.Freeze();
+ }
+
+ public const int ValuesFieldNumber = 1;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Value> _repeated_values_codec
+ = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.WellKnownTypes.Value.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Value> values_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Value>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Value> Values {
+ get { return values_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as ListValue);
+ }
+
+ public bool Equals(ListValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if(!values_.Equals(other.values_)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ hash ^= values_.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ values_.WriteTo(output, _repeated_values_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ size += values_.CalculateSize(_repeated_values_codec);
+ return size;
+ }
+
+ public void MergeFrom(ListValue other) {
+ if (other == null) {
+ return;
+ }
+ values_.Add(other.values_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ values_.AddEntriesFrom(input, _repeated_values_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Timestamp.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Timestamp.cs
new file mode 100644
index 00000000..e3bb3c37
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Timestamp.cs
@@ -0,0 +1,196 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/timestamp.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Timestamp {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Timestamp__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Timestamp() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJv",
+ "dG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MY",
+ "AiABKAVCUQoTY29tLmdvb2dsZS5wcm90b2J1ZkIOVGltZXN0YW1wUHJvdG9Q",
+ "AaABAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IG",
+ "cHJvdG8z"));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_Timestamp__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Timestamp), descriptor.MessageTypes[0],
+ new string[] { "Seconds", "Nanos", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Timestamp : pb::IMessage<Timestamp> {
+ private static readonly pb::MessageParser<Timestamp> _parser = new pb::MessageParser<Timestamp>(() => new Timestamp());
+ public static pb::MessageParser<Timestamp> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "nanos", "seconds" };
+ private static readonly uint[] _fieldTags = new uint[] { 16, 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Timestamp.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Timestamp.internal__static_google_protobuf_Timestamp__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Timestamp() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Timestamp(Timestamp other) : this() {
+ seconds_ = other.seconds_;
+ nanos_ = other.nanos_;
+ }
+
+ public Timestamp Clone() {
+ return new Timestamp(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int SecondsFieldNumber = 1;
+ private long seconds_;
+ public long Seconds {
+ get { return seconds_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ seconds_ = value;
+ }
+ }
+
+ public const int NanosFieldNumber = 2;
+ private int nanos_;
+ public int Nanos {
+ get { return nanos_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ nanos_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Timestamp);
+ }
+
+ public bool Equals(Timestamp other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Seconds != other.Seconds) return false;
+ if (Nanos != other.Nanos) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Seconds != 0L) hash ^= Seconds.GetHashCode();
+ if (Nanos != 0) hash ^= Nanos.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Seconds != 0L) {
+ output.WriteRawTag(8);
+ output.WriteInt64(Seconds);
+ }
+ if (Nanos != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Nanos);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Seconds != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seconds);
+ }
+ if (Nanos != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Nanos);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Timestamp other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Seconds != 0L) {
+ Seconds = other.Seconds;
+ }
+ if (other.Nanos != 0) {
+ Nanos = other.Nanos;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Seconds = input.ReadInt64();
+ break;
+ }
+ case 16: {
+ Nanos = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Type.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Type.cs
new file mode 100644
index 00000000..dbc1ee0d
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Type.cs
@@ -0,0 +1,1147 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/type.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ namespace Proto {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Type {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Type__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Field__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Enum__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_EnumValue__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Option__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Type() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Chpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90bxIPZ29vZ2xlLnByb3RvYnVm",
+ "Ghlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGiRnb29nbGUvcHJvdG9idWYv",
+ "c291cmNlX2NvbnRleHQucHJvdG8irgEKBFR5cGUSDAoEbmFtZRgBIAEoCRIm",
+ "CgZmaWVsZHMYAiADKAsyFi5nb29nbGUucHJvdG9idWYuRmllbGQSDgoGb25l",
+ "b2ZzGAMgAygJEigKB29wdGlvbnMYBCADKAsyFy5nb29nbGUucHJvdG9idWYu",
+ "T3B0aW9uEjYKDnNvdXJjZV9jb250ZXh0GAUgASgLMh4uZ29vZ2xlLnByb3Rv",
+ "YnVmLlNvdXJjZUNvbnRleHQimwUKBUZpZWxkEikKBGtpbmQYASABKA4yGy5n",
+ "b29nbGUucHJvdG9idWYuRmllbGQuS2luZBI3CgtjYXJkaW5hbGl0eRgCIAEo",
+ "DjIiLmdvb2dsZS5wcm90b2J1Zi5GaWVsZC5DYXJkaW5hbGl0eRIOCgZudW1i",
+ "ZXIYAyABKAUSDAoEbmFtZRgEIAEoCRIQCgh0eXBlX3VybBgGIAEoCRITCgtv",
+ "bmVvZl9pbmRleBgHIAEoBRIOCgZwYWNrZWQYCCABKAgSKAoHb3B0aW9ucxgJ",
+ "IAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5PcHRpb24iuAIKBEtpbmQSEAoMVFlQ",
+ "RV9VTktOT1dOEAASDwoLVFlQRV9ET1VCTEUQARIOCgpUWVBFX0ZMT0FUEAIS",
+ "DgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQSDgoKVFlQRV9JTlQz",
+ "MhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklYRUQzMhAHEg0KCVRZ",
+ "UEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSEAoMVFlQRV9NRVNTQUdFEAsS",
+ "DgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJVFlQRV9FTlVN",
+ "EA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVENjQQEBIPCgtU",
+ "WVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIidAoLQ2FyZGluYWxpdHkS",
+ "FwoTQ0FSRElOQUxJVFlfVU5LTk9XThAAEhgKFENBUkRJTkFMSVRZX09QVElP",
+ "TkFMEAESGAoUQ0FSRElOQUxJVFlfUkVRVUlSRUQQAhIYChRDQVJESU5BTElU",
+ "WV9SRVBFQVRFRBADIqUBCgRFbnVtEgwKBG5hbWUYASABKAkSLQoJZW51bXZh",
+ "bHVlGAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1ZRIoCgdvcHRp",
+ "b25zGAMgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2Cg5zb3VyY2Vf",
+ "Y29udGV4dBgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb250ZXh0",
+ "IlMKCUVudW1WYWx1ZRIMCgRuYW1lGAEgASgJEg4KBm51bWJlchgCIAEoBRIo",
+ "CgdvcHRpb25zGAMgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbiI7CgZP",
+ "cHRpb24SDAoEbmFtZRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmdvb2dsZS5w",
+ "cm90b2J1Zi5BbnlCSQoTY29tLmdvb2dsZS5wcm90b2J1ZkIJVHlwZVByb3Rv",
+ "UAGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnBy",
+ "b3RvMw=="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ global::Google.Protobuf.WellKnownTypes.Proto.Any.Descriptor,
+ global::Google.Protobuf.WellKnownTypes.Proto.SourceContext.Descriptor,
+ });
+ internal__static_google_protobuf_Type__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Type), descriptor.MessageTypes[0],
+ new string[] { "Name", "Fields", "Oneofs", "Options", "SourceContext", }, new string[] { });
+ internal__static_google_protobuf_Field__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Field), descriptor.MessageTypes[1],
+ new string[] { "Kind", "Cardinality", "Number", "Name", "TypeUrl", "OneofIndex", "Packed", "Options", }, new string[] { });
+ internal__static_google_protobuf_Enum__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Enum), descriptor.MessageTypes[2],
+ new string[] { "Name", "Enumvalue", "Options", "SourceContext", }, new string[] { });
+ internal__static_google_protobuf_EnumValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.EnumValue), descriptor.MessageTypes[3],
+ new string[] { "Name", "Number", "Options", }, new string[] { });
+ internal__static_google_protobuf_Option__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Option), descriptor.MessageTypes[4],
+ new string[] { "Name", "Value", }, new string[] { });
+ }
+ #endregion
+
+ }
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Type : pb::IMessage<Type> {
+ private static readonly pb::MessageParser<Type> _parser = new pb::MessageParser<Type>(() => new Type());
+ public static pb::MessageParser<Type> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "fields", "name", "oneofs", "options", "source_context" };
+ private static readonly uint[] _fieldTags = new uint[] { 18, 10, 26, 34, 42 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.internal__static_google_protobuf_Type__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Type() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Type(Type other) : this() {
+ name_ = other.name_;
+ fields_ = other.fields_.Clone();
+ oneofs_ = other.oneofs_.Clone();
+ options_ = other.options_.Clone();
+ SourceContext = other.sourceContext_ != null ? other.SourceContext.Clone() : null;
+ }
+
+ public Type Clone() {
+ return new Type(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ fields_.Freeze();
+ oneofs_.Freeze();
+ options_.Freeze();
+ if (sourceContext_ != null) SourceContext.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int FieldsFieldNumber = 2;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Field> _repeated_fields_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Field.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Field> fields_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Field>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Field> Fields {
+ get { return fields_; }
+ }
+
+ public const int OneofsFieldNumber = 3;
+ private static readonly pb::FieldCodec<string> _repeated_oneofs_codec
+ = pb::FieldCodec.ForString(26);
+ private readonly pbc::RepeatedField<string> oneofs_ = new pbc::RepeatedField<string>();
+ public pbc::RepeatedField<string> Oneofs {
+ get { return oneofs_; }
+ }
+
+ public const int OptionsFieldNumber = 4;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public const int SourceContextFieldNumber = 5;
+ private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_;
+ public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext {
+ get { return sourceContext_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ sourceContext_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Type);
+ }
+
+ public bool Equals(Type other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if(!fields_.Equals(other.fields_)) return false;
+ if(!oneofs_.Equals(other.oneofs_)) return false;
+ if(!options_.Equals(other.options_)) return false;
+ if (!object.Equals(SourceContext, other.SourceContext)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ hash ^= fields_.GetHashCode();
+ hash ^= oneofs_.GetHashCode();
+ hash ^= options_.GetHashCode();
+ if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ fields_.WriteTo(output, _repeated_fields_codec);
+ oneofs_.WriteTo(output, _repeated_oneofs_codec);
+ options_.WriteTo(output, _repeated_options_codec);
+ if (sourceContext_ != null) {
+ output.WriteRawTag(42);
+ output.WriteMessage(SourceContext);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ size += fields_.CalculateSize(_repeated_fields_codec);
+ size += oneofs_.CalculateSize(_repeated_oneofs_codec);
+ size += options_.CalculateSize(_repeated_options_codec);
+ if (sourceContext_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Type other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ fields_.Add(other.fields_);
+ oneofs_.Add(other.oneofs_);
+ options_.Add(other.options_);
+ if (other.sourceContext_ != null) {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ SourceContext.MergeFrom(other.SourceContext);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ fields_.AddEntriesFrom(input, _repeated_fields_codec);
+ break;
+ }
+ case 26: {
+ oneofs_.AddEntriesFrom(input, _repeated_oneofs_codec);
+ break;
+ }
+ case 34: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ case 42: {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ input.ReadMessage(sourceContext_);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Field : pb::IMessage<Field> {
+ private static readonly pb::MessageParser<Field> _parser = new pb::MessageParser<Field>(() => new Field());
+ public static pb::MessageParser<Field> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "cardinality", "kind", "name", "number", "oneof_index", "options", "packed", "type_url" };
+ private static readonly uint[] _fieldTags = new uint[] { 16, 8, 34, 24, 56, 74, 64, 50 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor.MessageTypes[1]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.internal__static_google_protobuf_Field__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Field() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Field(Field other) : this() {
+ kind_ = other.kind_;
+ cardinality_ = other.cardinality_;
+ number_ = other.number_;
+ name_ = other.name_;
+ typeUrl_ = other.typeUrl_;
+ oneofIndex_ = other.oneofIndex_;
+ packed_ = other.packed_;
+ options_ = other.options_.Clone();
+ }
+
+ public Field Clone() {
+ return new Field(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ options_.Freeze();
+ }
+
+ public const int KindFieldNumber = 1;
+ private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN;
+ public global::Google.Protobuf.WellKnownTypes.Field.Types.Kind Kind {
+ get { return kind_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ kind_ = value;
+ }
+ }
+
+ public const int CardinalityFieldNumber = 2;
+ private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN;
+ public global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality Cardinality {
+ get { return cardinality_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ cardinality_ = value;
+ }
+ }
+
+ public const int NumberFieldNumber = 3;
+ private int number_;
+ public int Number {
+ get { return number_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ number_ = value;
+ }
+ }
+
+ public const int NameFieldNumber = 4;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int TypeUrlFieldNumber = 6;
+ private string typeUrl_ = "";
+ public string TypeUrl {
+ get { return typeUrl_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ typeUrl_ = value ?? "";
+ }
+ }
+
+ public const int OneofIndexFieldNumber = 7;
+ private int oneofIndex_;
+ public int OneofIndex {
+ get { return oneofIndex_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ oneofIndex_ = value;
+ }
+ }
+
+ public const int PackedFieldNumber = 8;
+ private bool packed_;
+ public bool Packed {
+ get { return packed_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ packed_ = value;
+ }
+ }
+
+ public const int OptionsFieldNumber = 9;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Field);
+ }
+
+ public bool Equals(Field other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Kind != other.Kind) return false;
+ if (Cardinality != other.Cardinality) return false;
+ if (Number != other.Number) return false;
+ if (Name != other.Name) return false;
+ if (TypeUrl != other.TypeUrl) return false;
+ if (OneofIndex != other.OneofIndex) return false;
+ if (Packed != other.Packed) return false;
+ if(!options_.Equals(other.options_)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) hash ^= Kind.GetHashCode();
+ if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) hash ^= Cardinality.GetHashCode();
+ if (Number != 0) hash ^= Number.GetHashCode();
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode();
+ if (OneofIndex != 0) hash ^= OneofIndex.GetHashCode();
+ if (Packed != false) hash ^= Packed.GetHashCode();
+ hash ^= options_.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+ output.WriteRawTag(8);
+ output.WriteEnum((int) Kind);
+ }
+ if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+ output.WriteRawTag(16);
+ output.WriteEnum((int) Cardinality);
+ }
+ if (Number != 0) {
+ output.WriteRawTag(24);
+ output.WriteInt32(Number);
+ }
+ if (Name.Length != 0) {
+ output.WriteRawTag(34);
+ output.WriteString(Name);
+ }
+ if (TypeUrl.Length != 0) {
+ output.WriteRawTag(50);
+ output.WriteString(TypeUrl);
+ }
+ if (OneofIndex != 0) {
+ output.WriteRawTag(56);
+ output.WriteInt32(OneofIndex);
+ }
+ if (Packed != false) {
+ output.WriteRawTag(64);
+ output.WriteBool(Packed);
+ }
+ options_.WriteTo(output, _repeated_options_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
+ }
+ if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+ size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Cardinality);
+ }
+ if (Number != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
+ }
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (TypeUrl.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeUrl);
+ }
+ if (OneofIndex != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofIndex);
+ }
+ if (Packed != false) {
+ size += 1 + 1;
+ }
+ size += options_.CalculateSize(_repeated_options_codec);
+ return size;
+ }
+
+ public void MergeFrom(Field other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TYPE_UNKNOWN) {
+ Kind = other.Kind;
+ }
+ if (other.Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.CARDINALITY_UNKNOWN) {
+ Cardinality = other.Cardinality;
+ }
+ if (other.Number != 0) {
+ Number = other.Number;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.TypeUrl.Length != 0) {
+ TypeUrl = other.TypeUrl;
+ }
+ if (other.OneofIndex != 0) {
+ OneofIndex = other.OneofIndex;
+ }
+ if (other.Packed != false) {
+ Packed = other.Packed;
+ }
+ options_.Add(other.options_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ kind_ = (global::Google.Protobuf.WellKnownTypes.Field.Types.Kind) input.ReadEnum();
+ break;
+ }
+ case 16: {
+ cardinality_ = (global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality) input.ReadEnum();
+ break;
+ }
+ case 24: {
+ Number = input.ReadInt32();
+ break;
+ }
+ case 34: {
+ Name = input.ReadString();
+ break;
+ }
+ case 50: {
+ TypeUrl = input.ReadString();
+ break;
+ }
+ case 56: {
+ OneofIndex = input.ReadInt32();
+ break;
+ }
+ case 64: {
+ Packed = input.ReadBool();
+ break;
+ }
+ case 74: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ #region Nested types
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Types {
+ public enum Kind {
+ TYPE_UNKNOWN = 0,
+ TYPE_DOUBLE = 1,
+ TYPE_FLOAT = 2,
+ TYPE_INT64 = 3,
+ TYPE_UINT64 = 4,
+ TYPE_INT32 = 5,
+ TYPE_FIXED64 = 6,
+ TYPE_FIXED32 = 7,
+ TYPE_BOOL = 8,
+ TYPE_STRING = 9,
+ TYPE_MESSAGE = 11,
+ TYPE_BYTES = 12,
+ TYPE_UINT32 = 13,
+ TYPE_ENUM = 14,
+ TYPE_SFIXED32 = 15,
+ TYPE_SFIXED64 = 16,
+ TYPE_SINT32 = 17,
+ TYPE_SINT64 = 18,
+ }
+
+ public enum Cardinality {
+ CARDINALITY_UNKNOWN = 0,
+ CARDINALITY_OPTIONAL = 1,
+ CARDINALITY_REQUIRED = 2,
+ CARDINALITY_REPEATED = 3,
+ }
+
+ }
+ #endregion
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Enum : pb::IMessage<Enum> {
+ private static readonly pb::MessageParser<Enum> _parser = new pb::MessageParser<Enum>(() => new Enum());
+ public static pb::MessageParser<Enum> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "enumvalue", "name", "options", "source_context" };
+ private static readonly uint[] _fieldTags = new uint[] { 18, 10, 26, 34 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor.MessageTypes[2]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.internal__static_google_protobuf_Enum__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Enum() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Enum(Enum other) : this() {
+ name_ = other.name_;
+ enumvalue_ = other.enumvalue_.Clone();
+ options_ = other.options_.Clone();
+ SourceContext = other.sourceContext_ != null ? other.SourceContext.Clone() : null;
+ }
+
+ public Enum Clone() {
+ return new Enum(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ enumvalue_.Freeze();
+ options_.Freeze();
+ if (sourceContext_ != null) SourceContext.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int EnumvalueFieldNumber = 2;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.EnumValue> _repeated_enumvalue_codec
+ = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.EnumValue.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.EnumValue> enumvalue_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.EnumValue>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.EnumValue> Enumvalue {
+ get { return enumvalue_; }
+ }
+
+ public const int OptionsFieldNumber = 3;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public const int SourceContextFieldNumber = 4;
+ private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_;
+ public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext {
+ get { return sourceContext_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ sourceContext_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Enum);
+ }
+
+ public bool Equals(Enum other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if(!enumvalue_.Equals(other.enumvalue_)) return false;
+ if(!options_.Equals(other.options_)) return false;
+ if (!object.Equals(SourceContext, other.SourceContext)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ hash ^= enumvalue_.GetHashCode();
+ hash ^= options_.GetHashCode();
+ if (sourceContext_ != null) hash ^= SourceContext.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ enumvalue_.WriteTo(output, _repeated_enumvalue_codec);
+ options_.WriteTo(output, _repeated_options_codec);
+ if (sourceContext_ != null) {
+ output.WriteRawTag(34);
+ output.WriteMessage(SourceContext);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ size += enumvalue_.CalculateSize(_repeated_enumvalue_codec);
+ size += options_.CalculateSize(_repeated_options_codec);
+ if (sourceContext_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContext);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Enum other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ enumvalue_.Add(other.enumvalue_);
+ options_.Add(other.options_);
+ if (other.sourceContext_ != null) {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ SourceContext.MergeFrom(other.SourceContext);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ enumvalue_.AddEntriesFrom(input, _repeated_enumvalue_codec);
+ break;
+ }
+ case 26: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ case 34: {
+ if (sourceContext_ == null) {
+ sourceContext_ = new global::Google.Protobuf.WellKnownTypes.SourceContext();
+ }
+ input.ReadMessage(sourceContext_);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class EnumValue : pb::IMessage<EnumValue> {
+ private static readonly pb::MessageParser<EnumValue> _parser = new pb::MessageParser<EnumValue>(() => new EnumValue());
+ public static pb::MessageParser<EnumValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "name", "number", "options" };
+ private static readonly uint[] _fieldTags = new uint[] { 10, 16, 26 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor.MessageTypes[3]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.internal__static_google_protobuf_EnumValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public EnumValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public EnumValue(EnumValue other) : this() {
+ name_ = other.name_;
+ number_ = other.number_;
+ options_ = other.options_.Clone();
+ }
+
+ public EnumValue Clone() {
+ return new EnumValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ options_.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int NumberFieldNumber = 2;
+ private int number_;
+ public int Number {
+ get { return number_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ number_ = value;
+ }
+ }
+
+ public const int OptionsFieldNumber = 3;
+ private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Option> _repeated_options_codec
+ = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser);
+ private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> options_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option>();
+ public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Option> Options {
+ get { return options_; }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as EnumValue);
+ }
+
+ public bool Equals(EnumValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (Number != other.Number) return false;
+ if(!options_.Equals(other.options_)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (Number != 0) hash ^= Number.GetHashCode();
+ hash ^= options_.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (Number != 0) {
+ output.WriteRawTag(16);
+ output.WriteInt32(Number);
+ }
+ options_.WriteTo(output, _repeated_options_codec);
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (Number != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number);
+ }
+ size += options_.CalculateSize(_repeated_options_codec);
+ return size;
+ }
+
+ public void MergeFrom(EnumValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.Number != 0) {
+ Number = other.Number;
+ }
+ options_.Add(other.options_);
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 16: {
+ Number = input.ReadInt32();
+ break;
+ }
+ case 26: {
+ options_.AddEntriesFrom(input, _repeated_options_codec);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Option : pb::IMessage<Option> {
+ private static readonly pb::MessageParser<Option> _parser = new pb::MessageParser<Option>(() => new Option());
+ public static pb::MessageParser<Option> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "name", "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 10, 18 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.Descriptor.MessageTypes[4]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Proto.Type.internal__static_google_protobuf_Option__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Option() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Option(Option other) : this() {
+ name_ = other.name_;
+ Value = other.value_ != null ? other.Value.Clone() : null;
+ }
+
+ public Option Clone() {
+ return new Option(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ if (value_ != null) Value.Freeze();
+ }
+
+ public const int NameFieldNumber = 1;
+ private string name_ = "";
+ public string Name {
+ get { return name_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ name_ = value ?? "";
+ }
+ }
+
+ public const int ValueFieldNumber = 2;
+ private global::Google.Protobuf.WellKnownTypes.Any value_;
+ public global::Google.Protobuf.WellKnownTypes.Any Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Option);
+ }
+
+ public bool Equals(Option other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Name != other.Name) return false;
+ if (!object.Equals(Value, other.Value)) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Name.Length != 0) hash ^= Name.GetHashCode();
+ if (value_ != null) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Name.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Name);
+ }
+ if (value_ != null) {
+ output.WriteRawTag(18);
+ output.WriteMessage(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Name.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
+ }
+ if (value_ != null) {
+ size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Option other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Name.Length != 0) {
+ Name = other.Name;
+ }
+ if (other.value_ != null) {
+ if (value_ == null) {
+ value_ = new global::Google.Protobuf.WellKnownTypes.Any();
+ }
+ Value.MergeFrom(other.Value);
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Name = input.ReadString();
+ break;
+ }
+ case 18: {
+ if (value_ == null) {
+ value_ = new global::Google.Protobuf.WellKnownTypes.Any();
+ }
+ input.ReadMessage(value_);
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WellKnownTypes/Wrappers.cs b/csharp/src/ProtocolBuffers/WellKnownTypes/Wrappers.cs
new file mode 100644
index 00000000..c26f874d
--- /dev/null
+++ b/csharp/src/ProtocolBuffers/WellKnownTypes/Wrappers.cs
@@ -0,0 +1,1154 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: google/protobuf/wrappers.proto
+#pragma warning disable 1591, 0612, 3021
+#region Designer generated code
+
+using pb = global::Google.Protobuf;
+using pbc = global::Google.Protobuf.Collections;
+using pbr = global::Google.Protobuf.Reflection;
+using scg = global::System.Collections.Generic;
+namespace Google.Protobuf.WellKnownTypes {
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public static partial class Wrappers {
+
+ #region Static variables
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_DoubleValue__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_FloatValue__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Int64Value__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_UInt64Value__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_Int32Value__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_UInt32Value__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_BoolValue__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_StringValue__FieldAccessorTable;
+ internal static pbr::FieldAccessorTable internal__static_google_protobuf_BytesValue__FieldAccessorTable;
+ #endregion
+ #region Descriptor
+ public static pbr::FileDescriptor Descriptor {
+ get { return descriptor; }
+ }
+ private static pbr::FileDescriptor descriptor;
+
+ static Wrappers() {
+ byte[] descriptorData = global::System.Convert.FromBase64String(
+ string.Concat(
+ "Ch5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8SD2dvb2dsZS5wcm90",
+ "b2J1ZiIcCgtEb3VibGVWYWx1ZRINCgV2YWx1ZRgBIAEoASIbCgpGbG9hdFZh",
+ "bHVlEg0KBXZhbHVlGAEgASgCIhsKCkludDY0VmFsdWUSDQoFdmFsdWUYASAB",
+ "KAMiHAoLVUludDY0VmFsdWUSDQoFdmFsdWUYASABKAQiGwoKSW50MzJWYWx1",
+ "ZRINCgV2YWx1ZRgBIAEoBSIcCgtVSW50MzJWYWx1ZRINCgV2YWx1ZRgBIAEo",
+ "DSIaCglCb29sVmFsdWUSDQoFdmFsdWUYASABKAgiHAoLU3RyaW5nVmFsdWUS",
+ "DQoFdmFsdWUYASABKAkiGwoKQnl0ZXNWYWx1ZRINCgV2YWx1ZRgBIAEoDEJN",
+ "ChNjb20uZ29vZ2xlLnByb3RvYnVmQg1XcmFwcGVyc1Byb3RvUAGiAgNHUEKq",
+ "Ah5Hb29nbGUuUHJvdG9idWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw=="));
+ descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,
+ new pbr::FileDescriptor[] {
+ });
+ internal__static_google_protobuf_DoubleValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.DoubleValue), descriptor.MessageTypes[0],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_FloatValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.FloatValue), descriptor.MessageTypes[1],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_Int64Value__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Int64Value), descriptor.MessageTypes[2],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_UInt64Value__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.UInt64Value), descriptor.MessageTypes[3],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_Int32Value__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.Int32Value), descriptor.MessageTypes[4],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_UInt32Value__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.UInt32Value), descriptor.MessageTypes[5],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_BoolValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.BoolValue), descriptor.MessageTypes[6],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_StringValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.StringValue), descriptor.MessageTypes[7],
+ new string[] { "Value", }, new string[] { });
+ internal__static_google_protobuf_BytesValue__FieldAccessorTable =
+ new pbr::FieldAccessorTable(typeof(global::Google.Protobuf.WellKnownTypes.BytesValue), descriptor.MessageTypes[8],
+ new string[] { "Value", }, new string[] { });
+ }
+ #endregion
+
+ }
+ #region Messages
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class DoubleValue : pb::IMessage<DoubleValue> {
+ private static readonly pb::MessageParser<DoubleValue> _parser = new pb::MessageParser<DoubleValue>(() => new DoubleValue());
+ public static pb::MessageParser<DoubleValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 9 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[0]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_DoubleValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public DoubleValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public DoubleValue(DoubleValue other) : this() {
+ value_ = other.value_;
+ }
+
+ public DoubleValue Clone() {
+ return new DoubleValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private double value_;
+ public double Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as DoubleValue);
+ }
+
+ public bool Equals(DoubleValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0D) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0D) {
+ output.WriteRawTag(9);
+ output.WriteDouble(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0D) {
+ size += 1 + 8;
+ }
+ return size;
+ }
+
+ public void MergeFrom(DoubleValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0D) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 9: {
+ Value = input.ReadDouble();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class FloatValue : pb::IMessage<FloatValue> {
+ private static readonly pb::MessageParser<FloatValue> _parser = new pb::MessageParser<FloatValue>(() => new FloatValue());
+ public static pb::MessageParser<FloatValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 13 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[1]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_FloatValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public FloatValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public FloatValue(FloatValue other) : this() {
+ value_ = other.value_;
+ }
+
+ public FloatValue Clone() {
+ return new FloatValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private float value_;
+ public float Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as FloatValue);
+ }
+
+ public bool Equals(FloatValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0F) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0F) {
+ output.WriteRawTag(13);
+ output.WriteFloat(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0F) {
+ size += 1 + 4;
+ }
+ return size;
+ }
+
+ public void MergeFrom(FloatValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0F) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 13: {
+ Value = input.ReadFloat();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Int64Value : pb::IMessage<Int64Value> {
+ private static readonly pb::MessageParser<Int64Value> _parser = new pb::MessageParser<Int64Value>(() => new Int64Value());
+ public static pb::MessageParser<Int64Value> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[2]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_Int64Value__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Int64Value() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Int64Value(Int64Value other) : this() {
+ value_ = other.value_;
+ }
+
+ public Int64Value Clone() {
+ return new Int64Value(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private long value_;
+ public long Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Int64Value);
+ }
+
+ public bool Equals(Int64Value other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0L) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0L) {
+ output.WriteRawTag(8);
+ output.WriteInt64(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0L) {
+ size += 1 + pb::CodedOutputStream.ComputeInt64Size(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Int64Value other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0L) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Value = input.ReadInt64();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class UInt64Value : pb::IMessage<UInt64Value> {
+ private static readonly pb::MessageParser<UInt64Value> _parser = new pb::MessageParser<UInt64Value>(() => new UInt64Value());
+ public static pb::MessageParser<UInt64Value> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[3]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_UInt64Value__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public UInt64Value() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public UInt64Value(UInt64Value other) : this() {
+ value_ = other.value_;
+ }
+
+ public UInt64Value Clone() {
+ return new UInt64Value(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private ulong value_;
+ public ulong Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as UInt64Value);
+ }
+
+ public bool Equals(UInt64Value other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0UL) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0UL) {
+ output.WriteRawTag(8);
+ output.WriteUInt64(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0UL) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(UInt64Value other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0UL) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Value = input.ReadUInt64();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class Int32Value : pb::IMessage<Int32Value> {
+ private static readonly pb::MessageParser<Int32Value> _parser = new pb::MessageParser<Int32Value>(() => new Int32Value());
+ public static pb::MessageParser<Int32Value> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[4]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_Int32Value__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public Int32Value() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public Int32Value(Int32Value other) : this() {
+ value_ = other.value_;
+ }
+
+ public Int32Value Clone() {
+ return new Int32Value(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private int value_;
+ public int Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as Int32Value);
+ }
+
+ public bool Equals(Int32Value other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0) {
+ output.WriteRawTag(8);
+ output.WriteInt32(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeInt32Size(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(Int32Value other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Value = input.ReadInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class UInt32Value : pb::IMessage<UInt32Value> {
+ private static readonly pb::MessageParser<UInt32Value> _parser = new pb::MessageParser<UInt32Value>(() => new UInt32Value());
+ public static pb::MessageParser<UInt32Value> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[5]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_UInt32Value__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public UInt32Value() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public UInt32Value(UInt32Value other) : this() {
+ value_ = other.value_;
+ }
+
+ public UInt32Value Clone() {
+ return new UInt32Value(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private uint value_;
+ public uint Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as UInt32Value);
+ }
+
+ public bool Equals(UInt32Value other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != 0) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != 0) {
+ output.WriteRawTag(8);
+ output.WriteUInt32(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(UInt32Value other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != 0) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Value = input.ReadUInt32();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class BoolValue : pb::IMessage<BoolValue> {
+ private static readonly pb::MessageParser<BoolValue> _parser = new pb::MessageParser<BoolValue>(() => new BoolValue());
+ public static pb::MessageParser<BoolValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 8 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[6]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_BoolValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public BoolValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public BoolValue(BoolValue other) : this() {
+ value_ = other.value_;
+ }
+
+ public BoolValue Clone() {
+ return new BoolValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private bool value_;
+ public bool Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as BoolValue);
+ }
+
+ public bool Equals(BoolValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value != false) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value != false) {
+ output.WriteRawTag(8);
+ output.WriteBool(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value != false) {
+ size += 1 + 1;
+ }
+ return size;
+ }
+
+ public void MergeFrom(BoolValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value != false) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 8: {
+ Value = input.ReadBool();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class StringValue : pb::IMessage<StringValue> {
+ private static readonly pb::MessageParser<StringValue> _parser = new pb::MessageParser<StringValue>(() => new StringValue());
+ public static pb::MessageParser<StringValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[7]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_StringValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public StringValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public StringValue(StringValue other) : this() {
+ value_ = other.value_;
+ }
+
+ public StringValue Clone() {
+ return new StringValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private string value_ = "";
+ public string Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value ?? "";
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as StringValue);
+ }
+
+ public bool Equals(StringValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value.Length != 0) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteString(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(StringValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value.Length != 0) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Value = input.ReadString();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ public sealed partial class BytesValue : pb::IMessage<BytesValue> {
+ private static readonly pb::MessageParser<BytesValue> _parser = new pb::MessageParser<BytesValue>(() => new BytesValue());
+ public static pb::MessageParser<BytesValue> Parser { get { return _parser; } }
+
+ private static readonly string[] _fieldNames = new string[] { "value" };
+ private static readonly uint[] _fieldTags = new uint[] { 10 };
+ public static pbr::MessageDescriptor Descriptor {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.Descriptor.MessageTypes[8]; }
+ }
+
+ pbr::FieldAccessorTable pb::IReflectedMessage.Fields {
+ get { return global::Google.Protobuf.WellKnownTypes.Wrappers.internal__static_google_protobuf_BytesValue__FieldAccessorTable; }
+ }
+
+ private bool _frozen = false;
+ public bool IsFrozen { get { return _frozen; } }
+
+ public BytesValue() {
+ OnConstruction();
+ }
+
+ partial void OnConstruction();
+
+ public BytesValue(BytesValue other) : this() {
+ value_ = other.value_;
+ }
+
+ public BytesValue Clone() {
+ return new BytesValue(this);
+ }
+
+ public void Freeze() {
+ if (IsFrozen) {
+ return;
+ }
+ _frozen = true;
+ }
+
+ public const int ValueFieldNumber = 1;
+ private pb::ByteString value_ = pb::ByteString.Empty;
+ public pb::ByteString Value {
+ get { return value_; }
+ set {
+ pb::Freezable.CheckMutable(this);
+ value_ = value ?? pb::ByteString.Empty;
+ }
+ }
+
+ public override bool Equals(object other) {
+ return Equals(other as BytesValue);
+ }
+
+ public bool Equals(BytesValue other) {
+ if (ReferenceEquals(other, null)) {
+ return false;
+ }
+ if (ReferenceEquals(other, this)) {
+ return true;
+ }
+ if (Value != other.Value) return false;
+ return true;
+ }
+
+ public override int GetHashCode() {
+ int hash = 1;
+ if (Value.Length != 0) hash ^= Value.GetHashCode();
+ return hash;
+ }
+
+ public override string ToString() {
+ return pb::JsonFormatter.Default.Format(this);
+ }
+
+ public void WriteTo(pb::CodedOutputStream output) {
+ if (Value.Length != 0) {
+ output.WriteRawTag(10);
+ output.WriteBytes(Value);
+ }
+ }
+
+ public int CalculateSize() {
+ int size = 0;
+ if (Value.Length != 0) {
+ size += 1 + pb::CodedOutputStream.ComputeBytesSize(Value);
+ }
+ return size;
+ }
+
+ public void MergeFrom(BytesValue other) {
+ if (other == null) {
+ return;
+ }
+ if (other.Value.Length != 0) {
+ Value = other.Value;
+ }
+ }
+
+ public void MergeFrom(pb::CodedInputStream input) {
+ uint tag;
+ while (input.ReadTag(out tag)) {
+ switch(tag) {
+ case 0:
+ throw pb::InvalidProtocolBufferException.InvalidTag();
+ default:
+ if (pb::WireFormat.IsEndGroupTag(tag)) {
+ return;
+ }
+ break;
+ case 10: {
+ Value = input.ReadBytes();
+ break;
+ }
+ }
+ }
+ }
+
+ }
+
+ #endregion
+
+}
+
+#endregion Designer generated code
diff --git a/csharp/src/ProtocolBuffers/WireFormat.cs b/csharp/src/ProtocolBuffers/WireFormat.cs
index 7489c2fc..c1712daa 100644
--- a/csharp/src/ProtocolBuffers/WireFormat.cs
+++ b/csharp/src/ProtocolBuffers/WireFormat.cs
@@ -31,7 +31,7 @@
#endregion
using System;
-using Google.Protobuf.Descriptors;
+using Google.Protobuf.Reflection;
namespace Google.Protobuf
{
diff --git a/gmock.BUILD b/gmock.BUILD
new file mode 100644
index 00000000..66cddea9
--- /dev/null
+++ b/gmock.BUILD
@@ -0,0 +1,23 @@
+cc_library(
+ name = "gtest",
+ srcs = [
+ "gmock-1.7.0/gtest/src/gtest-all.cc",
+ "gmock-1.7.0/src/gmock-all.cc",
+ ],
+ includes = [
+ "gmock-1.7.0",
+ "gmock-1.7.0/gtest",
+ "gmock-1.7.0/gtest/include",
+ "gmock-1.7.0/include",
+ ],
+ linkopts = ["-pthread"],
+ visibility = ["//visibility:public"],
+)
+
+cc_library(
+ name = "gtest_main",
+ srcs = ["gmock-1.7.0/src/gmock_main.cc"],
+ linkopts = ["-pthread"],
+ visibility = ["//visibility:public"],
+ deps = [":gtest"],
+)
diff --git a/objectivec/GPBProtocolBuffers.h b/objectivec/GPBProtocolBuffers.h
index a66f295e..0c85259e 100644
--- a/objectivec/GPBProtocolBuffers.h
+++ b/objectivec/GPBProtocolBuffers.h
@@ -42,3 +42,15 @@
#import "GPBUnknownFieldSet.h"
#import "GPBUtilities.h"
#import "GPBWireFormat.h"
+
+// Well-known proto types
+#import "google/protobuf/Any.pbobjc.h"
+#import "google/protobuf/Api.pbobjc.h"
+#import "google/protobuf/Duration.pbobjc.h"
+#import "google/protobuf/Empty.pbobjc.h"
+#import "google/protobuf/FieldMask.pbobjc.h"
+#import "google/protobuf/SourceContext.pbobjc.h"
+#import "google/protobuf/Struct.pbobjc.h"
+#import "google/protobuf/Timestamp.pbobjc.h"
+#import "google/protobuf/Type.pbobjc.h"
+#import "google/protobuf/Wrappers.pbobjc.h"
diff --git a/python/google/protobuf/internal/test_util.py b/python/google/protobuf/internal/test_util.py
index 0cbdbad9..fec65382 100755
--- a/python/google/protobuf/internal/test_util.py
+++ b/python/google/protobuf/internal/test_util.py
@@ -602,6 +602,13 @@ def GoldenFile(filename):
return open(full_path, 'rb')
path = os.path.join(path, '..')
+ # Search internally.
+ path = '.'
+ full_path = os.path.join(path, 'third_party/py/google/protobuf/testdata', filename)
+ if os.path.exists(full_path):
+ # Found it. Load the golden file from the testdata directory.
+ return open(full_path, 'rb')
+
raise RuntimeError(
'Could not find golden files. This test must be run from within the '
'protobuf source package so that it can read test data files from the '
diff --git a/ruby/ext/google/protobuf_c/encode_decode.c b/ruby/ext/google/protobuf_c/encode_decode.c
index fe249d45..f789f6d4 100644
--- a/ruby/ext/google/protobuf_c/encode_decode.c
+++ b/ruby/ext/google/protobuf_c/encode_decode.c
@@ -30,6 +30,18 @@
#include "protobuf.h"
+// This function is equivalent to rb_str_cat(), but unlike the real
+// rb_str_cat(), it doesn't leak memory in some versions of Ruby.
+// For more information, see:
+// https://bugs.ruby-lang.org/issues/11328
+VALUE noleak_rb_str_cat(VALUE rb_str, const char *str, long len) {
+ size_t oldlen = RSTRING_LEN(rb_str);
+ rb_str_modify_expand(rb_str, len);
+ char *p = RSTRING_PTR(rb_str);
+ memcpy(p + oldlen, str, len);
+ rb_str_set_len(rb_str, oldlen + len);
+}
+
// -----------------------------------------------------------------------------
// Parsing.
// -----------------------------------------------------------------------------
@@ -164,7 +176,7 @@ static size_t stringdata_handler(void* closure, const void* hd,
const char* str, size_t len,
const upb_bufhandle* handle) {
VALUE rb_str = (VALUE)closure;
- rb_str_cat(rb_str, str, len);
+ noleak_rb_str_cat(rb_str, str, len);
return len;
}
diff --git a/src/Makefile.am b/src/Makefile.am
index c0ab2bea..18e27772 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -76,7 +76,6 @@ nobase_include_HEADERS = \
google/protobuf/stubs/fastmem.h \
google/protobuf/stubs/hash.h \
google/protobuf/stubs/once.h \
- google/protobuf/stubs/pbconfig.h \
google/protobuf/stubs/platform_macros.h \
google/protobuf/stubs/shared_ptr.h \
google/protobuf/stubs/singleton.h \
diff --git a/src/google/protobuf/any.pb.cc b/src/google/protobuf/any.pb.cc
index 2c492b04..b28cf51b 100644
--- a/src/google/protobuf/any.pb.cc
+++ b/src/google/protobuf/any.pb.cc
@@ -82,9 +82,8 @@ void protobuf_AddDesc_google_2fprotobuf_2fany_2eproto() {
::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
"\n\031google/protobuf/any.proto\022\017google.prot"
"obuf\"&\n\003Any\022\020\n\010type_url\030\001 \001(\t\022\r\n\005value\030\002"
- " \001(\014BC\n\023com.google.protobufB\010AnyProtoP\001\240"
- "\001\001\242\002\003GPB\252\002\026Google.ProtocolBuffersb\006proto"
- "3", 161);
+ " \001(\014B<\n\023com.google.protobufB\010AnyProtoP\001\240"
+ "\001\001\242\002\003GPB\252\002\017Google.Protobufb\006proto3", 154);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/any.proto", &protobuf_RegisterTypes);
Any::default_instance_ = new Any();
diff --git a/src/google/protobuf/any.proto b/src/google/protobuf/any.proto
index 458dfff2..d3ad3acc 100644
--- a/src/google/protobuf/any.proto
+++ b/src/google/protobuf/any.proto
@@ -35,7 +35,7 @@ option java_generate_equals_and_hash = true;
option java_multiple_files = true;
option java_outer_classname = "AnyProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/api.proto b/src/google/protobuf/api.proto
index f368c24d..d6c2a8b3 100644
--- a/src/google/protobuf/api.proto
+++ b/src/google/protobuf/api.proto
@@ -37,6 +37,7 @@ import "google/protobuf/type.proto";
option java_multiple_files = true;
option java_outer_classname = "ApiProto";
option java_package = "com.google.protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/compiler/cpp/cpp_message.cc b/src/google/protobuf/compiler/cpp/cpp_message.cc
index 17f67a7b..b0e38755 100644
--- a/src/google/protobuf/compiler/cpp/cpp_message.cc
+++ b/src/google/protobuf/compiler/cpp/cpp_message.cc
@@ -2932,7 +2932,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
"commontag", SimpleItoa(WireFormat::MakeTag(field)));
if (need_label ||
- (field->is_repeated() && !field->options().packed() && !loops)) {
+ (field->is_repeated() && !field->is_packed() && !loops)) {
printer->Print(
" parse_$name$:\n",
"name", field->name());
@@ -2945,7 +2945,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
}
printer->Indent();
- if (field->options().packed()) {
+ if (field->is_packed()) {
field_generator.GenerateMergeFromCodedStreamWithPacking(printer);
} else {
field_generator.GenerateMergeFromCodedStream(printer);
@@ -2953,7 +2953,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
printer->Outdent();
// Emit code to parse unexpectedly packed or unpacked values.
- if (field->is_packable() && field->options().packed()) {
+ if (field->is_packed()) {
internal::WireFormatLite::WireType wiretype =
WireFormat::WireTypeForFieldType(field->type());
printer->Print("} else if (tag == $uncommontag$) {\n",
@@ -2963,7 +2963,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
printer->Indent();
field_generator.GenerateMergeFromCodedStream(printer);
printer->Outdent();
- } else if (field->is_packable() && !field->options().packed()) {
+ } else if (field->is_packable() && !field->is_packed()) {
internal::WireFormatLite::WireType wiretype =
internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED;
printer->Print("} else if (tag == $uncommontag$) {\n",
@@ -2988,7 +2988,7 @@ GenerateMergeFromCodedStream(io::Printer* printer) {
"if (input->ExpectTag($tag$)) goto parse_loop_$name$;\n",
"tag", SimpleItoa(WireFormat::MakeTag(field)),
"name", field->name());
- } else if (field->is_repeated() && !field->options().packed()) {
+ } else if (field->is_repeated() && !field->is_packed()) {
printer->Print(
"if (input->ExpectTag($tag$)) goto parse_$name$;\n",
"tag", SimpleItoa(WireFormat::MakeTag(field)),
diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.cc b/src/google/protobuf/compiler/csharp/csharp_field_base.cc
index c5662bcb..c9791c1d 100644
--- a/src/google/protobuf/compiler/csharp/csharp_field_base.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_field_base.cc
@@ -38,6 +38,7 @@
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/io/printer.h>
#include <google/protobuf/io/zero_copy_stream.h>
+#include <google/protobuf/stubs/mathlimits.h>
#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/wire_format.h>
@@ -277,11 +278,6 @@ bool FieldGeneratorBase::is_nullable_type() {
}
}
-inline bool IsNaN(double value) {
- // NaN is never equal to anything, even itself.
- return value != value;
-}
-
bool AllPrintableAscii(const std::string& text) {
for(int i = 0; i < text.size(); i++) {
if (text[i] < 0x20 || text[i] > 0x7e) {
@@ -314,7 +310,7 @@ std::string FieldGeneratorBase::default_value() {
return "double.PositiveInfinity";
} else if (value == -numeric_limits<double>::infinity()) {
return "double.NegativeInfinity";
- } else if (IsNaN(value)) {
+ } else if (MathLimits<double>::IsNaN(value)) {
return "double.NaN";
}
return SimpleDtoa(value) + "D";
@@ -325,7 +321,7 @@ std::string FieldGeneratorBase::default_value() {
return "float.PositiveInfinity";
} else if (value == -numeric_limits<float>::infinity()) {
return "float.NegativeInfinity";
- } else if (IsNaN(value)) {
+ } else if (MathLimits<float>::IsNaN(value)) {
return "float.NaN";
}
return SimpleFtoa(value) + "F";
diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.h b/src/google/protobuf/compiler/csharp/csharp_field_base.h
index 349d835b..bffa2062 100644
--- a/src/google/protobuf/compiler/csharp/csharp_field_base.h
+++ b/src/google/protobuf/compiler/csharp/csharp_field_base.h
@@ -58,6 +58,7 @@ class FieldGeneratorBase : public SourceGeneratorBase {
virtual void WriteHash(io::Printer* printer) = 0;
virtual void WriteEquals(io::Printer* printer) = 0;
+ // Currently unused, as we use reflection to generate JSON
virtual void WriteToString(io::Printer* printer) = 0;
protected:
diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.cc b/src/google/protobuf/compiler/csharp/csharp_helpers.cc
index da6a7633..8ecd1dc2 100644
--- a/src/google/protobuf/compiler/csharp/csharp_helpers.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_helpers.cc
@@ -113,7 +113,7 @@ std::string GetFileNamespace(const FileDescriptor* descriptor) {
if (descriptor->options().has_csharp_namespace()) {
return descriptor->options().csharp_namespace();
}
- return descriptor->package();
+ return UnderscoresToCamelCase(descriptor->package(), true, true);
}
std::string GetUmbrellaClassNameInternal(const std::string& proto_file) {
@@ -154,7 +154,8 @@ std::string GetFileUmbrellaNamespace(const FileDescriptor* descriptor) {
// TODO(jtattermusch): can we reuse a utility function?
std::string UnderscoresToCamelCase(const std::string& input,
- bool cap_next_letter) {
+ bool cap_next_letter,
+ bool preserve_period) {
string result;
// Note: I distrust ctype.h due to locales.
for (int i = 0; i < input.size(); i++) {
@@ -180,6 +181,9 @@ std::string UnderscoresToCamelCase(const std::string& input,
cap_next_letter = true;
} else {
cap_next_letter = true;
+ if (input[i] == '.' && preserve_period) {
+ result += '.';
+ }
}
}
// Add a trailing "_" if the name should be altered.
diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.h b/src/google/protobuf/compiler/csharp/csharp_helpers.h
index 4227f980..111feabd 100644
--- a/src/google/protobuf/compiler/csharp/csharp_helpers.h
+++ b/src/google/protobuf/compiler/csharp/csharp_helpers.h
@@ -87,7 +87,11 @@ std::string GetPropertyName(const FieldDescriptor* descriptor);
int GetFixedSize(FieldDescriptor::Type type);
-std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter);
+std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter, bool preserve_period);
+
+inline std::string UnderscoresToCamelCase(const std::string& input, bool cap_next_letter) {
+ return UnderscoresToCamelCase(input, cap_next_letter, false);
+}
std::string UnderscoresToPascalCase(const std::string& input);
@@ -100,6 +104,12 @@ uint FixedMakeTag(const FieldDescriptor* descriptor);
FieldGeneratorBase* CreateFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal);
+// Determines whether the given message is a map entry message, i.e. one implicitly created
+// by protoc due to a map<key, value> field.
+inline bool IsMapEntryMessage(const Descriptor* descriptor) {
+ return descriptor->options().map_entry();
+}
+
// Determines whether we're generating code for the proto representation of descriptors etc,
// for use in the runtime. This is the only type which is allowed to use proto2 syntax,
// and it generates internal classes.
diff --git a/src/google/protobuf/compiler/csharp/csharp_map_field.cc b/src/google/protobuf/compiler/csharp/csharp_map_field.cc
index cb7ce5f0..32c05232 100644
--- a/src/google/protobuf/compiler/csharp/csharp_map_field.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_map_field.cc
@@ -117,12 +117,9 @@ void MapFieldGenerator::WriteEquals(io::Printer* printer) {
variables_,
"if (!$property_name$.Equals(other.$property_name$)) return false;\n");
}
+
void MapFieldGenerator::WriteToString(io::Printer* printer) {
- /*
- variables_["field_name"] = GetFieldName(descriptor_);
- printer->Print(
- variables_,
- "PrintField(\"$field_name$\", has$property_name$, $name$_, writer);\n");*/
+ // TODO: If we ever actually use ToString, we'll need to impleme this...
}
void MapFieldGenerator::GenerateCloningCode(io::Printer* printer) {
diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc
index ac61c2c9..10cf3585 100644
--- a/src/google/protobuf/compiler/csharp/csharp_message.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_message.cc
@@ -117,13 +117,16 @@ void MessageGenerator::GenerateStaticVariables(io::Printer* printer) {
// The descriptor for this type.
printer->Print(
- "internal static pb::FieldAccess.FieldAccessorTable internal__$identifier$__FieldAccessorTable;\n",
+ "internal static pbr::FieldAccessorTable internal__$identifier$__FieldAccessorTable;\n",
"identifier", GetUniqueFileScopeIdentifier(descriptor_),
"full_class_name", full_class_name());
for (int i = 0; i < descriptor_->nested_type_count(); i++) {
- MessageGenerator messageGenerator(descriptor_->nested_type(i));
- messageGenerator.GenerateStaticVariables(printer);
+ // Don't generate accessor table fields for maps...
+ if (!IsMapEntryMessage(descriptor_->nested_type(i))) {
+ MessageGenerator messageGenerator(descriptor_->nested_type(i));
+ messageGenerator.GenerateStaticVariables(printer);
+ }
}
}
@@ -146,12 +149,13 @@ void MessageGenerator::GenerateStaticVariableInitializers(io::Printer* printer)
printer->Print(
vars,
"internal__$identifier$__FieldAccessorTable = \n"
- " new pb::FieldAccess.FieldAccessorTable(typeof($full_class_name$), $descriptor_chain$,\n");
+ " new pbr::FieldAccessorTable(typeof($full_class_name$), $descriptor_chain$,\n");
printer->Print(" new string[] { ");
for (int i = 0; i < descriptor_->field_count(); i++) {
printer->Print("\"$property_name$\", ",
"property_name", GetPropertyName(descriptor_->field(i)));
}
+ printer->Print("}, new string[] { ");
for (int i = 0; i < descriptor_->oneof_decl_count(); i++) {
printer->Print("\"$oneof_name$\", ",
"oneof_name",
@@ -159,10 +163,12 @@ void MessageGenerator::GenerateStaticVariableInitializers(io::Printer* printer)
}
printer->Print("});\n");
- // Generate static member initializers for all nested types.
+ // Generate static member initializers for all non-map-entry nested types.
for (int i = 0; i < descriptor_->nested_type_count(); i++) {
- MessageGenerator messageGenerator(descriptor_->nested_type(i));
- messageGenerator.GenerateStaticVariableInitializers(printer);
+ if (!IsMapEntryMessage(descriptor_->nested_type(i))) {
+ MessageGenerator messageGenerator(descriptor_->nested_type(i));
+ messageGenerator.GenerateStaticVariableInitializers(printer);
+ }
}
}
@@ -211,11 +217,11 @@ void MessageGenerator::Generate(io::Printer* printer) {
printer->Print(
vars,
- "public static pbd::MessageDescriptor Descriptor {\n"
+ "public static pbr::MessageDescriptor Descriptor {\n"
" get { return $descriptor_accessor$; }\n"
"}\n"
"\n"
- "public pb::FieldAccess.FieldAccessorTable Fields {\n"
+ "pbr::FieldAccessorTable pb::IReflectedMessage.Fields {\n"
" get { return $umbrella_class_name$.internal__$identifier$__FieldAccessorTable; }\n"
"}\n"
"\n"
@@ -285,7 +291,7 @@ void MessageGenerator::Generate(io::Printer* printer) {
GenerateMergingMethods(printer);
// Nested messages and enums
- if (descriptor_->enum_type_count() + descriptor_->nested_type_count() > 0) {
+ if (HasNestedGeneratedTypes()) {
printer->Print("#region Nested types\n"
"[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n");
WriteGeneratedCodeAttributes(printer);
@@ -296,8 +302,11 @@ void MessageGenerator::Generate(io::Printer* printer) {
enumGenerator.Generate(printer);
}
for (int i = 0; i < descriptor_->nested_type_count(); i++) {
- MessageGenerator messageGenerator(descriptor_->nested_type(i));
- messageGenerator.Generate(printer);
+ // Don't generate nested types for maps...
+ if (!IsMapEntryMessage(descriptor_->nested_type(i))) {
+ MessageGenerator messageGenerator(descriptor_->nested_type(i));
+ messageGenerator.Generate(printer);
+ }
}
printer->Outdent();
printer->Print("}\n"
@@ -310,6 +319,21 @@ void MessageGenerator::Generate(io::Printer* printer) {
printer->Print("\n");
}
+// Helper to work out whether we need to generate a class to hold nested types/enums.
+// Only tricky because we don't want to generate map entry types.
+bool MessageGenerator::HasNestedGeneratedTypes()
+{
+ if (descriptor_->enum_type_count() > 0) {
+ return true;
+ }
+ for (int i = 0; i < descriptor_->nested_type_count(); i++) {
+ if (!IsMapEntryMessage(descriptor_->nested_type(i))) {
+ return true;
+ }
+ }
+ return false;
+}
+
void MessageGenerator::GenerateCloningCode(io::Printer* printer) {
map<string, string> vars;
vars["class_name"] = class_name();
@@ -430,7 +454,10 @@ void MessageGenerator::GenerateFrameworkMethods(io::Printer* printer) {
printer->Outdent();
printer->Print("}\n\n");
- // TODO(jonskeet): ToString.
+ printer->Print(
+ "public override string ToString() {\n"
+ " return pb::JsonFormatter.Default.Format(this);\n"
+ "}\n\n");
}
void MessageGenerator::GenerateMessageSerializationMethods(io::Printer* printer) {
diff --git a/src/google/protobuf/compiler/csharp/csharp_message.h b/src/google/protobuf/compiler/csharp/csharp_message.h
index 6c7153aa..fbe8a3be 100644
--- a/src/google/protobuf/compiler/csharp/csharp_message.h
+++ b/src/google/protobuf/compiler/csharp/csharp_message.h
@@ -69,6 +69,8 @@ class MessageGenerator : public SourceGeneratorBase {
FieldGeneratorBase* CreateFieldGeneratorInternal(
const FieldDescriptor* descriptor);
+ bool HasNestedGeneratedTypes();
+
std::string class_name();
std::string full_class_name();
diff --git a/src/google/protobuf/compiler/csharp/csharp_umbrella_class.cc b/src/google/protobuf/compiler/csharp/csharp_umbrella_class.cc
index c31aaaa2..57271d17 100644
--- a/src/google/protobuf/compiler/csharp/csharp_umbrella_class.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_umbrella_class.cc
@@ -121,7 +121,7 @@ void UmbrellaClassGenerator::WriteIntroduction(io::Printer* printer) {
"\n"
"using pb = global::Google.Protobuf;\n"
"using pbc = global::Google.Protobuf.Collections;\n"
- "using pbd = global::Google.Protobuf.Descriptors;\n"
+ "using pbr = global::Google.Protobuf.Reflection;\n"
"using scg = global::System.Collections.Generic;\n",
"file_name", file_->name());
@@ -153,10 +153,10 @@ void UmbrellaClassGenerator::WriteIntroduction(io::Printer* printer) {
void UmbrellaClassGenerator::WriteDescriptor(io::Printer* printer) {
printer->Print(
"#region Descriptor\n"
- "public static pbd::FileDescriptor Descriptor {\n"
+ "public static pbr::FileDescriptor Descriptor {\n"
" get { return descriptor; }\n"
"}\n"
- "private static pbd::FileDescriptor descriptor;\n"
+ "private static pbr::FileDescriptor descriptor;\n"
"\n"
"static $umbrella_class_name$() {\n",
"umbrella_class_name", umbrellaClassname_);
@@ -182,8 +182,8 @@ void UmbrellaClassGenerator::WriteDescriptor(io::Printer* printer) {
// -----------------------------------------------------------------
// Invoke InternalBuildGeneratedFileFrom() to build the file.
printer->Print(
- "descriptor = pbd::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,\n");
- printer->Print(" new pbd::FileDescriptor[] {\n");
+ "descriptor = pbr::FileDescriptor.InternalBuildGeneratedFileFrom(descriptorData,\n");
+ printer->Print(" new pbr::FileDescriptor[] {\n");
for (int i = 0; i < file_->dependency_count(); i++) {
printer->Print(
" $full_umbrella_class_name$.Descriptor, \n",
diff --git a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
index 9b645f09..45d122d1 100644
--- a/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
+++ b/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc
@@ -28,6 +28,7 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#include <climits>
#include <fstream>
#include <iostream>
#include <sstream>
diff --git a/src/google/protobuf/compiler/subprocess.cc b/src/google/protobuf/compiler/subprocess.cc
index 61ae4381..a3cff1f8 100644
--- a/src/google/protobuf/compiler/subprocess.cc
+++ b/src/google/protobuf/compiler/subprocess.cc
@@ -171,7 +171,7 @@ bool Subprocess::Communicate(const Message& input, Message* output,
DWORD wait_result =
WaitForMultipleObjects(handle_count, handles, FALSE, INFINITE);
- HANDLE signaled_handle;
+ HANDLE signaled_handle = NULL;
if (wait_result >= WAIT_OBJECT_0 &&
wait_result < WAIT_OBJECT_0 + handle_count) {
signaled_handle = handles[wait_result - WAIT_OBJECT_0];
diff --git a/src/google/protobuf/descriptor.pb.cc b/src/google/protobuf/descriptor.pb.cc
index 1f49cd6d..f7f7832a 100644
--- a/src/google/protobuf/descriptor.pb.cc
+++ b/src/google/protobuf/descriptor.pb.cc
@@ -753,9 +753,9 @@ void protobuf_AddDesc_google_2fprotobuf_2fdescriptor_2eproto() {
"ion\032\206\001\n\010Location\022\020\n\004path\030\001 \003(\005B\002\020\001\022\020\n\004sp"
"an\030\002 \003(\005B\002\020\001\022\030\n\020leading_comments\030\003 \001(\t\022\031"
"\n\021trailing_comments\030\004 \001(\t\022!\n\031leading_det"
- "ached_comments\030\006 \003(\tB^\n\023com.google.proto"
+ "ached_comments\030\006 \003(\tBX\n\023com.google.proto"
"bufB\020DescriptorProtosH\001Z\ndescriptor\242\002\003GP"
- "B\252\002 Google.Protobuf.DescriptorProtos", 4956);
+ "B\252\002\032Google.Protobuf.Reflection", 4950);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/descriptor.proto", &protobuf_RegisterTypes);
FileDescriptorSet::default_instance_ = new FileDescriptorSet();
diff --git a/src/google/protobuf/descriptor.proto b/src/google/protobuf/descriptor.proto
index 82de7b09..db6b9b7e 100644
--- a/src/google/protobuf/descriptor.proto
+++ b/src/google/protobuf/descriptor.proto
@@ -43,7 +43,7 @@ package google.protobuf;
option go_package = "descriptor";
option java_package = "com.google.protobuf";
option java_outer_classname = "DescriptorProtos";
-option csharp_namespace = "Google.Protobuf.DescriptorProtos";
+option csharp_namespace = "Google.Protobuf.Reflection";
option objc_class_prefix = "GPB";
// descriptor.proto must be optimized for speed because reflection-based
diff --git a/src/google/protobuf/duration.pb.cc b/src/google/protobuf/duration.pb.cc
index f78fce21..f4933729 100644
--- a/src/google/protobuf/duration.pb.cc
+++ b/src/google/protobuf/duration.pb.cc
@@ -82,9 +82,9 @@ void protobuf_AddDesc_google_2fprotobuf_2fduration_2eproto() {
::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
"\n\036google/protobuf/duration.proto\022\017google"
".protobuf\"*\n\010Duration\022\017\n\007seconds\030\001 \001(\003\022\r"
- "\n\005nanos\030\002 \001(\005BH\n\023com.google.protobufB\rDu"
- "rationProtoP\001\240\001\001\242\002\003GPB\252\002\026Google.Protocol"
- "Buffersb\006proto3", 175);
+ "\n\005nanos\030\002 \001(\005BA\n\023com.google.protobufB\rDu"
+ "rationProtoP\001\240\001\001\242\002\003GPB\252\002\017Google.Protobuf"
+ "b\006proto3", 168);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/duration.proto", &protobuf_RegisterTypes);
Duration::default_instance_ = new Duration();
diff --git a/src/google/protobuf/duration.proto b/src/google/protobuf/duration.proto
index dc6b575f..0762c3c2 100644
--- a/src/google/protobuf/duration.proto
+++ b/src/google/protobuf/duration.proto
@@ -35,7 +35,7 @@ option java_generate_equals_and_hash = true;
option java_multiple_files = true;
option java_outer_classname = "DurationProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
// A Duration represents a signed, fixed-length span of time represented
diff --git a/src/google/protobuf/empty.proto b/src/google/protobuf/empty.proto
index 94df0397..363ec175 100644
--- a/src/google/protobuf/empty.proto
+++ b/src/google/protobuf/empty.proto
@@ -34,6 +34,7 @@ package google.protobuf;
option java_multiple_files = true;
option java_outer_classname = "EmptyProto";
option java_package = "com.google.protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/field_mask.pb.cc b/src/google/protobuf/field_mask.pb.cc
index 68314fd3..4a80c2f0 100644
--- a/src/google/protobuf/field_mask.pb.cc
+++ b/src/google/protobuf/field_mask.pb.cc
@@ -81,8 +81,8 @@ void protobuf_AddDesc_google_2fprotobuf_2ffield_5fmask_2eproto() {
::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
"\n google/protobuf/field_mask.proto\022\017goog"
"le.protobuf\"\032\n\tFieldMask\022\r\n\005paths\030\001 \003(\tB"
- "F\n\023com.google.protobufB\016FieldMaskProtoP\001"
- "\242\002\003GPB\252\002\026Google.ProtocolBuffersb\006proto3", 159);
+ "\?\n\023com.google.protobufB\016FieldMaskProtoP\001"
+ "\242\002\003GPB\252\002\017Google.Protobufb\006proto3", 152);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/field_mask.proto", &protobuf_RegisterTypes);
FieldMask::default_instance_ = new FieldMask();
diff --git a/src/google/protobuf/field_mask.proto b/src/google/protobuf/field_mask.proto
index ad7a1dfa..c19f4410 100644
--- a/src/google/protobuf/field_mask.proto
+++ b/src/google/protobuf/field_mask.proto
@@ -34,7 +34,7 @@ package google.protobuf;
option java_multiple_files = true;
option java_outer_classname = "FieldMaskProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/map.h b/src/google/protobuf/map.h
index 96d2f201..163ce9dc 100644
--- a/src/google/protobuf/map.h
+++ b/src/google/protobuf/map.h
@@ -168,7 +168,8 @@ class Map {
}
}
-#if __cplusplus >= 201103L && !defined(GOOGLE_PROTOBUF_OS_APPLE)
+#if __cplusplus >= 201103L && !defined(GOOGLE_PROTOBUF_OS_APPLE) && \
+ !defined(GOOGLE_PROTOBUF_OS_NACL) && !defined(GOOGLE_PROTOBUF_OS_ANDROID)
template<class NodeType, class... Args>
void construct(NodeType* p, Args&&... args) {
new (p) NodeType(std::forward<Args>(args)...);
diff --git a/src/google/protobuf/map_entry_lite.h b/src/google/protobuf/map_entry_lite.h
index 52746da5..8de11766 100644
--- a/src/google/protobuf/map_entry_lite.h
+++ b/src/google/protobuf/map_entry_lite.h
@@ -162,7 +162,19 @@ class MapEntryLite : public MessageLite {
if (!KeyWireHandler::Read(input, mutable_key())) return false;
set_has_key();
if (!input->ExpectTag(kValueTag)) break;
+ // BEGIN GOOGLE LOCAL MODIFICATION
+ // Add __has_cpp_attribute and NaCl and Emscripten checks.
+#if defined(__clang__) && defined(__has_cpp_attribute) \
+ && !defined(GOOGLE_PROTOBUF_OS_APPLE)
+#if defined(GOOGLE_PROTOBUF_OS_NACL) || defined(EMSCRIPTEN)
+ [[clang::fallthrough]];
+#elif __has_cpp_attribute(clang::fallthrough)
+ [[clang::fallthrough]];
+#endif
+#else
GOOGLE_FALLTHROUGH_INTENDED;
+#endif
+ // END GOOGLE LOCAL MODIFICATION
case kValueTag:
if (!ValueWireHandler::Read(input, mutable_value())) return false;
diff --git a/src/google/protobuf/source_context.proto b/src/google/protobuf/source_context.proto
index 2c8a17a8..98d4920a 100644
--- a/src/google/protobuf/source_context.proto
+++ b/src/google/protobuf/source_context.proto
@@ -34,6 +34,7 @@ package google.protobuf;
option java_multiple_files = true;
option java_outer_classname = "SourceContextProto";
option java_package = "com.google.protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/struct.pb.cc b/src/google/protobuf/struct.pb.cc
index 30113cdb..1105ae5c 100644
--- a/src/google/protobuf/struct.pb.cc
+++ b/src/google/protobuf/struct.pb.cc
@@ -165,9 +165,9 @@ void protobuf_AddDesc_google_2fprotobuf_2fstruct_2eproto() {
"\000\0220\n\nlist_value\030\006 \001(\0132\032.google.protobuf."
"ListValueH\000B\006\n\004kind\"3\n\tListValue\022&\n\006valu"
"es\030\001 \003(\0132\026.google.protobuf.Value*\033\n\tNull"
- "Value\022\016\n\nNULL_VALUE\020\000BF\n\023com.google.prot"
- "obufB\013StructProtoP\001\240\001\001\242\002\003GPB\252\002\026Google.Pr"
- "otocolBuffersb\006proto3", 581);
+ "Value\022\016\n\nNULL_VALUE\020\000B\?\n\023com.google.prot"
+ "obufB\013StructProtoP\001\240\001\001\242\002\003GPB\252\002\017Google.Pr"
+ "otobufb\006proto3", 574);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/struct.proto", &protobuf_RegisterTypes);
Struct::default_instance_ = new Struct();
diff --git a/src/google/protobuf/struct.proto b/src/google/protobuf/struct.proto
index a0ec961d..4ff10cd0 100644
--- a/src/google/protobuf/struct.proto
+++ b/src/google/protobuf/struct.proto
@@ -35,7 +35,7 @@ option java_generate_equals_and_hash = true;
option java_multiple_files = true;
option java_outer_classname = "StructProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h b/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h
index dd7abf6f..a0116a60 100644
--- a/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h
+++ b/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h
@@ -61,8 +61,8 @@ inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
Atomic32 old_value,
Atomic32 new_value) {
- __atomic_compare_exchange(ptr, &old_value, &new_value, true,
- __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
+ __atomic_compare_exchange_n(ptr, &old_value, new_value, true,
+ __ATOMIC_ACQUIRE, __ATOMIC_ACQUIRE);
return old_value;
}
diff --git a/src/google/protobuf/stubs/common.h b/src/google/protobuf/stubs/common.h
index c3620146..3a081e60 100644
--- a/src/google/protobuf/stubs/common.h
+++ b/src/google/protobuf/stubs/common.h
@@ -203,14 +203,22 @@ typedef unsigned __int16 uint16;
typedef unsigned __int32 uint32;
typedef unsigned __int64 uint64;
#else
-typedef int8_t int8;
-typedef int16_t int16;
-typedef int32_t int32;
+typedef signed char int8;
+typedef short int16;
+typedef int int32;
+// NOTE: This should be "long long" for consistency with upstream, but
+// something is stacked against this particular type for 64bit hashing.
+// Switching it causes an obvious missing hash function (with an unobvious
+// cause) when building the tests.
typedef int64_t int64;
-typedef uint8_t uint8;
-typedef uint16_t uint16;
-typedef uint32_t uint32;
+typedef unsigned char uint8;
+typedef unsigned short uint16;
+typedef unsigned int uint32;
+// NOTE: This should be "unsigned long long" for consistency with upstream, but
+// something is stacked against this particular type for 64bit hashing.
+// Switching it causes an obvious missing hash function (with an unobvious
+// cause) when building the tests.
typedef uint64_t uint64;
#endif
@@ -1459,14 +1467,14 @@ static inline uint32 bswap_32(uint32 x) {
}
#define bswap_32(x) bswap_32(x)
static inline uint64 bswap_64(uint64 x) {
- return (((x & GG_ULONGLONG(0xFF)) << 56) |
- ((x & GG_ULONGLONG(0xFF00)) << 40) |
- ((x & GG_ULONGLONG(0xFF0000)) << 24) |
- ((x & GG_ULONGLONG(0xFF000000)) << 8) |
- ((x & GG_ULONGLONG(0xFF00000000)) >> 8) |
- ((x & GG_ULONGLONG(0xFF0000000000)) >> 24) |
- ((x & GG_ULONGLONG(0xFF000000000000)) >> 40) |
- ((x & GG_ULONGLONG(0xFF00000000000000)) >> 56));
+ return (((x & GOOGLE_ULONGLONG(0xFF)) << 56) |
+ ((x & GOOGLE_ULONGLONG(0xFF00)) << 40) |
+ ((x & GOOGLE_ULONGLONG(0xFF0000)) << 24) |
+ ((x & GOOGLE_ULONGLONG(0xFF000000)) << 8) |
+ ((x & GOOGLE_ULONGLONG(0xFF00000000)) >> 8) |
+ ((x & GOOGLE_ULONGLONG(0xFF0000000000)) >> 24) |
+ ((x & GOOGLE_ULONGLONG(0xFF000000000000)) >> 40) |
+ ((x & GOOGLE_ULONGLONG(0xFF00000000000000)) >> 56));
}
#define bswap_64(x) bswap_64(x)
diff --git a/src/google/protobuf/stubs/hash.h b/src/google/protobuf/stubs/hash.h
index 4da8a5d8..9a6b217a 100755
--- a/src/google/protobuf/stubs/hash.h
+++ b/src/google/protobuf/stubs/hash.h
@@ -37,12 +37,117 @@
#include <string.h>
#include <google/protobuf/stubs/common.h>
-#include <google/protobuf/stubs/pbconfig.h>
+
+#define GOOGLE_PROTOBUF_HAVE_HASH_MAP 1
+#define GOOGLE_PROTOBUF_HAVE_HASH_SET 1
+
+// Use C++11 unordered_{map|set} if available. Otherwise, libc++ always support
+// unordered_{map|set}
+#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X) || \
+ defined(_LIBCPP_VERSION)
+# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
+
+// For XCode >= 4.6: the compiler is clang with libc++.
+// For earlier XCode version: the compiler is gcc-4.2.1 with libstdc++.
+// libc++ provides <unordered_map> and friends even in non C++11 mode,
+// and it does not provide the tr1 library. Therefore the following macro
+// checks against this special case.
+// Note that we should not test the __APPLE_CC__ version number or the
+// __clang__ macro, since the new compiler can still use -stdlib=libstdc++, in
+// which case <unordered_map> is not compilable without -std=c++11
+#elif defined(__APPLE_CC__)
+# if __GNUC__ >= 4
+# define GOOGLE_PROTOBUF_HAS_TR1
+# else
+// Not tested for gcc < 4... These setting can compile under 4.2.1 though.
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE __gnu_cxx
+# include <ext/hash_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
+# include <ext/hash_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
+# endif
+
+// Version checks for gcc.
+#elif defined(__GNUC__)
+// For GCC 4.x+, use tr1::unordered_map/set; otherwise, follow the
+// instructions from:
+// https://gcc.gnu.org/onlinedocs/libstdc++/manual/backwards.html
+# if __GNUC__ >= 4
+# define GOOGLE_PROTOBUF_HAS_TR1
+# elif __GNUC__ >= 3
+# include <backward/hash_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
+# include <backward/hash_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
+# if __GNUC__ == 3 && __GNUC_MINOR__ == 0
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE std // GCC 3.0
+# else
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE __gnu_cxx // GCC 3.1 and later
+# endif
+# else
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE
+# include <hash_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
+# include <hash_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
+# endif
+
+// Version checks for MSC.
+// Apparently Microsoft decided to move hash_map *back* to the std namespace in
+// MSVC 2010:
+// http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx
+// And.. they are moved back to stdext in MSVC 2013 (haven't checked 2012). That
+// said, use unordered_map for MSVC 2010 and beyond is our safest bet.
+#elif defined(_MSC_VER)
+# if _MSC_VER >= 1600 // Since Visual Studio 2010
+# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
+# define GOOGLE_PROTOBUF_HASH_COMPARE std::hash_compare
+# elif _MSC_VER >= 1500 // Since Visual Studio 2008
+# define GOOGLE_PROTOBUF_HAS_TR1
+# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
+# elif _MSC_VER >= 1310
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE stdext
+# include <hash_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
+# include <hash_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
+# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
+# else
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE std
+# include <hash_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
+# include <hash_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
+# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
+# endif
+
+// **ADD NEW COMPILERS SUPPORT HERE.**
+// For other compilers, undefine the macro and fallback to use std::map, in
+// google/protobuf/stubs/hash.h
+#else
+# undef GOOGLE_PROTOBUF_HAVE_HASH_MAP
+# undef GOOGLE_PROTOBUF_HAVE_HASH_SET
+#endif
+
+#if defined(GOOGLE_PROTOBUF_HAS_CXX11_HASH)
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE std
+# include <unordered_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map
+# include <unordered_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set
+#elif defined(GOOGLE_PROTOBUF_HAS_TR1)
+# define GOOGLE_PROTOBUF_HASH_NAMESPACE std::tr1
+# include <tr1/unordered_map>
+# define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map
+# include <tr1/unordered_set>
+# define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set
+#endif
+
+#undef GOOGLE_PROTOBUF_HAS_CXX11_HASH
+#undef GOOGLE_PROTOBUF_HAS_TR1
#if defined(GOOGLE_PROTOBUF_HAVE_HASH_MAP) && \
defined(GOOGLE_PROTOBUF_HAVE_HASH_SET)
-#include GOOGLE_PROTOBUF_HASH_MAP_H
-#include GOOGLE_PROTOBUF_HASH_SET_H
#else
#define GOOGLE_PROTOBUF_MISSING_HASH
#include <map>
@@ -92,13 +197,13 @@ template <typename Key, typename Data,
typename HashFcn = hash<Key>,
typename EqualKey = std::equal_to<Key>,
typename Alloc = std::allocator< std::pair<const Key, Data> > >
-class hash_map : public std::map<Key, Data, HashFcn, EqualKey, Alloc> {
- typedef std::map<Key, Data, HashFcn, EqualKey, Alloc> BaseClass;
+class hash_map : public std::map<Key, Data, HashFcn, Alloc> {
+ typedef std::map<Key, Data, HashFcn, Alloc> BaseClass;
public:
hash_map(int a = 0, const HashFcn& b = HashFcn(),
const EqualKey& c = EqualKey(),
- const Alloc& d = Alloc()) : BaseClass(a, b, c, d) {}
+ const Alloc& d = Alloc()) : BaseClass(b, d) {}
};
template <typename Key,
diff --git a/src/google/protobuf/stubs/pbconfig.h b/src/google/protobuf/stubs/pbconfig.h
deleted file mode 100644
index 0f21c560..00000000
--- a/src/google/protobuf/stubs/pbconfig.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2008 Google Inc. All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-// * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-// * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#ifndef GOOGLE_PROTOBUF_STUBS_PBCONFIG_H__
-#define GOOGLE_PROTOBUF_STUBS_PBCONFIG_H__
-
-#define GOOGLE_PROTOBUF_HAVE_HASH_MAP 1
-#define GOOGLE_PROTOBUF_HAVE_HASH_SET 1
-
-// Use C++11 unordered_{map|set} if available.
-#if __cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X)
-# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
-
-// For XCode >= 4.6: the compiler is clang with libc++.
-// For earlier XCode version: the compiler is gcc-4.2.1 with libstdc++.
-// libc++ provides <unordered_map> and friends even in non C++11 mode,
-// and it does not provide the tr1 library. Therefore the following macro
-// checks against this special case.
-// Note that we should not test the __APPLE_CC__ version number or the
-// __clang__ macro, since the new compiler can still use -stdlib=libstdc++, in
-// which case <unordered_map> is not compilable without -std=c++11
-#elif defined(__APPLE_CC__)
-# if defined(_LIBCPP_VERSION)
-# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
-# elif __GNUC__ >= 4
-# define GOOGLE_PROTOBUF_HAS_TR1
-# else
-// Not tested for gcc < 4... These setting can compile under 4.2.1 though.
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE __gnu_cxx
-# define GOOGLE_PROTOBUF_HASH_MAP_H <ext/hash_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <ext/hash_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
-# endif
-
-// Version checks for gcc.
-#elif defined(__GNUC__)
-// For GCC 4.x+, use tr1::unordered_map/set; otherwise, follow the
-// instructions from:
-// https://gcc.gnu.org/onlinedocs/libstdc++/manual/backwards.html
-# if __GNUC__ >= 4
-# define GOOGLE_PROTOBUF_HAS_TR1
-# elif __GNUC__ >= 3
-# define GOOGLE_PROTOBUF_HASH_MAP_H <backward/hash_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <backward/hash_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
-# if __GNUC__ == 3 && __GNUC_MINOR__ == 0
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE std // GCC 3.0
-# else
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE __gnu_cxx // GCC 3.1 and later
-# endif
-# else
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE
-# define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <hash_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
-# endif
-
-// Version checks for MSC.
-// Apparently Microsoft decided to move hash_map *back* to the std namespace in
-// MSVC 2010:
-// http://blogs.msdn.com/vcblog/archive/2009/05/25/stl-breaking-changes-in-visual-studio-2010-beta-1.aspx
-// And.. they are moved back to stdext in MSVC 2013 (haven't checked 2012). That
-// said, use unordered_map for MSVC 2010 and beyond is our safest bet.
-#elif defined(_MSC_VER)
-# if _MSC_VER >= 1600 // Since Visual Studio 2010
-# define GOOGLE_PROTOBUF_HAS_CXX11_HASH
-# define GOOGLE_PROTOBUF_HASH_COMPARE std::hash_compare
-# elif _MSC_VER >= 1500 // Since Visual Studio 2008
-# define GOOGLE_PROTOBUF_HAS_TR1
-# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
-# elif _MSC_VER >= 1310
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE stdext
-# define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <hash_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
-# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
-# else
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE std
-# define GOOGLE_PROTOBUF_HASH_MAP_H <hash_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS hash_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <hash_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS hash_set
-# define GOOGLE_PROTOBUF_HASH_COMPARE stdext::hash_compare
-# endif
-
-// **ADD NEW COMPILERS SUPPORT HERE.**
-// For other compilers, undefine the macro and fallback to use std::map, in
-// google/protobuf/stubs/hash.h
-#else
-# undef GOOGLE_PROTOBUF_HAVE_HASH_MAP
-# undef GOOGLE_PROTOBUF_HAVE_HASH_SET
-#endif
-
-#if defined(GOOGLE_PROTOBUF_HAS_CXX11_HASH)
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE std
-# define GOOGLE_PROTOBUF_HASH_MAP_H <unordered_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <unordered_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set
-#elif defined(GOOGLE_PROTOBUF_HAS_TR1)
-# define GOOGLE_PROTOBUF_HASH_NAMESPACE std::tr1
-# define GOOGLE_PROTOBUF_HASH_MAP_H <tr1/unordered_map>
-# define GOOGLE_PROTOBUF_HASH_MAP_CLASS unordered_map
-# define GOOGLE_PROTOBUF_HASH_SET_H <tr1/unordered_set>
-# define GOOGLE_PROTOBUF_HASH_SET_CLASS unordered_set
-#endif
-
-#undef GOOGLE_PROTOBUF_HAS_CXX11_HASH
-#undef GOOGLE_PROTOBUF_HAS_TR1
-
-#endif // GOOGLE_PROTOBUF_STUBS_PBCONFIG_H__
diff --git a/src/google/protobuf/stubs/strutil.cc b/src/google/protobuf/stubs/strutil.cc
index 99e8bf1d..2ec62b42 100644
--- a/src/google/protobuf/stubs/strutil.cc
+++ b/src/google/protobuf/stubs/strutil.cc
@@ -31,6 +31,7 @@
// from google3/strings/strutil.cc
#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/mathlimits.h>
#include <errno.h>
#include <float.h> // FLT_DIG and DBL_DIG
@@ -58,11 +59,6 @@
namespace google {
namespace protobuf {
-inline bool IsNaN(double value) {
- // NaN is never equal to anything, even itself.
- return value != value;
-}
-
// These are defined as macros on some platforms. #undef them so that we can
// redefine them.
#undef isxdigit
@@ -1210,7 +1206,7 @@ char* DoubleToBuffer(double value, char* buffer) {
} else if (value == -numeric_limits<double>::infinity()) {
strcpy(buffer, "-inf");
return buffer;
- } else if (IsNaN(value)) {
+ } else if (MathLimits<double>::IsNaN(value)) {
strcpy(buffer, "nan");
return buffer;
}
@@ -1328,7 +1324,7 @@ char* FloatToBuffer(float value, char* buffer) {
} else if (value == -numeric_limits<double>::infinity()) {
strcpy(buffer, "-inf");
return buffer;
- } else if (IsNaN(value)) {
+ } else if (MathLimits<float>::IsNaN(value)) {
strcpy(buffer, "nan");
return buffer;
}
diff --git a/src/google/protobuf/testing/zcgunzip.cc b/src/google/protobuf/testing/zcgunzip.cc
index c9d085c8..76f8cfe1 100644
--- a/src/google/protobuf/testing/zcgunzip.cc
+++ b/src/google/protobuf/testing/zcgunzip.cc
@@ -43,6 +43,15 @@
#include <stdlib.h>
#include <fcntl.h>
+#ifdef _WIN32
+#ifndef STDIN_FILENO
+#define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+#endif
+
#include <google/protobuf/io/gzip_stream.h>
#include <google/protobuf/io/zero_copy_stream_impl.h>
diff --git a/src/google/protobuf/testing/zcgzip.cc b/src/google/protobuf/testing/zcgzip.cc
index e910f321..992ddc6e 100644
--- a/src/google/protobuf/testing/zcgzip.cc
+++ b/src/google/protobuf/testing/zcgzip.cc
@@ -42,6 +42,15 @@
#include <stdlib.h>
#include <fcntl.h>
+#ifdef _WIN32
+#ifndef STDIN_FILENO
+#define STDIN_FILENO 0
+#endif
+#ifndef STDOUT_FILENO
+#define STDOUT_FILENO 1
+#endif
+#endif
+
#include <google/protobuf/io/gzip_stream.h>
#include <google/protobuf/io/zero_copy_stream_impl.h>
diff --git a/src/google/protobuf/text_format_unittest.cc b/src/google/protobuf/text_format_unittest.cc
index 1b18c5ed..76ce9875 100644
--- a/src/google/protobuf/text_format_unittest.cc
+++ b/src/google/protobuf/text_format_unittest.cc
@@ -46,6 +46,7 @@
#include <google/protobuf/io/tokenizer.h>
#include <google/protobuf/io/zero_copy_stream_impl.h>
#include <google/protobuf/stubs/strutil.h>
+#include <google/protobuf/stubs/mathlimits.h>
#include <google/protobuf/stubs/substitute.h>
#include <google/protobuf/testing/googletest.h>
#include <gtest/gtest.h>
@@ -57,11 +58,6 @@ namespace protobuf {
// Can't use an anonymous namespace here due to brokenness of Tru64 compiler.
namespace text_format_unittest {
-inline bool IsNaN(double value) {
- // NaN is never equal to anything, even itself.
- return value != value;
-}
-
// A basic string with different escapable characters for testing.
const string kEscapeTestString =
"\"A string with ' characters \n and \r newlines and \t tabs and \001 "
@@ -898,8 +894,8 @@ TEST_F(TextFormatTest, ParseExotic) {
EXPECT_EQ(message.repeated_double(8), numeric_limits<double>::infinity());
EXPECT_EQ(message.repeated_double(9), -numeric_limits<double>::infinity());
EXPECT_EQ(message.repeated_double(10), -numeric_limits<double>::infinity());
- EXPECT_TRUE(IsNaN(message.repeated_double(11)));
- EXPECT_TRUE(IsNaN(message.repeated_double(12)));
+ EXPECT_TRUE(MathLimits<double>::IsNaN(message.repeated_double(11)));
+ EXPECT_TRUE(MathLimits<double>::IsNaN(message.repeated_double(12)));
// Note: Since these string literals have \0's in them, we must explicitly
// pass their sizes to string's constructor.
diff --git a/src/google/protobuf/timestamp.pb.cc b/src/google/protobuf/timestamp.pb.cc
index 877dc8f3..5b2f4ee3 100644
--- a/src/google/protobuf/timestamp.pb.cc
+++ b/src/google/protobuf/timestamp.pb.cc
@@ -82,9 +82,9 @@ void protobuf_AddDesc_google_2fprotobuf_2ftimestamp_2eproto() {
::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
"\n\037google/protobuf/timestamp.proto\022\017googl"
"e.protobuf\"+\n\tTimestamp\022\017\n\007seconds\030\001 \001(\003"
- "\022\r\n\005nanos\030\002 \001(\005BI\n\023com.google.protobufB\016"
- "TimestampProtoP\001\240\001\001\242\002\003GPB\252\002\026Google.Proto"
- "colBuffersb\006proto3", 178);
+ "\022\r\n\005nanos\030\002 \001(\005BB\n\023com.google.protobufB\016"
+ "TimestampProtoP\001\240\001\001\242\002\003GPB\252\002\017Google.Proto"
+ "bufb\006proto3", 171);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/timestamp.proto", &protobuf_RegisterTypes);
Timestamp::default_instance_ = new Timestamp();
diff --git a/src/google/protobuf/timestamp.proto b/src/google/protobuf/timestamp.proto
index d49bd766..11f258da 100644
--- a/src/google/protobuf/timestamp.proto
+++ b/src/google/protobuf/timestamp.proto
@@ -35,7 +35,7 @@ option java_generate_equals_and_hash = true;
option java_multiple_files = true;
option java_outer_classname = "TimestampProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/type.proto b/src/google/protobuf/type.proto
index ace5d995..ce22d33d 100644
--- a/src/google/protobuf/type.proto
+++ b/src/google/protobuf/type.proto
@@ -37,6 +37,7 @@ import "google/protobuf/source_context.proto";
option java_multiple_files = true;
option java_outer_classname = "TypeProto";
option java_package = "com.google.protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/src/google/protobuf/unknown_field_set.cc b/src/google/protobuf/unknown_field_set.cc
index 76644900..93f0f206 100644
--- a/src/google/protobuf/unknown_field_set.cc
+++ b/src/google/protobuf/unknown_field_set.cc
@@ -50,8 +50,13 @@ namespace {
// instantiate the UnknownFieldSet dynamically only when required.
UnknownFieldSet* default_unknown_field_set_instance_ = NULL;
+void DeleteDefaultUnknownFieldSet() {
+ delete default_unknown_field_set_instance_;
+}
+
void InitDefaultUnknownFieldSet() {
default_unknown_field_set_instance_ = new UnknownFieldSet();
+ internal::OnShutdown(&DeleteDefaultUnknownFieldSet);
}
GOOGLE_PROTOBUF_DECLARE_ONCE(default_unknown_field_set_once_init_);
diff --git a/src/google/protobuf/util/field_comparator.cc b/src/google/protobuf/util/field_comparator.cc
index b7676a88..9f613265 100644
--- a/src/google/protobuf/util/field_comparator.cc
+++ b/src/google/protobuf/util/field_comparator.cc
@@ -106,6 +106,7 @@ FieldComparator::ComparisonResult DefaultFieldComparator::Compare(
default:
GOOGLE_LOG(FATAL) << "No comparison code for field " << field->full_name()
<< " of CppType = " << field->cpp_type();
+ return DIFFERENT;
}
}
diff --git a/src/google/protobuf/util/internal/datapiece.cc b/src/google/protobuf/util/internal/datapiece.cc
index 72b737e9..944fb2e3 100644
--- a/src/google/protobuf/util/internal/datapiece.cc
+++ b/src/google/protobuf/util/internal/datapiece.cc
@@ -36,6 +36,7 @@
#include <google/protobuf/util/internal/utility.h>
#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/mathutil.h>
+#include <google/protobuf/stubs/mathlimits.h>
namespace google {
namespace protobuf {
@@ -78,7 +79,7 @@ StatusOr<To> NumberConvertAndCheck(From before) {
// For conversion between double and float only.
template <typename To, typename From>
StatusOr<To> FloatingPointConvertAndCheck(From before) {
- if (isnan(before)) return std::numeric_limits<To>::quiet_NaN();
+ if (MathLimits<From>::IsNaN(before)) return std::numeric_limits<To>::quiet_NaN();
To after = static_cast<To>(before);
if (MathUtil::AlmostEquals<To>(after, before)) {
diff --git a/src/google/protobuf/util/internal/type_info_test_helper.cc b/src/google/protobuf/util/internal/type_info_test_helper.cc
index f7aea857..177b96e2 100644
--- a/src/google/protobuf/util/internal/type_info_test_helper.cc
+++ b/src/google/protobuf/util/internal/type_info_test_helper.cc
@@ -97,6 +97,7 @@ ProtoStreamObjectSource* TypeInfoTestHelper::NewProtoSource(
}
}
GOOGLE_LOG(FATAL) << "Can not reach here.";
+ return NULL;
}
ProtoStreamObjectWriter* TypeInfoTestHelper::NewProtoWriter(
@@ -110,6 +111,7 @@ ProtoStreamObjectWriter* TypeInfoTestHelper::NewProtoWriter(
}
}
GOOGLE_LOG(FATAL) << "Can not reach here.";
+ return NULL;
}
DefaultValueObjectWriter* TypeInfoTestHelper::NewDefaultValueWriter(
@@ -121,6 +123,7 @@ DefaultValueObjectWriter* TypeInfoTestHelper::NewDefaultValueWriter(
}
}
GOOGLE_LOG(FATAL) << "Can not reach here.";
+ return NULL;
}
} // namespace testing
diff --git a/src/google/protobuf/util/internal/utility.cc b/src/google/protobuf/util/internal/utility.cc
index f550f43b..794777d4 100644
--- a/src/google/protobuf/util/internal/utility.cc
+++ b/src/google/protobuf/util/internal/utility.cc
@@ -41,6 +41,7 @@
#include <google/protobuf/util/internal/constants.h>
#include <google/protobuf/stubs/strutil.h>
#include <google/protobuf/stubs/map_util.h>
+#include <google/protobuf/stubs/mathlimits.h>
namespace google {
namespace protobuf {
@@ -302,7 +303,7 @@ bool IsMap(const google::protobuf::Field& field,
string DoubleAsString(double value) {
if (value == std::numeric_limits<double>::infinity()) return "Infinity";
if (value == -std::numeric_limits<double>::infinity()) return "-Infinity";
- if (::isnan(value)) return "NaN";
+ if (google::protobuf::MathLimits<double>::IsNaN(value)) return "NaN";
return SimpleDtoa(value);
}
diff --git a/src/google/protobuf/util/message_differencer.h b/src/google/protobuf/util/message_differencer.h
index 05548897..e002a0f3 100644
--- a/src/google/protobuf/util/message_differencer.h
+++ b/src/google/protobuf/util/message_differencer.h
@@ -289,20 +289,11 @@ class LIBPROTOBUF_EXPORT MessageDifferencer {
MapKeyComparator();
virtual ~MapKeyComparator();
- // The first IsMatch without parent_fields is only for backward
- // compatibility. New users should override the second one instead.
- //
- // Deprecated.
- // TODO(ykzhu): remove this function.
- virtual bool IsMatch(const Message& message1,
- const Message& message2) const {
- GOOGLE_CHECK(false) << "This function shouldn't get called";
- return false;
- }
virtual bool IsMatch(const Message& message1,
const Message& message2,
const vector<SpecificField>& parent_fields) const {
- return IsMatch(message1, message2);
+ GOOGLE_CHECK(false) << "IsMatch() is not implemented.";
+ return false;
}
private:
diff --git a/src/google/protobuf/wire_format.h b/src/google/protobuf/wire_format.h
index 8de491a6..84270fee 100644
--- a/src/google/protobuf/wire_format.h
+++ b/src/google/protobuf/wire_format.h
@@ -290,7 +290,7 @@ class LIBPROTOBUF_EXPORT UnknownFieldSetFieldSkipper : public FieldSkipper {
inline WireFormatLite::WireType WireFormat::WireTypeForField(
const FieldDescriptor* field) {
- if (field->options().packed()) {
+ if (field->is_packed()) {
return WireFormatLite::WIRETYPE_LENGTH_DELIMITED;
} else {
return WireTypeForFieldType(field->type());
diff --git a/src/google/protobuf/wire_format_unittest.cc b/src/google/protobuf/wire_format_unittest.cc
index 4b151f97..aef22b29 100644
--- a/src/google/protobuf/wire_format_unittest.cc
+++ b/src/google/protobuf/wire_format_unittest.cc
@@ -795,9 +795,73 @@ TEST(WireFormatTest, CompatibleTypes) {
ASSERT_EQ(static_cast<uint32>(data), msg5.data());
}
-class Proto3PrimitiveRepeatedWireFormatTest
- : public ::testing::TestWithParam<bool> {
+class Proto3PrimitiveRepeatedWireFormatTest : public ::testing::Test {
protected:
+ Proto3PrimitiveRepeatedWireFormatTest()
+ : packedTestAllTypes_(
+ "\xFA\x01\x01\x01"
+ "\x82\x02\x01\x01"
+ "\x8A\x02\x01\x01"
+ "\x92\x02\x01\x01"
+ "\x9A\x02\x01\x02"
+ "\xA2\x02\x01\x02"
+ "\xAA\x02\x04\x01\x00\x00\x00"
+ "\xB2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\xBA\x02\x04\x01\x00\x00\x00"
+ "\xC2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\xCA\x02\x04\x00\x00\x80\x3f"
+ "\xD2\x02\x08\x00\x00\x00\x00\x00\x00\xf0\x3f"
+ "\xDA\x02\x01\x01"
+ "\x9A\x03\x01\x01",
+ 86),
+ packedTestUnpackedTypes_(
+ "\x0A\x01\x01"
+ "\x12\x01\x01"
+ "\x1A\x01\x01"
+ "\x22\x01\x01"
+ "\x2A\x01\x02"
+ "\x32\x01\x02"
+ "\x3A\x04\x01\x00\x00\x00"
+ "\x42\x08\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\x4A\x04\x01\x00\x00\x00"
+ "\x52\x08\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\x5A\x04\x00\x00\x80\x3f"
+ "\x62\x08\x00\x00\x00\x00\x00\x00\xf0\x3f"
+ "\x6A\x01\x01"
+ "\x72\x01\x01",
+ 72),
+ unpackedTestAllTypes_(
+ "\xF8\x01\x01"
+ "\x80\x02\x01"
+ "\x88\x02\x01"
+ "\x90\x02\x01"
+ "\x98\x02\x02"
+ "\xA0\x02\x02"
+ "\xAD\x02\x01\x00\x00\x00"
+ "\xB1\x02\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\xBD\x02\x01\x00\x00\x00"
+ "\xC1\x02\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\xCD\x02\x00\x00\x80\x3f"
+ "\xD1\x02\x00\x00\x00\x00\x00\x00\xf0\x3f"
+ "\xD8\x02\x01"
+ "\x98\x03\x01",
+ 72),
+ unpackedTestUnpackedTypes_(
+ "\x08\x01"
+ "\x10\x01"
+ "\x18\x01"
+ "\x20\x01"
+ "\x28\x02"
+ "\x30\x02"
+ "\x3D\x01\x00\x00\x00"
+ "\x41\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\x4D\x01\x00\x00\x00"
+ "\x51\x01\x00\x00\x00\x00\x00\x00\x00"
+ "\x5D\x00\x00\x80\x3f"
+ "\x61\x00\x00\x00\x00\x00\x00\xf0\x3f"
+ "\x68\x01"
+ "\x70\x01",
+ 58) {}
template <class Proto>
void SetProto3PrimitiveRepeatedFields(Proto* message) {
message->add_repeated_int32(1);
@@ -837,8 +901,7 @@ class Proto3PrimitiveRepeatedWireFormatTest
}
template <class Proto>
- void TestProto3PrimitiveRepeatedFields(Proto* message,
- const string& expected) {
+ void TestSerialization(Proto* message, const string& expected) {
SetProto3PrimitiveRepeatedFields(message);
int size = message->ByteSize();
@@ -851,13 +914,8 @@ class Proto3PrimitiveRepeatedWireFormatTest
message->SerializeWithCachedSizes(&output);
ASSERT_FALSE(output.HadError());
}
-
EXPECT_TRUE(expected == generated_data);
- message->Clear();
- message->ParseFromString(generated_data);
- ExpectProto3PrimitiveRepeatedFieldsSet(*message);
-
// Serialize using the dynamic code.
string dynamic_data;
{
@@ -866,64 +924,38 @@ class Proto3PrimitiveRepeatedWireFormatTest
WireFormat::SerializeWithCachedSizes(*message, size, &output);
ASSERT_FALSE(output.HadError());
}
-
EXPECT_TRUE(expected == dynamic_data);
+ }
+
+ template <class Proto>
+ void TestParsing(Proto* message, const string& compatible_data) {
+ message->Clear();
+ message->ParseFromString(compatible_data);
+ ExpectProto3PrimitiveRepeatedFieldsSet(*message);
message->Clear();
io::CodedInputStream input(
- reinterpret_cast<const uint8*>(dynamic_data.data()),
- dynamic_data.size());
+ reinterpret_cast<const uint8*>(compatible_data.data()),
+ compatible_data.size());
WireFormat::ParseAndMergePartial(&input, message);
ExpectProto3PrimitiveRepeatedFieldsSet(*message);
}
+
+ const string packedTestAllTypes_;
+ const string packedTestUnpackedTypes_;
+ const string unpackedTestAllTypes_;
+ const string unpackedTestUnpackedTypes_;
};
-INSTANTIATE_TEST_CASE_P(SetPacked,
- Proto3PrimitiveRepeatedWireFormatTest,
- ::testing::Values(false, true));
-TEST_P(Proto3PrimitiveRepeatedWireFormatTest, Proto3PrimitiveRepeated) {
+TEST_F(Proto3PrimitiveRepeatedWireFormatTest, Proto3PrimitiveRepeated) {
proto3_arena_unittest::TestAllTypes packed_message;
proto3_arena_unittest::TestUnpackedTypes unpacked_message;
-
- const string packedExpected(
- "\xFA\x01\x01\x01"
- "\x82\x02\x01\x01"
- "\x8A\x02\x01\x01"
- "\x92\x02\x01\x01"
- "\x9A\x02\x01\x02"
- "\xA2\x02\x01\x02"
- "\xAA\x02\x04\x01\x00\x00\x00"
- "\xB2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00"
- "\xBA\x02\x04\x01\x00\x00\x00"
- "\xC2\x02\x08\x01\x00\x00\x00\x00\x00\x00\x00"
- "\xCA\x02\x04\x00\x00\x80\x3f"
- "\xD2\x02\x08\x00\x00\x00\x00\x00\x00\xf0\x3f"
- "\xDA\x02\x01\x01"
- "\x9A\x03\x01\x01",
- 86);
-
- const string unpackedExpected(
- "\x08\x01"
- "\x10\x01"
- "\x18\x01"
- "\x20\x01"
- "\x28\x02"
- "\x30\x02"
- "\x3D\x01\x00\x00\x00"
- "\x41\x01\x00\x00\x00\x00\x00\x00\x00"
- "\x4D\x01\x00\x00\x00"
- "\x51\x01\x00\x00\x00\x00\x00\x00\x00"
- "\x5D\x00\x00\x80\x3f"
- "\x61\x00\x00\x00\x00\x00\x00\xf0\x3f"
- "\x68\x01"
- "\x70\x01",
- 58);
-
- if (GetParam()) {
- TestProto3PrimitiveRepeatedFields(&packed_message, packedExpected);
- } else {
- TestProto3PrimitiveRepeatedFields(&unpacked_message, unpackedExpected);
- }
+ TestSerialization(&packed_message, packedTestAllTypes_);
+ TestParsing(&packed_message, packedTestAllTypes_);
+ TestParsing(&packed_message, unpackedTestAllTypes_);
+ TestSerialization(&unpacked_message, unpackedTestUnpackedTypes_);
+ TestParsing(&unpacked_message, packedTestUnpackedTypes_);
+ TestParsing(&unpacked_message, unpackedTestUnpackedTypes_);
}
class WireFormatInvalidInputTest : public testing::Test {
diff --git a/src/google/protobuf/wrappers.pb.cc b/src/google/protobuf/wrappers.pb.cc
index ffc77f1c..fb7330f9 100644
--- a/src/google/protobuf/wrappers.pb.cc
+++ b/src/google/protobuf/wrappers.pb.cc
@@ -262,9 +262,9 @@ void protobuf_AddDesc_google_2fprotobuf_2fwrappers_2eproto() {
"e\030\001 \001(\004\"\033\n\nInt32Value\022\r\n\005value\030\001 \001(\005\"\034\n\013"
"UInt32Value\022\r\n\005value\030\001 \001(\r\"\032\n\tBoolValue\022"
"\r\n\005value\030\001 \001(\010\"\034\n\013StringValue\022\r\n\005value\030\001"
- " \001(\t\"\033\n\nBytesValue\022\r\n\005value\030\001 \001(\014BE\n\023com"
+ " \001(\t\"\033\n\nBytesValue\022\r\n\005value\030\001 \001(\014B>\n\023com"
".google.protobufB\rWrappersProtoP\001\242\002\003GPB\252"
- "\002\026Google.ProtocolBuffersb\006proto3", 392);
+ "\002\017Google.Protobufb\006proto3", 385);
::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
"google/protobuf/wrappers.proto", &protobuf_RegisterTypes);
DoubleValue::default_instance_ = new DoubleValue();
diff --git a/src/google/protobuf/wrappers.proto b/src/google/protobuf/wrappers.proto
index 14725524..6d3181bf 100644
--- a/src/google/protobuf/wrappers.proto
+++ b/src/google/protobuf/wrappers.proto
@@ -40,7 +40,7 @@ package google.protobuf;
option java_multiple_files = true;
option java_outer_classname = "WrappersProto";
option java_package = "com.google.protobuf";
-option csharp_namespace = "Google.Protobuf";
+option csharp_namespace = "Google.Protobuf.WellKnownTypes";
option objc_class_prefix = "GPB";
diff --git a/update_file_lists.sh b/update_file_lists.sh
index aa0d15ae..34443456 100755
--- a/update_file_lists.sh
+++ b/update_file_lists.sh
@@ -57,6 +57,7 @@ WKT_PROTOS=$(get_variable_value $MAKEFILE nobase_dist_proto_DATA)
COMMON_TEST_SOURCES=$(get_source_files $MAKEFILE COMMON_TEST_SOURCES)
TEST_SOURCES=$(get_source_files $MAKEFILE protobuf_test_SOURCES)
LITE_TEST_SOURCES=$(get_source_files $MAKEFILE protobuf_lite_test_SOURCES)
+TEST_PLUGIN_SOURCES=$(get_source_files $MAKEFILE test_plugin_SOURCES)
################################################################################
# Update cmake files.
@@ -177,3 +178,5 @@ set_bazel_value $BAZEL_BUILD well_known_protos "" $WKT_PROTOS
set_bazel_value $BAZEL_BUILD test_protos "" $PROTOS
set_bazel_value $BAZEL_BUILD common_test_srcs $BAZEL_PREFIX $COMMON_TEST_SOURCES
set_bazel_value $BAZEL_BUILD test_srcs $BAZEL_PREFIX $TEST_SOURCES
+set_bazel_value $BAZEL_BUILD test_plugin_srcs $BAZEL_PREFIX $TEST_PLUGIN_SOURCES
+