From 06e6915229d381bc3a2f6bbb5dd348741f394ba7 Mon Sep 17 00:00:00 2001 From: LonelyFool <2655294004@qq.com> Date: Sun, 18 Jul 2021 05:33:44 +0000 Subject: [PATCH] android super.img tools --- lib/protobuf/Android.bp | 808 - lib/protobuf/BUILD | 1208 -- lib/protobuf/CHANGES.txt | 2123 -- lib/protobuf/CONTRIBUTING.md | 98 - lib/protobuf/CONTRIBUTORS.txt | 102 - lib/protobuf/CleanSpec.mk | 49 - lib/protobuf/LICENSE | 32 - lib/protobuf/METADATA | 18 - lib/protobuf/MODULE_LICENSE_APACHE2 | 0 lib/protobuf/Makefile.am | 1262 -- lib/protobuf/NOTICE | 1 - lib/protobuf/OWNERS | 4 - lib/protobuf/Protobuf.podspec | 42 - lib/protobuf/README.android | 30 - lib/protobuf/README.md | 85 - lib/protobuf/TEST_MAPPING | 7 - lib/protobuf/WORKSPACE | 77 - lib/protobuf/android/config.h | 155 - lib/protobuf/appveyor.bat | 48 - lib/protobuf/appveyor.yml | 47 - lib/protobuf/autogen.sh | 40 - lib/protobuf/benchmarks/Makefile.am | 658 - lib/protobuf/benchmarks/README.md | 243 - lib/protobuf/benchmarks/__init__.py | 0 lib/protobuf/benchmarks/benchmarks.proto | 63 - lib/protobuf/benchmarks/cpp/cpp_benchmark.cc | 254 - .../proto2/benchmark_message1_proto2.proto | 78 - .../proto2/dataset.google_message1_proto2.pb | Bin 289 -> 0 bytes .../proto3/benchmark_message1_proto3.proto | 78 - .../proto3/dataset.google_message1_proto3.pb | Bin 289 -> 0 bytes .../google_message2/benchmark_message2.proto | 76 - .../dataset.google_message2.pb | Bin 84625 -> 0 bytes .../google_message3/benchmark_message3.proto | 534 - .../benchmark_message3_1.proto | 1280 -- .../benchmark_message3_2.proto | 499 - .../benchmark_message3_3.proto | 466 - .../benchmark_message3_4.proto | 491 - .../benchmark_message3_5.proto | 473 - .../benchmark_message3_6.proto | 454 - .../benchmark_message3_7.proto | 56 - .../benchmark_message3_8.proto | 1900 -- .../google_message4/benchmark_message4.proto | 454 - .../benchmark_message4_1.proto | 474 - .../benchmark_message4_2.proto | 292 - .../benchmark_message4_3.proto | 751 - lib/protobuf/benchmarks/download_data.sh | 5 - .../benchmarks/go/go_benchmark_test.go | 124 - lib/protobuf/benchmarks/google_size.proto | 138 - lib/protobuf/benchmarks/java/pom.xml | 98 - .../protobuf/ProtoCaliperBenchmark.java | 214 - lib/protobuf/benchmarks/js/benchmark_suite.js | 33 - lib/protobuf/benchmarks/js/js_benchmark.js | 82 - lib/protobuf/benchmarks/php/PhpBenchmark.php | 170 - lib/protobuf/benchmarks/php/autoload.php | 25 - .../protobuf.js/generate_pbjs_files.js | 25 - .../protobuf.js/protobufjs_benchmark.js | 66 - lib/protobuf/benchmarks/python/__init__.py | 0 .../benchmarks/python/py_benchmark.py | 161 - .../python/python_benchmark_messages.cc | 29 - lib/protobuf/benchmarks/util/__init__.py | 0 .../benchmarks/util/big_query_utils.py | 189 - .../util/data_proto2_to_proto3_util.h | 64 - .../benchmarks/util/gogo_data_scrubber.cc | 74 - .../benchmarks/util/proto3_data_stripper.cc | 74 - .../benchmarks/util/protoc-gen-gogoproto.cc | 103 - .../util/protoc-gen-proto2_to_proto3.cc | 115 - lib/protobuf/benchmarks/util/result_parser.py | 300 - .../benchmarks/util/result_uploader.py | 107 - .../util/schema_proto2_to_proto3_util.h | 194 - lib/protobuf/build.gradle | 141 - lib/protobuf/cmake/CMakeLists.txt | 240 - lib/protobuf/cmake/README.md | 345 - lib/protobuf/cmake/conformance.cmake | 50 - lib/protobuf/cmake/examples.cmake | 57 - lib/protobuf/cmake/extract_includes.bat.in | 130 - lib/protobuf/cmake/install.cmake | 150 - lib/protobuf/cmake/libprotobuf-lite.cmake | 77 - lib/protobuf/cmake/libprotobuf.cmake | 133 - lib/protobuf/cmake/libprotoc.cmake | 182 - .../cmake/protobuf-config-version.cmake.in | 60 - lib/protobuf/cmake/protobuf-config.cmake.in | 127 - lib/protobuf/cmake/protobuf-lite.pc.cmake | 11 - lib/protobuf/cmake/protobuf-module.cmake.in | 189 - lib/protobuf/cmake/protobuf-options.cmake | 7 - lib/protobuf/cmake/protobuf.pc.cmake | 11 - lib/protobuf/cmake/protoc.cmake | 16 - lib/protobuf/cmake/tests.cmake | 249 - lib/protobuf/cmake/version.rc.in | 45 - lib/protobuf/compiler_config_setting.bzl | 21 - lib/protobuf/composer.json | 23 - lib/protobuf/config/config.h | 155 - lib/protobuf/configure.ac | 234 - lib/protobuf/conformance/ConformanceJava.java | 354 - .../conformance/ConformanceJavaLite.java | 125 - lib/protobuf/conformance/Makefile.am | 378 - lib/protobuf/conformance/README.md | 71 - lib/protobuf/conformance/autoload.php | 21 - .../binary_json_conformance_suite.cc | 2460 --- .../binary_json_conformance_suite.h | 121 - lib/protobuf/conformance/conformance.proto | 176 - lib/protobuf/conformance/conformance_cpp.cc | 283 - .../conformance/conformance_nodejs.js | 186 - lib/protobuf/conformance/conformance_objc.m | 210 - lib/protobuf/conformance/conformance_php.php | 120 - .../conformance/conformance_python.py | 216 - lib/protobuf/conformance/conformance_ruby.rb | 137 - lib/protobuf/conformance/conformance_test.cc | 435 - lib/protobuf/conformance/conformance_test.h | 319 - .../conformance/conformance_test_main.cc | 40 - .../conformance/conformance_test_runner.cc | 343 - lib/protobuf/conformance/failure_list_cpp.txt | 36 - .../conformance/failure_list_csharp.txt | 2 - .../conformance/failure_list_java.txt | 47 - lib/protobuf/conformance/failure_list_js.txt | 13 - .../conformance/failure_list_objc.txt | 2 - lib/protobuf/conformance/failure_list_php.txt | 20 - .../conformance/failure_list_php_c.txt | 44 - .../conformance/failure_list_php_zts_c.txt | 225 - .../failure_list_python-post26.txt | 2 - .../conformance/failure_list_python.txt | 21 - .../conformance/failure_list_python_cpp.txt | 22 - .../conformance/failure_list_ruby.txt | 66 - .../conformance/failure_list_ruby_mac.txt | 66 - .../text_format_conformance_suite.cc | 317 - .../text_format_conformance_suite.h | 69 - .../text_format_failure_list_csharp.txt | 8 - .../text_format_failure_list_java.txt | 6 - .../text_format_failure_list_php.txt | 8 - .../text_format_failure_list_python.txt | 5 - .../text_format_failure_list_ruby.txt | 8 - .../conformance/third_party/jsoncpp/json.h | 2075 -- .../third_party/jsoncpp/jsoncpp.cpp | 5192 ----- .../conformance/update_failure_list.py | 73 - lib/protobuf/csharp/.gitignore | 34 - lib/protobuf/csharp/CHANGES.txt | 148 - .../csharp/Google.Protobuf.Tools.nuspec | 39 - .../csharp/Google.Protobuf.Tools.targets | 11 - lib/protobuf/csharp/README.md | 96 - lib/protobuf/csharp/build_packages.bat | 10 - lib/protobuf/csharp/build_tools.sh | 52 - lib/protobuf/csharp/buildall.bat | 13 - lib/protobuf/csharp/buildall.sh | 17 - .../csharp/protos/unittest_issues.proto | 126 - .../google/protobuf/map_unittest_proto3.proto | 120 - .../protobuf/unittest_import_proto3.proto | 68 - .../unittest_import_public_proto3.proto | 42 - .../src/google/protobuf/unittest_proto3.proto | 388 - .../protobuf/unittest_well_known_types.proto | 114 - .../Google.Protobuf.Test/ByteStringTest.cs | 171 - .../CodedInputStreamExtensions.cs | 53 - .../CodedInputStreamTest.cs | 598 - .../CodedOutputStreamTest.cs | 419 - .../Collections/MapFieldTest.cs | 532 - .../Collections/RepeatedFieldTest.cs | 746 - .../PropertyInfoExtensionsTest.cs | 98 - .../Compatibility/TypeExtensionsTest.cs | 117 - .../DeprecatedMemberTest.cs | 55 - .../Google.Protobuf.Test/EqualityTester.cs | 64 - .../Google.Protobuf.Test/FieldCodecTest.cs | 196 - .../GeneratedMessageTest.cs | 725 - .../Google.Protobuf.Test.csproj | 30 - .../src/Google.Protobuf.Test/IssuesTest.cs | 82 - .../Google.Protobuf.Test/JsonParserTest.cs | 939 - .../Google.Protobuf.Test/JsonTokenizerTest.cs | 408 - .../src/Google.Protobuf.Test/Program.cs | 47 - .../Reflection/DescriptorsTest.cs | 259 - .../Reflection/FieldAccessTest.cs | 218 - .../Reflection/TypeRegistryTest.cs | 94 - .../src/Google.Protobuf.Test/SampleEnum.cs | 42 - .../Google.Protobuf.Test/SampleMessages.cs | 99 - .../Google.Protobuf.Test/TestCornerCases.cs | 62 - .../TestProtos/ForeignMessagePartial.cs | 45 - .../WellKnownTypes/AnyTest.cs | 116 - .../WellKnownTypes/DurationTest.cs | 132 - .../WellKnownTypes/FieldMaskTest.cs | 62 - .../WellKnownTypes/TimestampTest.cs | 115 - .../WellKnownTypes/WrappersTest.cs | 421 - .../csharp/compatibility_tests/v3.0.0/test.sh | 96 - lib/protobuf/csharp/generate_protos.sh | 69 - lib/protobuf/csharp/install_dotnet_sdk.ps1 | 21 - .../csharp/keys/Google.Protobuf.public.snk | Bin 160 -> 0 bytes lib/protobuf/csharp/keys/Google.Protobuf.snk | Bin 596 -> 0 bytes lib/protobuf/csharp/keys/README.md | 9 - lib/protobuf/csharp/protos/README.md | 3 - .../csharp/protos/map_unittest_proto3.proto | 116 - .../unittest_custom_options_proto3.proto | 336 - .../protos/unittest_import_proto3.proto | 56 - .../unittest_import_public_proto3.proto | 41 - .../csharp/protos/unittest_issues.proto | 140 - .../csharp/protos/unittest_proto3.proto | 410 - .../csharp/src/AddressBook/AddPerson.cs | 132 - .../csharp/src/AddressBook/AddressBook.csproj | 14 - .../csharp/src/AddressBook/Addressbook.cs | 592 - .../csharp/src/AddressBook/ListPeople.cs | 99 - .../csharp/src/AddressBook/Program.cs | 95 - .../csharp/src/AddressBook/SampleUsage.cs | 73 - .../BenchmarkMessage1Proto3.cs | 1980 -- .../Google.Protobuf.Benchmarks/Benchmarks.cs | 250 - .../Google.Protobuf.Benchmarks.csproj | 18 - .../src/Google.Protobuf.Benchmarks/Program.cs | 46 - .../SerializationBenchmark.cs | 120 - .../SerializationConfig.cs | 89 - .../Conformance.cs | 1211 -- .../Google.Protobuf.Conformance.csproj | 14 - .../Google.Protobuf.Conformance/Program.cs | 162 - .../Google.Protobuf.JsonDump.csproj | 13 - .../src/Google.Protobuf.JsonDump/Program.cs | 73 - .../Google.Protobuf.Test/ByteStringTest.cs | 237 - .../CodedInputStreamExtensions.cs | 53 - .../CodedInputStreamTest.cs | 738 - .../CodedOutputStreamTest.cs | 426 - .../Collections/MapFieldTest.cs | 607 - .../ProtobufEqualityComparersTest.cs | 124 - .../Collections/RepeatedFieldTest.cs | 760 - .../PropertyInfoExtensionsTest.cs | 98 - .../Compatibility/StreamExtensionsTest.cs | 67 - .../Compatibility/TypeExtensionsTest.cs | 117 - .../DeprecatedMemberTest.cs | 55 - .../Google.Protobuf.Test/EqualityTester.cs | 65 - .../Google.Protobuf.Test/FieldCodecTest.cs | 199 - .../Google.Protobuf.Test/FieldMaskTreeTest.cs | 436 - .../GeneratedMessageTest.cs | 736 - .../Google.Protobuf.Test.csproj | 34 - .../src/Google.Protobuf.Test/IssuesTest.cs | 94 - .../Google.Protobuf.Test/JsonFormatterTest.cs | 624 - .../Google.Protobuf.Test/JsonParserTest.cs | 976 - .../Google.Protobuf.Test/JsonTokenizerTest.cs | 424 - .../Reflection/CustomOptionsTest.cs | 212 - .../Reflection/DescriptorDeclarationTest.cs | 175 - .../Reflection/DescriptorsTest.cs | 369 - .../Reflection/FieldAccessTest.cs | 218 - .../Reflection/TypeRegistryTest.cs | 94 - .../src/Google.Protobuf.Test/SampleEnum.cs | 42 - .../Google.Protobuf.Test/SampleMessages.cs | 99 - .../src/Google.Protobuf.Test/SampleNaNs.cs | 53 - .../Google.Protobuf.Test/TestCornerCases.cs | 62 - .../TestProtos/ForeignMessagePartial.cs | 45 - .../TestProtos/MapUnittestProto3.cs | 1685 -- .../TestProtos/TestMessagesProto3.cs | 3804 ---- .../TestProtos/UnittestCustomOptionsProto3.cs | 2962 --- .../TestProtos/UnittestImportProto3.cs | 186 - .../TestProtos/UnittestImportPublicProto3.cs | 174 - .../TestProtos/UnittestIssues.cs | 2239 -- .../TestProtos/UnittestProto3.cs | 7609 ------- .../TestProtos/UnittestWellKnownTypes.cs | 2625 --- .../UnknownFieldSetTest.cs | 194 - .../WellKnownTypes/AnyTest.cs | 157 - .../WellKnownTypes/DurationTest.cs | 132 - .../WellKnownTypes/FieldMaskTest.cs | 245 - .../WellKnownTypes/TimestampTest.cs | 216 - .../WellKnownTypes/WrappersTest.cs | 432 - .../src/Google.Protobuf.Test/testprotos.pb | Bin 205207 -> 0 bytes lib/protobuf/csharp/src/Google.Protobuf.sln | 54 - .../csharp/src/Google.Protobuf/ByteArray.cs | 79 - .../csharp/src/Google.Protobuf/ByteString.cs | 412 - .../src/Google.Protobuf/CodedInputStream.cs | 1306 -- .../CodedOutputStream.ComputeSize.cs | 308 - .../src/Google.Protobuf/CodedOutputStream.cs | 770 - .../src/Google.Protobuf/Collections/Lists.cs | 89 - .../Google.Protobuf/Collections/MapField.cs | 771 - .../Collections/ProtobufEqualityComparers.cs | 130 - .../Collections/ReadOnlyDictionary.cs | 147 - .../Collections/RepeatedField.cs | 599 - .../Compatibility/MethodInfoExtensions.cs | 47 - .../Compatibility/PropertyInfoExtensions.cs | 72 - .../Compatibility/StreamExtensions.cs | 66 - .../Compatibility/TypeExtensions.cs | 106 - .../csharp/src/Google.Protobuf/Extension.cs | 113 - .../src/Google.Protobuf/ExtensionRegistry.cs | 165 - .../src/Google.Protobuf/ExtensionSet.cs | 334 - .../src/Google.Protobuf/ExtensionValue.cs | 207 - .../csharp/src/Google.Protobuf/FieldCodec.cs | 773 - .../src/Google.Protobuf/FieldMaskTree.cs | 365 - .../Google.Protobuf/FrameworkPortability.cs | 49 - .../Google.Protobuf/Google.Protobuf.csproj | 42 - .../ICustomDiagnosticMessage.cs | 69 - .../src/Google.Protobuf/IDeepCloneable.cs | 54 - .../src/Google.Protobuf/IExtendableMessage.cs | 78 - .../csharp/src/Google.Protobuf/IMessage.cs | 87 - .../Google.Protobuf/InvalidJsonException.cs | 53 - .../InvalidProtocolBufferException.cs | 140 - .../src/Google.Protobuf/JsonFormatter.cs | 920 - .../csharp/src/Google.Protobuf/JsonParser.cs | 1060 - .../csharp/src/Google.Protobuf/JsonToken.cs | 166 - .../src/Google.Protobuf/JsonTokenizer.cs | 766 - .../src/Google.Protobuf/LimitedInputStream.cs | 110 - .../src/Google.Protobuf/MessageExtensions.cs | 247 - .../src/Google.Protobuf/MessageParser.cs | 360 - .../src/Google.Protobuf/ObjectIntPair.cs | 40 - .../Properties/AssemblyInfo.cs | 49 - .../src/Google.Protobuf/ProtoPreconditions.cs | 79 - .../Reflection/CustomOptions.cs | 310 - .../Google.Protobuf/Reflection/Descriptor.cs | 8405 -------- .../Reflection/DescriptorBase.cs | 92 - .../Reflection/DescriptorDeclaration.cs | 112 - .../Reflection/DescriptorPool.cs | 334 - .../Reflection/DescriptorUtil.cs | 64 - .../DescriptorValidationException.cs | 80 - .../Reflection/EnumDescriptor.cs | 153 - .../Reflection/EnumValueDescriptor.cs | 99 - .../Reflection/ExtensionAccessor.cs | 69 - .../Reflection/ExtensionCollection.cs | 105 - .../Reflection/FieldAccessorBase.cs | 64 - .../Reflection/FieldDescriptor.cs | 404 - .../Google.Protobuf/Reflection/FieldType.cs | 113 - .../Reflection/FileDescriptor.cs | 542 - .../Reflection/GeneratedClrTypeInfo.cs | 128 - .../Google.Protobuf/Reflection/IDescriptor.cs | 55 - .../Reflection/IFieldAccessor.cs | 76 - .../Reflection/MapFieldAccessor.cs | 64 - .../Reflection/MessageDescriptor.cs | 368 - .../Reflection/MethodDescriptor.cs | 132 - .../Reflection/OneofAccessor.cs | 90 - .../Reflection/OneofDescriptor.cs | 165 - .../Reflection/OriginalNameAttribute.cs | 65 - .../Reflection/PackageDescriptor.cs | 68 - .../Reflection/ReflectionUtil.cs | 333 - .../Reflection/RepeatedFieldAccessor.cs | 65 - .../Reflection/ServiceDescriptor.cs | 128 - .../Reflection/SingleFieldAccessor.cs | 105 - .../Reflection/TypeRegistry.cs | 183 - .../src/Google.Protobuf/UnknownField.cs | 290 - .../src/Google.Protobuf/UnknownFieldSet.cs | 339 - .../src/Google.Protobuf/WellKnownTypes/Any.cs | 315 - .../WellKnownTypes/AnyPartial.cs | 147 - .../src/Google.Protobuf/WellKnownTypes/Api.cs | 948 - .../WellKnownTypes/Duration.cs | 277 - .../WellKnownTypes/DurationPartial.cs | 270 - .../Google.Protobuf/WellKnownTypes/Empty.cs | 158 - .../WellKnownTypes/FieldMask.cs | 371 - .../WellKnownTypes/FieldMaskPartial.cs | 370 - .../WellKnownTypes/SourceContext.cs | 184 - .../Google.Protobuf/WellKnownTypes/Struct.cs | 692 - .../WellKnownTypes/TimeExtensions.cs | 76 - .../WellKnownTypes/Timestamp.cs | 298 - .../WellKnownTypes/TimestampPartial.cs | 344 - .../Google.Protobuf/WellKnownTypes/Type.cs | 1506 -- .../WellKnownTypes/ValuePartial.cs | 99 - .../WellKnownTypes/Wrappers.cs | 1292 -- .../WellKnownTypes/WrappersPartial.cs | 42 - .../csharp/src/Google.Protobuf/WireFormat.cs | 104 - lib/protobuf/docs/options.md | 207 - lib/protobuf/docs/performance.md | 304 - lib/protobuf/docs/third_party.md | 176 - lib/protobuf/editors/README.txt | 5 - lib/protobuf/editors/proto.vim | 105 - lib/protobuf/editors/protobuf-mode.el | 223 - lib/protobuf/examples/AddPerson.java | 95 - lib/protobuf/examples/BUILD | 101 - lib/protobuf/examples/CMakeLists.txt | 48 - lib/protobuf/examples/ListPeople.java | 53 - lib/protobuf/examples/Makefile | 92 - lib/protobuf/examples/README.md | 144 - lib/protobuf/examples/WORKSPACE | 50 - lib/protobuf/examples/add_person.cc | 102 - lib/protobuf/examples/add_person.dart | 70 - lib/protobuf/examples/add_person.go | 133 - lib/protobuf/examples/add_person.py | 63 - lib/protobuf/examples/add_person_test.go | 58 - lib/protobuf/examples/addressbook.proto | 51 - lib/protobuf/examples/list_people.cc | 79 - lib/protobuf/examples/list_people.dart | 47 - lib/protobuf/examples/list_people.go | 61 - lib/protobuf/examples/list_people.py | 40 - lib/protobuf/examples/list_people_test.go | 120 - lib/protobuf/examples/pubspec.yaml | 5 - lib/protobuf/examples/third_party/zlib.BUILD | 1 - lib/protobuf/generate_changelog.py | 65 - lib/protobuf/generate_descriptor_proto.sh | 115 - lib/protobuf/global.json | 5 - lib/protobuf/java/README.md | 180 - lib/protobuf/java/bom/pom.xml | 110 - .../java/compatibility_tests/README.md | 50 - .../compatibility_tests/v2.5.0/deps/pom.xml | 43 - .../v2.5.0/more_protos/pom.xml | 69 - .../google/protobuf/multiple_files_test.proto | 71 - .../protobuf/nested_builders_test.proto | 53 - .../google/protobuf/nested_extension.proto | 45 - .../protobuf/nested_extension_lite.proto | 48 - .../protobuf/non_nested_extension.proto | 48 - .../protobuf/non_nested_extension_lite.proto | 50 - .../protobuf/test_bad_identifiers.proto | 108 - .../proto/google/protobuf/descriptor.proto | 620 - .../src/proto/google/protobuf/unittest.proto | 719 - .../protobuf/unittest_custom_options.proto | 387 - .../unittest_embed_optimize_for.proto | 50 - .../google/protobuf/unittest_empty.proto | 37 - .../unittest_enormous_descriptor.proto | 1046 - .../google/protobuf/unittest_import.proto | 64 - .../protobuf/unittest_import_lite.proto | 51 - .../protobuf/unittest_import_public.proto | 40 - .../unittest_import_public_lite.proto | 42 - .../proto/google/protobuf/unittest_lite.proto | 360 - .../unittest_lite_imports_nonlite.proto | 43 - .../proto/google/protobuf/unittest_mset.proto | 72 - .../unittest_no_generic_services.proto | 52 - .../protobuf/unittest_optimize_for.proto | 61 - .../java/compatibility_tests/v2.5.0/pom.xml | 30 - .../compatibility_tests/v2.5.0/protos/pom.xml | 71 - .../google/protobuf/multiple_files_test.proto | 71 - .../protobuf/nested_builders_test.proto | 53 - .../google/protobuf/nested_extension.proto | 45 - .../protobuf/nested_extension_lite.proto | 48 - .../protobuf/non_nested_extension.proto | 48 - .../protobuf/non_nested_extension_lite.proto | 50 - .../protobuf/test_bad_identifiers.proto | 108 - .../proto/google/protobuf/descriptor.proto | 620 - .../src/proto/google/protobuf/unittest.proto | 719 - .../protobuf/unittest_custom_options.proto | 387 - .../unittest_embed_optimize_for.proto | 50 - .../google/protobuf/unittest_empty.proto | 37 - .../unittest_enormous_descriptor.proto | 1046 - .../google/protobuf/unittest_import.proto | 64 - .../protobuf/unittest_import_lite.proto | 51 - .../protobuf/unittest_import_public.proto | 40 - .../unittest_import_public_lite.proto | 42 - .../proto/google/protobuf/unittest_lite.proto | 360 - .../unittest_lite_imports_nonlite.proto | 43 - .../proto/google/protobuf/unittest_mset.proto | 72 - .../unittest_no_generic_services.proto | 52 - .../protobuf/unittest_optimize_for.proto | 61 - .../java/compatibility_tests/v2.5.0/test.sh | 143 - .../compatibility_tests/v2.5.0/tests/pom.xml | 73 - .../protobuf/test/AbstractMessageTest.java | 510 - .../protobuf/test/BoundedByteStringTest.java | 56 - .../google/protobuf/test/ByteStringTest.java | 590 - .../protobuf/test/CodedInputStreamTest.java | 469 - .../protobuf/test/CodedOutputStreamTest.java | 318 - .../protobuf/test/DeprecatedFieldTest.java | 81 - .../google/protobuf/test/DescriptorsTest.java | 649 - .../protobuf/test/DynamicMessageTest.java | 265 - .../test/ForceFieldBuildersPreRun.java | 49 - .../protobuf/test/GeneratedMessageTest.java | 961 - .../test/LazyStringArrayListTest.java | 163 - .../protobuf/test/LazyStringEndToEndTest.java | 108 - .../protobuf/test/LiteralByteStringTest.java | 344 - .../com/google/protobuf/test/MessageTest.java | 354 - .../protobuf/test/NestedBuildersTest.java | 186 - .../com/google/protobuf/test/ParserTest.java | 278 - .../test/RopeByteStringSubstringTest.java | 62 - .../protobuf/test/RopeByteStringTest.java | 84 - .../com/google/protobuf/test/ServiceTest.java | 321 - .../protobuf/test/TestBadIdentifiers.java | 64 - .../com/google/protobuf/test/TestUtil.java | 3068 --- .../google/protobuf/test/TextFormatTest.java | 536 - .../protobuf/test/UnknownFieldSetTest.java | 438 - .../test/UnmodifiableLazyStringListTest.java | 153 - .../google/protobuf/test/WireFormatTest.java | 465 - .../java/core/generate-sources-build.xml | 20 - .../java/core/generate-test-sources-build.xml | 60 - lib/protobuf/java/core/pom.xml | 157 - .../com/google/protobuf/AbstractMessage.java | 623 - .../google/protobuf/AbstractMessageLite.java | 430 - .../com/google/protobuf/AbstractParser.java | 274 - .../google/protobuf/AbstractProtobufList.java | 175 - .../com/google/protobuf/AllocatedBuffer.java | 263 - .../java/com/google/protobuf/Android.java | 57 - .../com/google/protobuf/ArrayDecoders.java | 1076 - .../com/google/protobuf/BinaryReader.java | 1729 -- .../com/google/protobuf/BinaryWriter.java | 3071 --- .../google/protobuf/BlockingRpcChannel.java | 51 - .../com/google/protobuf/BlockingService.java | 57 - .../com/google/protobuf/BooleanArrayList.java | 277 - .../com/google/protobuf/BufferAllocator.java | 64 - .../com/google/protobuf/ByteBufferWriter.java | 181 - .../java/com/google/protobuf/ByteOutput.java | 116 - .../java/com/google/protobuf/ByteString.java | 1594 -- .../com/google/protobuf/CodedInputStream.java | 3922 ---- .../protobuf/CodedInputStreamReader.java | 1333 -- .../google/protobuf/CodedOutputStream.java | 3066 --- .../protobuf/CodedOutputStreamWriter.java | 691 - .../DescriptorMessageInfoFactory.java | 690 - .../java/com/google/protobuf/Descriptors.java | 2672 --- .../protobuf/DiscardUnknownFieldsParser.java | 70 - .../com/google/protobuf/DoubleArrayList.java | 277 - .../com/google/protobuf/DynamicMessage.java | 679 - .../com/google/protobuf/ExperimentalApi.java | 65 - .../java/com/google/protobuf/Extension.java | 88 - .../com/google/protobuf/ExtensionLite.java | 60 - .../google/protobuf/ExtensionRegistry.java | 366 - .../protobuf/ExtensionRegistryFactory.java | 95 - .../protobuf/ExtensionRegistryLite.java | 238 - .../com/google/protobuf/ExtensionSchema.java | 98 - .../google/protobuf/ExtensionSchemaFull.java | 547 - .../google/protobuf/ExtensionSchemaLite.java | 541 - .../com/google/protobuf/ExtensionSchemas.java | 56 - .../java/com/google/protobuf/FieldInfo.java | 577 - .../java/com/google/protobuf/FieldSet.java | 907 - .../java/com/google/protobuf/FieldType.java | 346 - .../com/google/protobuf/FloatArrayList.java | 276 - .../com/google/protobuf/GeneratedMessage.java | 3051 --- .../protobuf/GeneratedMessageInfoFactory.java | 65 - .../google/protobuf/GeneratedMessageLite.java | 1736 -- .../google/protobuf/GeneratedMessageV3.java | 2986 --- .../com/google/protobuf/IntArrayList.java | 276 - .../java/com/google/protobuf/Internal.java | 687 - .../InvalidProtocolBufferException.java | 143 - .../IterableByteBufferInputStream.java | 150 - .../java/com/google/protobuf/JavaType.java | 76 - .../java/com/google/protobuf/LazyField.java | 154 - .../com/google/protobuf/LazyFieldLite.java | 441 - .../google/protobuf/LazyStringArrayList.java | 417 - .../com/google/protobuf/LazyStringList.java | 164 - .../com/google/protobuf/ListFieldSchema.java | 190 - .../com/google/protobuf/LongArrayList.java | 276 - .../protobuf/ManifestSchemaFactory.java | 172 - .../java/com/google/protobuf/MapEntry.java | 457 - .../com/google/protobuf/MapEntryLite.java | 231 - .../java/com/google/protobuf/MapField.java | 616 - .../com/google/protobuf/MapFieldLite.java | 235 - .../com/google/protobuf/MapFieldSchema.java | 63 - .../google/protobuf/MapFieldSchemaFull.java | 112 - .../google/protobuf/MapFieldSchemaLite.java | 107 - .../com/google/protobuf/MapFieldSchemas.java | 53 - .../java/com/google/protobuf/Message.java | 280 - .../java/com/google/protobuf/MessageInfo.java | 43 - .../google/protobuf/MessageInfoFactory.java | 41 - .../java/com/google/protobuf/MessageLite.java | 298 - .../google/protobuf/MessageLiteOrBuilder.java | 57 - .../google/protobuf/MessageLiteToString.java | 281 - .../com/google/protobuf/MessageOrBuilder.java | 133 - .../google/protobuf/MessageReflection.java | 991 - .../com/google/protobuf/MessageSchema.java | 5884 ------ .../com/google/protobuf/MessageSetSchema.java | 392 - .../com/google/protobuf/MutabilityOracle.java | 45 - .../google/protobuf/NewInstanceSchema.java | 36 - .../protobuf/NewInstanceSchemaFull.java | 39 - .../protobuf/NewInstanceSchemaLite.java | 39 - .../google/protobuf/NewInstanceSchemas.java | 53 - .../com/google/protobuf/NioByteString.java | 292 - .../java/com/google/protobuf/OneofInfo.java | 66 - .../main/java/com/google/protobuf/Parser.java | 242 - .../PrimitiveNonBoxingCollection.java | 34 - .../java/com/google/protobuf/ProtoSyntax.java | 38 - .../java/com/google/protobuf/Protobuf.java | 152 - .../google/protobuf/ProtobufArrayList.java | 104 - .../com/google/protobuf/ProtobufLists.java | 94 - .../google/protobuf/ProtocolMessageEnum.java | 52 - .../google/protobuf/ProtocolStringList.java | 46 - .../com/google/protobuf/RawMessageInfo.java | 220 - .../main/java/com/google/protobuf/Reader.java | 379 - .../google/protobuf/RepeatedFieldBuilder.java | 667 - .../protobuf/RepeatedFieldBuilderV3.java | 667 - .../com/google/protobuf/RopeByteString.java | 932 - .../java/com/google/protobuf/RpcCallback.java | 46 - .../java/com/google/protobuf/RpcChannel.java | 68 - .../com/google/protobuf/RpcController.java | 108 - .../java/com/google/protobuf/RpcUtil.java | 126 - .../main/java/com/google/protobuf/Schema.java | 85 - .../com/google/protobuf/SchemaFactory.java | 38 - .../java/com/google/protobuf/SchemaUtil.java | 991 - .../java/com/google/protobuf/Service.java | 109 - .../com/google/protobuf/ServiceException.java | 52 - .../google/protobuf/SingleFieldBuilder.java | 227 - .../google/protobuf/SingleFieldBuilderV3.java | 227 - .../com/google/protobuf/SmallSortedMap.java | 712 - .../protobuf/StructuralMessageInfo.java | 167 - .../java/com/google/protobuf/TextFormat.java | 2325 -- .../google/protobuf/TextFormatEscaper.java | 152 - .../protobuf/TextFormatParseInfoTree.java | 221 - .../protobuf/TextFormatParseLocation.java | 101 - .../UninitializedMessageException.java | 96 - .../google/protobuf/UnknownFieldSchema.java | 133 - .../com/google/protobuf/UnknownFieldSet.java | 1078 - .../google/protobuf/UnknownFieldSetLite.java | 490 - .../protobuf/UnknownFieldSetLiteSchema.java | 140 - .../protobuf/UnknownFieldSetSchema.java | 132 - .../protobuf/UnmodifiableLazyStringList.java | 210 - .../google/protobuf/UnsafeByteOperations.java | 121 - .../java/com/google/protobuf/UnsafeUtil.java | 659 - .../main/java/com/google/protobuf/Utf8.java | 1976 -- .../java/com/google/protobuf/WireFormat.java | 271 - .../main/java/com/google/protobuf/Writer.java | 219 - .../java/core/src/stubs/sun/misc/Unsafe.java | 67 - .../google/protobuf/AbstractMessageTest.java | 554 - .../AbstractProto2LiteSchemaTest.java | 199 - .../protobuf/AbstractProto2SchemaTest.java | 224 - .../AbstractProto3LiteSchemaTest.java | 143 - .../protobuf/AbstractProto3SchemaTest.java | 151 - .../google/protobuf/AbstractSchemaTest.java | 157 - .../java/com/google/protobuf/AnyTest.java | 126 - .../google/protobuf/ArrayDecodersTest.java | 236 - .../google/protobuf/BinaryProtocolTest.java | 90 - .../google/protobuf/BooleanArrayListTest.java | 487 - .../protobuf/BoundedByteStringTest.java | 108 - .../google/protobuf/ByteBufferWriterTest.java | 78 - .../com/google/protobuf/ByteStringTest.java | 869 - .../google/protobuf/CachedFieldSizeTest.java | 65 - .../com/google/protobuf/CheckUtf8Test.java | 157 - .../com/google/protobuf/CodedAdapterTest.java | 110 - .../google/protobuf/CodedInputStreamTest.java | 1254 -- .../protobuf/CodedOutputStreamTest.java | 812 - .../com/google/protobuf/DecodeUtf8Test.java | 325 - .../google/protobuf/DeprecatedFieldTest.java | 79 - .../com/google/protobuf/DescriptorsTest.java | 807 - .../protobuf/DiscardUnknownFieldsTest.java | 120 - .../google/protobuf/DoubleArrayListTest.java | 490 - .../google/protobuf/DynamicMessageTest.java | 317 - .../java/com/google/protobuf/EnumTest.java | 76 - .../protobuf/ExperimentalMessageFactory.java | 40 - .../ExperimentalSerializationUtil.java | 113 - .../ExperimentalTestDataProvider.java | 189 - .../ExtensionRegistryFactoryTest.java | 285 - .../google/protobuf/FieldPresenceTest.java | 370 - .../google/protobuf/FloatArrayListTest.java | 490 - .../protobuf/ForceFieldBuildersPreRun.java | 47 - .../google/protobuf/GeneratedMessageTest.java | 1625 -- .../com/google/protobuf/IntArrayListTest.java | 488 - .../com/google/protobuf/IsValidUtf8Test.java | 175 - .../google/protobuf/IsValidUtf8TestUtil.java | 467 - .../google/protobuf/LazyFieldLiteTest.java | 245 - .../com/google/protobuf/LazyFieldTest.java | 118 - .../google/protobuf/LazyMessageLiteTest.java | 305 - .../protobuf/LazyStringArrayListTest.java | 363 - .../protobuf/LazyStringEndToEndTest.java | 125 - .../protobuf/LiteEqualsAndHashTest.java | 125 - .../protobuf/LiteralByteStringTest.java | 573 - .../google/protobuf/LongArrayListTest.java | 488 - .../google/protobuf/MapForProto2LiteTest.java | 776 - .../com/google/protobuf/MapForProto2Test.java | 1180 -- .../java/com/google/protobuf/MapLiteTest.java | 894 - .../java/com/google/protobuf/MapTest.java | 1507 -- .../java/com/google/protobuf/MessageTest.java | 357 - .../google/protobuf/NestedBuildersTest.java | 154 - .../google/protobuf/NioByteStringTest.java | 638 - .../com/google/protobuf/PackedFieldTest.java | 232 - .../google/protobuf/ParseExceptionsTest.java | 303 - .../com/google/protobuf/ParserLiteTest.java | 191 - .../java/com/google/protobuf/ParserTest.java | 319 - .../Proto2ExtensionLookupSchemaTest.java | 171 - .../google/protobuf/Proto2LiteSchemaTest.java | 49 - .../google/protobuf/Proto2MessageFactory.java | 555 - .../protobuf/Proto2MessageInfoFactory.java | 892 - .../protobuf/Proto2MessageLiteFactory.java | 558 - .../com/google/protobuf/Proto2SchemaTest.java | 49 - .../protobuf/Proto2UnknownEnumValueTest.java | 111 - .../google/protobuf/Proto3LiteSchemaTest.java | 49 - .../google/protobuf/Proto3MessageFactory.java | 450 - .../protobuf/Proto3MessageInfoFactory.java | 506 - .../protobuf/Proto3MessageLiteFactory.java | 452 - .../Proto3MessageLiteInfoFactory.java | 816 - .../com/google/protobuf/Proto3SchemaTest.java | 48 - .../protobuf/ProtobufArrayListTest.java | 392 - .../protobuf/RepeatedFieldBuilderV3Test.java | 183 - .../protobuf/RopeByteStringSubstringTest.java | 133 - .../google/protobuf/RopeByteStringTest.java | 217 - .../java/com/google/protobuf/ServiceTest.java | 323 - .../protobuf/SingleFieldBuilderV3Test.java | 129 - .../google/protobuf/SmallSortedMapTest.java | 411 - .../google/protobuf/TestBadIdentifiers.java | 122 - .../protobuf/TestBadIdentifiersLite.java | 89 - .../java/com/google/protobuf/TestSchemas.java | 94 - .../com/google/protobuf/TestSchemasLite.java | 103 - .../java/com/google/protobuf/TestUtil.java | 3888 ---- .../com/google/protobuf/TestUtilLite.java | 551 - .../protobuf/TextFormatParseInfoTreeTest.java | 179 - .../protobuf/TextFormatParseLocationTest.java | 84 - .../com/google/protobuf/TextFormatTest.java | 1348 -- .../google/protobuf/UnknownEnumValueTest.java | 310 - .../google/protobuf/UnknownFieldSetTest.java | 382 - .../UnmodifiableLazyStringListTest.java | 226 - .../java/com/google/protobuf/Utf8Test.java | 232 - .../java/com/google/protobuf/Utf8Utils.java | 193 - .../google/protobuf/WellKnownTypesTest.java | 65 - .../google/protobuf/WireFormatLiteTest.java | 1023 - .../com/google/protobuf/WireFormatTest.java | 519 - .../protobuf/WrappersLiteOfMethodTest.java | 61 - .../google/protobuf/WrappersOfMethodTest.java | 61 - .../proto/com/google/protobuf/any_test.proto | 42 - .../protobuf/cached_field_size_test.proto | 45 - .../com/google/protobuf/deprecated_file.proto | 38 - .../google/protobuf/field_presence_test.proto | 94 - .../google/protobuf/lazy_fields_lite.proto | 69 - .../protobuf/lite_equals_and_hash.proto | 87 - .../protobuf/map_for_proto2_lite_test.proto | 130 - .../google/protobuf/map_for_proto2_test.proto | 129 - .../map_initialization_order_test.proto | 60 - .../com/google/protobuf/map_lite_test.proto | 121 - .../proto/com/google/protobuf/map_test.proto | 120 - .../message_lite_extension_util_test.proto | 48 - .../google/protobuf/multiple_files_test.proto | 74 - .../protobuf/nested_builders_test.proto | 53 - .../google/protobuf/nested_extension.proto | 48 - .../protobuf/nested_extension_lite.proto | 50 - .../protobuf/non_nested_extension.proto | 49 - .../protobuf/non_nested_extension_lite.proto | 50 - .../protobuf/outer_class_name_test.proto | 39 - .../protobuf/outer_class_name_test2.proto | 43 - .../protobuf/outer_class_name_test3.proto | 43 - .../google/protobuf/packed_field_test.proto | 76 - .../com/google/protobuf/proto2_message.proto | 430 - .../google/protobuf/proto2_message_lite.proto | 423 - .../protobuf/proto2_unknown_enum_values.proto | 60 - .../com/google/protobuf/proto3_message.proto | 327 - .../google/protobuf/proto3_message_lite.proto | 320 - .../protobuf/test_bad_identifiers.proto | 185 - .../com/google/protobuf/test_check_utf8.proto | 51 - .../protobuf/test_check_utf8_size.proto | 52 - .../google/protobuf/test_custom_options.proto | 44 - .../protobuf/test_extra_interfaces.proto | 58 - .../com/google/protobuf/wrappers_test.proto | 51 - lib/protobuf/java/lite.md | 39 - .../java/lite/generate-sources-build.xml | 19 - .../java/lite/generate-test-sources-build.xml | 50 - lib/protobuf/java/lite/lite.awk | 25 - lib/protobuf/java/lite/pom.xml | 336 - .../java/lite/process-lite-sources-build.xml | 7 - .../java/com/google/protobuf/LiteTest.java | 2463 --- .../Proto2MessageLiteInfoFactory.java | 1327 -- lib/protobuf/java/pom.xml | 243 - lib/protobuf/java/util/pom.xml | 139 - .../com/google/protobuf/util/Durations.java | 455 - .../google/protobuf/util/FieldMaskTree.java | 292 - .../google/protobuf/util/FieldMaskUtil.java | 362 - .../com/google/protobuf/util/JsonFormat.java | 1916 -- .../com/google/protobuf/util/Structs.java | 65 - .../com/google/protobuf/util/TimeUtil.java | 401 - .../com/google/protobuf/util/Timestamps.java | 437 - .../java/com/google/protobuf/util/Values.java | 85 - .../protobuf/util/FieldMaskTreeTest.java | 337 - .../protobuf/util/FieldMaskUtilTest.java | 213 - .../google/protobuf/util/JsonFormatTest.java | 1722 -- .../com/google/protobuf/util/StructsTest.java | 59 - .../google/protobuf/util/TimeUtilTest.java | 498 - .../com/google/protobuf/util/ValuesTest.java | 102 - .../com/google/protobuf/util/json_test.proto | 190 - .../protobuf/micro/ByteStringMicro.java | 227 - .../protobuf/micro/CodedInputStreamMicro.java | 806 - .../micro/CodedOutputStreamMicro.java | 993 - .../InvalidProtocolBufferMicroException.java | 93 - .../google/protobuf/micro/MessageMicro.java | 136 - .../protobuf/micro/WireFormatMicro.java | 87 - lib/protobuf/javanano/README.md | 401 - lib/protobuf/javanano/pom.xml | 244 - .../ParcelableExtendableMessageNano.java | 54 - .../nano/android/ParcelableMessageNano.java | 52 - .../android/ParcelableMessageNanoCreator.java | 97 - .../src/device/test/AndroidManifest.xml | 50 - .../google/protobuf/nano/NanoAndroidTest.java | 87 - .../nano/CodedInputByteBufferNano.java | 683 - .../nano/CodedOutputByteBufferNano.java | 1214 -- .../protobuf/nano/ExtendableMessageNano.java | 169 - .../com/google/protobuf/nano/Extension.java | 706 - .../com/google/protobuf/nano/FieldArray.java | 291 - .../com/google/protobuf/nano/FieldData.java | 240 - .../google/protobuf/nano/InternalNano.java | 547 - .../InvalidProtocolBufferNanoException.java | 93 - .../google/protobuf/nano/MapFactories.java | 67 - .../com/google/protobuf/nano/MessageNano.java | 198 - .../protobuf/nano/MessageNanoPrinter.java | 275 - .../protobuf/nano/UnknownFieldData.java | 88 - .../google/protobuf/nano/WireFormatNano.java | 124 - .../com/google/protobuf/nano/NanoTest.java | 4471 ---- .../com/google/protobuf/nano/map_test.proto | 70 - .../nano/unittest_accessors_nano.proto | 118 - .../unittest_enum_class_multiple_nano.proto | 48 - .../nano/unittest_enum_class_nano.proto | 48 - .../nano/unittest_enum_validity_nano.proto | 28 - .../nano/unittest_extension_nano.proto | 37 - .../nano/unittest_extension_packed_nano.proto | 29 - .../unittest_extension_repeated_nano.proto | 34 - .../unittest_extension_singular_nano.proto | 34 - .../protobuf/nano/unittest_has_nano.proto | 82 - .../protobuf/nano/unittest_import_nano.proto | 48 - .../unittest_multiple_nameclash_nano.proto | 41 - .../nano/unittest_multiple_nano.proto | 63 - .../google/protobuf/nano/unittest_nano.proto | 195 - .../nano/unittest_recursive_nano.proto | 49 - .../nano/unittest_reference_types_nano.proto | 116 - .../nano/unittest_repeated_merge_nano.proto | 47 - .../unittest_repeated_packables_nano.proto | 95 - .../protobuf/nano/unittest_simple_nano.proto | 54 - .../protobuf/nano/unittest_single_nano.proto | 38 - .../nano/unittest_stringutf8_nano.proto | 43 - lib/protobuf/js/README.md | 167 - lib/protobuf/js/binary/arith.js | 413 - lib/protobuf/js/binary/arith_test.js | 354 - lib/protobuf/js/binary/constants.js | 376 - lib/protobuf/js/binary/decoder.js | 1069 - lib/protobuf/js/binary/decoder_test.js | 358 - lib/protobuf/js/binary/encoder.js | 492 - lib/protobuf/js/binary/message_test.js | 60 - lib/protobuf/js/binary/proto_test.js | 665 - lib/protobuf/js/binary/reader.js | 1218 -- lib/protobuf/js/binary/reader_test.js | 937 - lib/protobuf/js/binary/utils.js | 991 - lib/protobuf/js/binary/utils_test.js | 669 - lib/protobuf/js/binary/writer.js | 1626 -- lib/protobuf/js/binary/writer_test.js | 133 - lib/protobuf/js/commonjs/export.js | 31 - lib/protobuf/js/commonjs/export_asserts.js | 41 - lib/protobuf/js/commonjs/export_testdeps.js | 24 - lib/protobuf/js/commonjs/import_test.js | 52 - lib/protobuf/js/commonjs/jasmine.json | 9 - .../js/commonjs/rewrite_tests_for_commonjs.js | 97 - lib/protobuf/js/commonjs/strict_test.js | 67 - lib/protobuf/js/commonjs/test6/test6.proto | 40 - lib/protobuf/js/commonjs/test7/test7.proto | 42 - .../v3.0.0/binary/arith_test.js | 355 - .../v3.0.0/binary/decoder_test.js | 317 - .../v3.0.0/binary/proto_test.js | 628 - .../v3.0.0/binary/reader_test.js | 922 - .../v3.0.0/binary/utils_test.js | 668 - .../v3.0.0/binary/writer_test.js | 122 - .../v3.0.0/commonjs/export_asserts.js | 37 - .../v3.0.0/commonjs/export_testdeps.js | 18 - .../v3.0.0/commonjs/import_test.js | 52 - .../v3.0.0/commonjs/jasmine.json | 9 - .../commonjs/rewrite_tests_for_commonjs.js | 97 - .../v3.0.0/commonjs/test6/test6.proto | 40 - .../v3.0.0/commonjs/test7/test7.proto | 42 - .../js/compatibility_tests/v3.0.0/data.proto | 51 - .../compatibility_tests/v3.0.0/debug_test.js | 105 - .../compatibility_tests/v3.0.0/jasmine1.json | 17 - .../compatibility_tests/v3.0.0/jasmine2.json | 17 - .../compatibility_tests/v3.0.0/jasmine3.json | 17 - .../v3.0.0/message_test.js | 1080 - .../compatibility_tests/v3.0.0/proto3_test.js | 329 - .../v3.0.0/proto3_test.proto | 89 - .../js/compatibility_tests/v3.0.0/test.proto | 236 - .../js/compatibility_tests/v3.0.0/test.sh | 92 - .../js/compatibility_tests/v3.0.0/test2.proto | 54 - .../js/compatibility_tests/v3.0.0/test3.proto | 53 - .../js/compatibility_tests/v3.0.0/test4.proto | 42 - .../js/compatibility_tests/v3.0.0/test5.proto | 44 - .../v3.0.0/testbinary.proto | 212 - .../v3.0.0/testempty.proto | 34 - .../v3.1.0/binary/arith_test.js | 355 - .../v3.1.0/binary/decoder_test.js | 317 - .../v3.1.0/binary/proto_test.js | 628 - .../v3.1.0/binary/reader_test.js | 922 - .../v3.1.0/binary/utils_test.js | 668 - .../v3.1.0/binary/writer_test.js | 122 - .../v3.1.0/commonjs/test6/test6.proto | 40 - .../v3.1.0/commonjs/test7/test7.proto | 42 - .../js/compatibility_tests/v3.1.0/data.proto | 51 - .../compatibility_tests/v3.1.0/debug_test.js | 105 - .../compatibility_tests/v3.1.0/maps_test.js | 301 - .../v3.1.0/message_test.js | 1032 - .../compatibility_tests/v3.1.0/proto3_test.js | 329 - .../v3.1.0/proto3_test.proto | 89 - .../js/compatibility_tests/v3.1.0/test.proto | 262 - .../js/compatibility_tests/v3.1.0/test2.proto | 54 - .../js/compatibility_tests/v3.1.0/test3.proto | 53 - .../js/compatibility_tests/v3.1.0/test4.proto | 42 - .../js/compatibility_tests/v3.1.0/test5.proto | 44 - .../v3.1.0/testbinary.proto | 212 - .../v3.1.0/testempty.proto | 34 - lib/protobuf/js/data.proto | 50 - lib/protobuf/js/debug.js | 159 - lib/protobuf/js/debug_test.js | 188 - lib/protobuf/js/gulpfile.js | 261 - lib/protobuf/js/jasmine.json | 17 - lib/protobuf/js/map.js | 542 - lib/protobuf/js/maps_test.js | 406 - lib/protobuf/js/message.js | 1850 -- lib/protobuf/js/message_test.js | 1078 - lib/protobuf/js/node_loader.js | 49 - lib/protobuf/js/package.json | 26 - lib/protobuf/js/proto3_test.js | 413 - lib/protobuf/js/proto3_test.proto | 90 - lib/protobuf/js/test.proto | 313 - lib/protobuf/js/test10.proto | 39 - lib/protobuf/js/test11.proto | 52 - lib/protobuf/js/test12.proto | 119 - lib/protobuf/js/test13.proto | 70 - lib/protobuf/js/test14.proto | 43 - lib/protobuf/js/test15.proto | 39 - lib/protobuf/js/test2.proto | 60 - lib/protobuf/js/test3.proto | 53 - lib/protobuf/js/test4.proto | 42 - lib/protobuf/js/test5.proto | 44 - lib/protobuf/js/test8.proto | 50 - lib/protobuf/js/test9.proto | 39 - lib/protobuf/js/test_bootstrap.js | 41 - lib/protobuf/js/testbinary.proto | 244 - lib/protobuf/js/testempty.proto | 33 - lib/protobuf/kokoro/README.md | 6 - lib/protobuf/kokoro/linux/32-bit/Dockerfile | 143 - lib/protobuf/kokoro/linux/32-bit/build.sh | 18 - .../kokoro/linux/32-bit/continuous.cfg | 11 - .../kokoro/linux/32-bit/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/64-bit/Dockerfile | 244 - lib/protobuf/kokoro/linux/bazel/build.sh | 17 - .../kokoro/linux/bazel/continuous.cfg | 5 - lib/protobuf/kokoro/linux/bazel/presubmit.cfg | 5 - lib/protobuf/kokoro/linux/benchmark/build.sh | 26 - .../kokoro/linux/benchmark/continuous.cfg | 11 - lib/protobuf/kokoro/linux/benchmark/run.sh | 105 - .../kokoro/linux/build_and_run_docker.sh | 63 - .../kokoro/linux/cpp_distcheck/build.sh | 21 - .../kokoro/linux/cpp_distcheck/continuous.cfg | 5 - .../kokoro/linux/cpp_distcheck/presubmit.cfg | 5 - .../kokoro/linux/cpp_tcmalloc/build.sh | 13 - .../kokoro/linux/cpp_tcmalloc/continuous.cfg | 5 - .../kokoro/linux/cpp_tcmalloc/presubmit.cfg | 5 - lib/protobuf/kokoro/linux/csharp/build.sh | 18 - .../kokoro/linux/csharp/continuous.cfg | 5 - .../kokoro/linux/csharp/presubmit.cfg | 5 - .../kokoro/linux/dist_install/build.sh | 15 - .../kokoro/linux/dist_install/continuous.cfg | 5 - .../kokoro/linux/dist_install/presubmit.cfg | 5 - .../linux/dockerfile/push_testing_images.sh | 29 - .../release/ruby_rake_compiler/Dockerfile | 3 - .../dockerfile/test/cpp_tcmalloc/Dockerfile | 29 - .../linux/dockerfile/test/csharp/Dockerfile | 36 - .../dockerfile/test/javascript/Dockerfile | 33 - .../linux/dockerfile/test/php/Dockerfile | 238 - .../dockerfile/test/php_32bit/Dockerfile | 224 - .../dockerfile/test/python_jessie/Dockerfile | 39 - .../dockerfile/test/python_stretch/Dockerfile | 47 - .../linux/dockerfile/test/ruby/Dockerfile | 37 - lib/protobuf/kokoro/linux/golang/build.sh | 17 - .../kokoro/linux/golang/continuous.cfg | 11 - .../kokoro/linux/golang/presubmit.cfg | 11 - .../kokoro/linux/java_compatibility/build.sh | 17 - .../linux/java_compatibility/continuous.cfg | 5 - .../linux/java_compatibility/presubmit.cfg | 5 - lib/protobuf/kokoro/linux/java_jdk7/build.sh | 17 - .../kokoro/linux/java_jdk7/continuous.cfg | 11 - .../kokoro/linux/java_jdk7/presubmit.cfg | 11 - .../kokoro/linux/java_oracle7/build.sh | 17 - .../kokoro/linux/java_oracle7/continuous.cfg | 11 - .../kokoro/linux/java_oracle7/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/javascript/build.sh | 18 - .../kokoro/linux/javascript/continuous.cfg | 11 - .../kokoro/linux/javascript/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/make_test_output.py | 94 - lib/protobuf/kokoro/linux/php_all/build.sh | 18 - .../kokoro/linux/php_all/continuous.cfg | 11 - .../kokoro/linux/php_all/presubmit.cfg | 11 - .../kokoro/linux/pull_request_in_docker.sh | 25 - lib/protobuf/kokoro/linux/python/build.sh | 17 - .../kokoro/linux/python/continuous.cfg | 11 - .../kokoro/linux/python/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python27/build.sh | 18 - .../kokoro/linux/python27/continuous.cfg | 11 - .../kokoro/linux/python27/presubmit.cfg | 11 - .../kokoro/linux/python27_cpp/build.sh | 18 - .../kokoro/linux/python27_cpp/continuous.cfg | 11 - .../kokoro/linux/python27_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python33/build.sh | 18 - .../kokoro/linux/python33/continuous.cfg | 11 - .../kokoro/linux/python33/presubmit.cfg | 11 - .../kokoro/linux/python33_cpp/build.sh | 18 - .../kokoro/linux/python33_cpp/continuous.cfg | 11 - .../kokoro/linux/python33_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python34/build.sh | 18 - .../kokoro/linux/python34/continuous.cfg | 11 - .../kokoro/linux/python34/presubmit.cfg | 11 - .../kokoro/linux/python34_cpp/build.sh | 18 - .../kokoro/linux/python34_cpp/continuous.cfg | 11 - .../kokoro/linux/python34_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python35/build.sh | 18 - .../kokoro/linux/python35/continuous.cfg | 11 - .../kokoro/linux/python35/presubmit.cfg | 11 - .../kokoro/linux/python35_cpp/build.sh | 18 - .../kokoro/linux/python35_cpp/continuous.cfg | 11 - .../kokoro/linux/python35_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python36/build.sh | 18 - .../kokoro/linux/python36/continuous.cfg | 11 - .../kokoro/linux/python36/presubmit.cfg | 11 - .../kokoro/linux/python36_cpp/build.sh | 18 - .../kokoro/linux/python36_cpp/continuous.cfg | 11 - .../kokoro/linux/python36_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/python37/build.sh | 18 - .../kokoro/linux/python37/continuous.cfg | 11 - .../kokoro/linux/python37/presubmit.cfg | 11 - .../kokoro/linux/python37_cpp/build.sh | 18 - .../kokoro/linux/python37_cpp/continuous.cfg | 11 - .../kokoro/linux/python37_cpp/presubmit.cfg | 11 - .../linux/python_compatibility/build.sh | 17 - .../linux/python_compatibility/continuous.cfg | 5 - .../linux/python_compatibility/presubmit.cfg | 5 - lib/protobuf/kokoro/linux/python_cpp/build.sh | 17 - .../kokoro/linux/python_cpp/continuous.cfg | 11 - .../kokoro/linux/python_cpp/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/ruby23/build.sh | 18 - .../kokoro/linux/ruby23/continuous.cfg | 11 - .../kokoro/linux/ruby23/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/ruby24/build.sh | 18 - .../kokoro/linux/ruby24/continuous.cfg | 11 - .../kokoro/linux/ruby24/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/ruby25/build.sh | 18 - .../kokoro/linux/ruby25/continuous.cfg | 11 - .../kokoro/linux/ruby25/presubmit.cfg | 11 - lib/protobuf/kokoro/linux/ruby26/build.sh | 18 - .../kokoro/linux/ruby26/continuous.cfg | 11 - .../kokoro/linux/ruby26/presubmit.cfg | 11 - lib/protobuf/kokoro/macos/cpp/build.sh | 11 - lib/protobuf/kokoro/macos/cpp/continuous.cfg | 5 - lib/protobuf/kokoro/macos/cpp/presubmit.cfg | 5 - .../kokoro/macos/cpp_distcheck/build.sh | 11 - .../kokoro/macos/cpp_distcheck/continuous.cfg | 5 - .../kokoro/macos/cpp_distcheck/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/javascript/build.sh | 11 - .../kokoro/macos/javascript/continuous.cfg | 5 - .../kokoro/macos/javascript/presubmit.cfg | 5 - .../objectivec_cocoapods_integration/build.sh | 11 - .../continuous.cfg | 5 - .../presubmit.cfg | 5 - .../macos/objectivec_ios_debug/build.sh | 11 - .../macos/objectivec_ios_debug/continuous.cfg | 5 - .../macos/objectivec_ios_debug/presubmit.cfg | 5 - .../macos/objectivec_ios_release/build.sh | 11 - .../objectivec_ios_release/continuous.cfg | 5 - .../objectivec_ios_release/presubmit.cfg | 5 - .../kokoro/macos/objectivec_osx/build.sh | 11 - .../macos/objectivec_osx/continuous.cfg | 5 - .../kokoro/macos/objectivec_osx/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/php5.6_mac/build.sh | 11 - .../kokoro/macos/php5.6_mac/continuous.cfg | 5 - .../kokoro/macos/php5.6_mac/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/php7.0_mac/build.sh | 11 - .../kokoro/macos/php7.0_mac/continuous.cfg | 5 - .../kokoro/macos/php7.0_mac/presubmit.cfg | 5 - .../kokoro/macos/prepare_build_macos_rc | 40 - lib/protobuf/kokoro/macos/python/build.sh | 11 - .../kokoro/macos/python/continuous.cfg | 5 - .../kokoro/macos/python/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/python_cpp/build.sh | 12 - .../kokoro/macos/python_cpp/continuous.cfg | 5 - .../kokoro/macos/python_cpp/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/ruby23/build.sh | 11 - .../kokoro/macos/ruby23/continuous.cfg | 5 - .../kokoro/macos/ruby23/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/ruby24/build.sh | 11 - .../kokoro/macos/ruby24/continuous.cfg | 5 - .../kokoro/macos/ruby24/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/ruby25/build.sh | 11 - .../kokoro/macos/ruby25/continuous.cfg | 5 - .../kokoro/macos/ruby25/presubmit.cfg | 5 - lib/protobuf/kokoro/macos/ruby26/build.sh | 11 - .../kokoro/macos/ruby26/continuous.cfg | 5 - .../kokoro/macos/ruby26/presubmit.cfg | 5 - .../kokoro/release/collect_all_artifacts.cfg | 7 - .../kokoro/release/collect_all_artifacts.sh | 62 - .../release/csharp/windows/build_nuget.bat | 14 - .../release/csharp/windows/continuous.cfg | 11 - .../release/csharp/windows/presubmit.cfg | 11 - .../kokoro/release/csharp/windows/release.cfg | 11 - .../kokoro/release/protoc/linux/build.sh | 40 - .../kokoro/release/protoc/linux/release.cfg | 7 - .../kokoro/release/protoc/macos/build.sh | 23 - .../kokoro/release/protoc/macos/release.cfg | 8 - .../kokoro/release/protoc/windows/build.bat | 27 - .../kokoro/release/protoc/windows/release.cfg | 8 - .../release/python/linux/build_artifacts.sh | 55 - .../kokoro/release/python/linux/config.sh | 50 - .../release/python/linux/continuous.cfg | 8 - .../kokoro/release/python/linux/presubmit.cfg | 8 - .../kokoro/release/python/linux/release.cfg | 8 - .../release/python/macos/build_artifacts.sh | 56 - .../kokoro/release/python/macos/config.sh | 48 - .../release/python/macos/continuous.cfg | 8 - .../kokoro/release/python/macos/presubmit.cfg | 8 - .../kokoro/release/python/macos/release.cfg | 8 - .../python/windows/build_artifacts.bat | 68 - .../python/windows/build_single_artifact.bat | 72 - .../release/python/windows/continuous.cfg | 8 - .../release/python/windows/presubmit.cfg | 8 - .../kokoro/release/python/windows/release.cfg | 8 - .../release/ruby/linux/build_artifacts.sh | 14 - .../kokoro/release/ruby/linux/continuous.cfg | 8 - .../release/ruby/linux/prepare_build.sh | 18 - .../kokoro/release/ruby/linux/presubmit.cfg | 8 - .../kokoro/release/ruby/linux/release.cfg | 8 - .../release/ruby/linux/ruby/ruby_build.sh | 17 - .../ruby/linux/ruby/ruby_build_environment.sh | 8 - .../release/ruby/macos/build_artifacts.sh | 19 - .../kokoro/release/ruby/macos/continuous.cfg | 8 - .../kokoro/release/ruby/macos/presubmit.cfg | 8 - .../kokoro/release/ruby/macos/release.cfg | 8 - .../release/ruby/macos/ruby/ruby_build.sh | 17 - .../ruby/macos/ruby/ruby_build_environment.sh | 57 - lib/protobuf/kokoro/windows/csharp/build.bat | 14 - .../kokoro/windows/csharp/continuous.cfg | 5 - .../kokoro/windows/csharp/presubmit.cfg | 5 - lib/protobuf/m4/ac_system_extensions.m4 | 37 - lib/protobuf/m4/acx_check_suncc.m4 | 73 - lib/protobuf/m4/ax_cxx_compile_stdcxx.m4 | 1001 - lib/protobuf/m4/ax_prog_cc_for_build.m4 | 125 - lib/protobuf/m4/ax_prog_cxx_for_build.m4 | 110 - lib/protobuf/m4/ax_pthread.m4 | 485 - lib/protobuf/m4/stl_hash.m4 | 71 - lib/protobuf/objectivec/.gitignore | 23 - .../DevTools/check_version_stamps.sh | 55 - .../DevTools/compile_testing_protos.sh | 150 - .../objectivec/DevTools/full_mac_build.sh | 394 - lib/protobuf/objectivec/DevTools/pddm.py | 690 - .../objectivec/DevTools/pddm_tests.py | 515 - lib/protobuf/objectivec/GPBArray.h | 1967 -- lib/protobuf/objectivec/GPBArray.m | 2551 --- .../objectivec/GPBArray_PackagePrivate.h | 130 - lib/protobuf/objectivec/GPBBootstrap.h | 141 - lib/protobuf/objectivec/GPBCodedInputStream.h | 253 - lib/protobuf/objectivec/GPBCodedInputStream.m | 505 - .../GPBCodedInputStream_PackagePrivate.h | 112 - .../objectivec/GPBCodedOutputStream.h | 748 - .../objectivec/GPBCodedOutputStream.m | 1210 -- .../GPBCodedOutputStream_PackagePrivate.h | 126 - lib/protobuf/objectivec/GPBDescriptor.h | 318 - lib/protobuf/objectivec/GPBDescriptor.m | 1123 - .../objectivec/GPBDescriptor_PackagePrivate.h | 325 - lib/protobuf/objectivec/GPBDictionary.h | 5770 ----- lib/protobuf/objectivec/GPBDictionary.m | 12120 ----------- .../objectivec/GPBDictionary_PackagePrivate.h | 488 - .../objectivec/GPBExtensionInternals.h | 50 - .../objectivec/GPBExtensionInternals.m | 391 - .../objectivec/GPBExtensionRegistry.h | 87 - .../objectivec/GPBExtensionRegistry.m | 130 - lib/protobuf/objectivec/GPBMessage.h | 470 - lib/protobuf/objectivec/GPBMessage.m | 3348 --- .../objectivec/GPBMessage_PackagePrivate.h | 124 - lib/protobuf/objectivec/GPBProtocolBuffers.h | 76 - lib/protobuf/objectivec/GPBProtocolBuffers.m | 66 - .../GPBProtocolBuffers_RuntimeSupport.h | 40 - lib/protobuf/objectivec/GPBRootObject.h | 52 - lib/protobuf/objectivec/GPBRootObject.m | 245 - .../objectivec/GPBRootObject_PackagePrivate.h | 46 - lib/protobuf/objectivec/GPBRuntimeTypes.h | 144 - lib/protobuf/objectivec/GPBUnknownField.h | 99 - lib/protobuf/objectivec/GPBUnknownField.m | 337 - lib/protobuf/objectivec/GPBUnknownFieldSet.h | 82 - lib/protobuf/objectivec/GPBUnknownFieldSet.m | 395 - .../GPBUnknownFieldSet_PackagePrivate.h | 61 - .../GPBUnknownField_PackagePrivate.h | 47 - lib/protobuf/objectivec/GPBUtilities.h | 539 - lib/protobuf/objectivec/GPBUtilities.m | 2214 -- .../objectivec/GPBUtilities_PackagePrivate.h | 351 - lib/protobuf/objectivec/GPBWellKnownTypes.h | 245 - lib/protobuf/objectivec/GPBWellKnownTypes.m | 272 - lib/protobuf/objectivec/GPBWireFormat.h | 73 - lib/protobuf/objectivec/GPBWireFormat.m | 85 - .../project.pbxproj | 1114 - .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcschemes/PerformanceTests.xcscheme | 344 - .../xcschemes/ProtocolBuffers.xcscheme | 133 - .../project.pbxproj | 1137 - .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcschemes/PerformanceTests.xcscheme | 344 - .../xcschemes/ProtocolBuffers.xcscheme | 133 - .../project.pbxproj | 1129 - .../contents.xcworkspacedata | 7 - .../xcshareddata/IDEWorkspaceChecks.plist | 8 - .../xcshareddata/WorkspaceSettings.xcsettings | 8 - .../xcschemes/PerformanceTests.xcscheme | 370 - .../xcschemes/ProtocolBuffers.xcscheme | 133 - lib/protobuf/objectivec/README.md | 191 - .../project.pbxproj | 290 - .../contents.xcworkspacedata | 7 - .../xcschemes/OSXCocoaPodsTester.xcscheme | 91 - .../OSXCocoaPodsTester/AppDelegate.h | 37 - .../OSXCocoaPodsTester/AppDelegate.m | 48 - .../AppIcon.appiconset/Contents.json | 58 - .../Base.lproj/MainMenu.xib | 680 - .../OSXCocoaPodsTester/Info.plist | 34 - .../OSXCocoaPodsTester/main.m | 35 - .../OSXCocoaPodsTester/Podfile-framework | 10 - .../OSXCocoaPodsTester/Podfile-static | 8 - .../objectivec/Tests/CocoaPods/README.md | 9 - .../iOSCocoaPodsTester/Podfile-framework | 10 - .../iOSCocoaPodsTester/Podfile-static | 8 - .../project.pbxproj | 309 - .../contents.xcworkspacedata | 7 - .../xcschemes/iOSCocoaPodsTester.xcscheme | 91 - .../iOSCocoaPodsTester/AppDelegate.h | 39 - .../iOSCocoaPodsTester/AppDelegate.m | 67 - .../AppIcon.appiconset/Contents.json | 68 - .../Base.lproj/LaunchScreen.storyboard | 27 - .../Base.lproj/Main.storyboard | 26 - .../iOSCocoaPodsTester/Info.plist | 47 - .../iOSCocoaPodsTester/ViewController.h | 37 - .../iOSCocoaPodsTester/ViewController.m | 49 - .../iOSCocoaPodsTester/main.m | 39 - .../objectivec/Tests/CocoaPods/run_tests.sh | 150 - .../objectivec/Tests/GPBARCUnittestProtos.m | 63 - lib/protobuf/objectivec/Tests/GPBArrayTests.m | 3715 ---- .../Tests/GPBCodedInputStreamTests.m | 460 - .../Tests/GPBCodedOuputStreamTests.m | 436 - .../objectivec/Tests/GPBCompileTest01.m | 40 - .../objectivec/Tests/GPBCompileTest02.m | 40 - .../objectivec/Tests/GPBCompileTest03.m | 40 - .../objectivec/Tests/GPBCompileTest04.m | 40 - .../objectivec/Tests/GPBCompileTest05.m | 40 - .../objectivec/Tests/GPBCompileTest06.m | 40 - .../objectivec/Tests/GPBCompileTest07.m | 40 - .../objectivec/Tests/GPBCompileTest08.m | 40 - .../objectivec/Tests/GPBCompileTest09.m | 40 - .../objectivec/Tests/GPBCompileTest10.m | 40 - .../objectivec/Tests/GPBCompileTest11.m | 40 - .../objectivec/Tests/GPBCompileTest12.m | 40 - .../objectivec/Tests/GPBCompileTest13.m | 40 - .../objectivec/Tests/GPBCompileTest14.m | 40 - .../objectivec/Tests/GPBCompileTest15.m | 40 - .../objectivec/Tests/GPBCompileTest16.m | 40 - .../objectivec/Tests/GPBCompileTest17.m | 40 - .../objectivec/Tests/GPBCompileTest18.m | 40 - .../objectivec/Tests/GPBCompileTest19.m | 40 - .../objectivec/Tests/GPBCompileTest20.m | 40 - .../objectivec/Tests/GPBCompileTest21.m | 40 - .../objectivec/Tests/GPBCompileTest22.m | 40 - .../objectivec/Tests/GPBCompileTest23.m | 40 - .../objectivec/Tests/GPBCompileTest24.m | 42 - .../objectivec/Tests/GPBCompileTest25.m | 42 - .../objectivec/Tests/GPBConcurrencyTests.m | 206 - .../objectivec/Tests/GPBDescriptorTests.m | 465 - .../Tests/GPBDictionaryTests+Bool.m | 2450 --- .../Tests/GPBDictionaryTests+Int32.m | 3676 ---- .../Tests/GPBDictionaryTests+Int64.m | 3676 ---- .../Tests/GPBDictionaryTests+String.m | 3384 --- .../Tests/GPBDictionaryTests+UInt32.m | 3676 ---- .../Tests/GPBDictionaryTests+UInt64.m | 3675 ---- .../objectivec/Tests/GPBDictionaryTests.m | 186 - .../objectivec/Tests/GPBDictionaryTests.pddm | 1048 - .../Tests/GPBExtensionRegistryTest.m | 138 - .../objectivec/Tests/GPBMessageTests+Merge.m | 700 - .../Tests/GPBMessageTests+Runtime.m | 2581 --- .../Tests/GPBMessageTests+Serialization.m | 1227 -- .../objectivec/Tests/GPBMessageTests.m | 2186 -- .../Tests/GPBObjectiveCPlusPlusTest.mm | 69 - lib/protobuf/objectivec/Tests/GPBPerfTests.m | 413 - .../objectivec/Tests/GPBSwiftTests.swift | 460 - .../objectivec/Tests/GPBTestUtilities.h | 103 - .../objectivec/Tests/GPBTestUtilities.m | 2546 --- .../objectivec/Tests/GPBUnittestProtos.m | 75 - .../objectivec/Tests/GPBUnittestProtos2.m | 34 - .../objectivec/Tests/GPBUnknownFieldSetTest.m | 502 - .../objectivec/Tests/GPBUtilitiesTests.m | 420 - .../objectivec/Tests/GPBWellKnownTypesTest.m | 214 - .../objectivec/Tests/GPBWireFormatTests.m | 258 - .../Tests/UnitTests-Bridging-Header.h | 6 - .../objectivec/Tests/UnitTests-Info.plist | 20 - lib/protobuf/objectivec/Tests/golden_message | Bin 493 -> 0 bytes .../Tests/golden_packed_fields_message | Bin 493 -> 0 bytes .../text_format_extensions_unittest_data.txt | 140 - .../Tests/text_format_map_unittest_data.txt | 70 - .../Tests/text_format_unittest_data.txt | 116 - .../objectivec/Tests/unittest_cycle.proto | 56 - .../Tests/unittest_deprecated.proto | 95 - .../Tests/unittest_deprecated_file.proto | 76 - .../Tests/unittest_extension_chain_a.proto | 51 - .../Tests/unittest_extension_chain_b.proto | 47 - .../Tests/unittest_extension_chain_c.proto | 45 - .../Tests/unittest_extension_chain_d.proto | 49 - .../Tests/unittest_extension_chain_e.proto | 40 - .../Tests/unittest_extension_chain_f.proto | 44 - .../Tests/unittest_extension_chain_g.proto | 41 - .../objectivec/Tests/unittest_objc.proto | 884 - .../Tests/unittest_objc_options.proto | 61 - .../Tests/unittest_objc_startup.proto | 49 - .../Tests/unittest_runtime_proto2.proto | 128 - .../Tests/unittest_runtime_proto3.proto | 121 - .../objectivec/generate_well_known_types.sh | 76 - .../objectivec/google/protobuf/Any.pbobjc.h | 183 - .../objectivec/google/protobuf/Any.pbobjc.m | 114 - .../objectivec/google/protobuf/Api.pbobjc.h | 311 - .../objectivec/google/protobuf/Api.pbobjc.m | 362 - .../google/protobuf/Duration.pbobjc.h | 145 - .../google/protobuf/Duration.pbobjc.m | 109 - .../objectivec/google/protobuf/Empty.pbobjc.h | 74 - .../objectivec/google/protobuf/Empty.pbobjc.m | 85 - .../google/protobuf/FieldMask.pbobjc.h | 273 - .../google/protobuf/FieldMask.pbobjc.m | 98 - .../google/protobuf/SourceContext.pbobjc.h | 77 - .../google/protobuf/SourceContext.pbobjc.m | 98 - .../google/protobuf/Struct.pbobjc.h | 204 - .../google/protobuf/Struct.pbobjc.m | 302 - .../google/protobuf/Timestamp.pbobjc.h | 167 - .../google/protobuf/Timestamp.pbobjc.m | 109 - .../objectivec/google/protobuf/Type.pbobjc.h | 444 - .../objectivec/google/protobuf/Type.pbobjc.m | 716 - .../google/protobuf/Wrappers.pbobjc.h | 219 - .../google/protobuf/Wrappers.pbobjc.m | 457 - lib/protobuf/php/README.md | 97 - lib/protobuf/php/composer.json | 28 - lib/protobuf/php/ext/google/protobuf/array.c | 545 - .../google/protobuf/builtin_descriptors.inc | 635 - .../php/ext/google/protobuf/config.m4 | 10 - lib/protobuf/php/ext/google/protobuf/def.c | 1076 - .../php/ext/google/protobuf/encode_decode.c | 1879 -- lib/protobuf/php/ext/google/protobuf/map.c | 592 - .../php/ext/google/protobuf/message.c | 2609 --- .../php/ext/google/protobuf/package.xml | 393 - .../php/ext/google/protobuf/protobuf.c | 401 - .../php/ext/google/protobuf/protobuf.h | 1510 -- .../php/ext/google/protobuf/storage.c | 1154 - .../php/ext/google/protobuf/type_check.c | 606 - lib/protobuf/php/ext/google/protobuf/upb.c | 13634 ------------ lib/protobuf/php/ext/google/protobuf/upb.h | 7255 ------- lib/protobuf/php/ext/google/protobuf/utf8.c | 68 - lib/protobuf/php/ext/google/protobuf/utf8.h | 36 - .../php/generate_descriptor_protos.sh | 16 - lib/protobuf/php/phpunit.xml | 18 - lib/protobuf/php/release.sh | 37 - .../src/GPBMetadata/Google/Protobuf/Any.php | 30 - .../src/GPBMetadata/Google/Protobuf/Api.php | 49 - .../GPBMetadata/Google/Protobuf/Duration.php | 31 - .../GPBMetadata/Google/Protobuf/FieldMask.php | 31 - .../GPBMetadata/Google/Protobuf/GPBEmpty.php | 30 - .../Google/Protobuf/Internal/Descriptor.php | 277 - .../Google/Protobuf/SourceContext.php | 32 - .../GPBMetadata/Google/Protobuf/Struct.php | 45 - .../GPBMetadata/Google/Protobuf/Timestamp.php | 31 - .../src/GPBMetadata/Google/Protobuf/Type.php | 78 - .../GPBMetadata/Google/Protobuf/Wrappers.php | 38 - lib/protobuf/php/src/Google/Protobuf/Any.php | 325 - lib/protobuf/php/src/Google/Protobuf/Api.php | 350 - .../php/src/Google/Protobuf/BoolValue.php | 68 - .../php/src/Google/Protobuf/BytesValue.php | 68 - .../php/src/Google/Protobuf/Descriptor.php | 100 - .../src/Google/Protobuf/DescriptorPool.php | 76 - .../php/src/Google/Protobuf/DoubleValue.php | 68 - .../php/src/Google/Protobuf/Duration.php | 173 - lib/protobuf/php/src/Google/Protobuf/Enum.php | 203 - .../src/Google/Protobuf/EnumDescriptor.php | 79 - .../php/src/Google/Protobuf/EnumValue.php | 135 - .../Google/Protobuf/EnumValueDescriptor.php | 64 - .../php/src/Google/Protobuf/Field.php | 381 - .../src/Google/Protobuf/Field/Cardinality.php | 70 - .../php/src/Google/Protobuf/Field/Kind.php | 175 - .../src/Google/Protobuf/FieldDescriptor.php | 117 - .../php/src/Google/Protobuf/FieldMask.php | 223 - .../src/Google/Protobuf/Field_Cardinality.php | 16 - .../php/src/Google/Protobuf/Field_Kind.php | 16 - .../php/src/Google/Protobuf/FloatValue.php | 68 - .../php/src/Google/Protobuf/GPBEmpty.php | 39 - .../php/src/Google/Protobuf/Int32Value.php | 68 - .../php/src/Google/Protobuf/Int64Value.php | 68 - .../Protobuf/Internal/CodedInputStream.php | 378 - .../Protobuf/Internal/CodedOutputStream.php | 159 - .../Google/Protobuf/Internal/Descriptor.php | 222 - .../Protobuf/Internal/DescriptorPool.php | 179 - .../Protobuf/Internal/DescriptorProto.php | 386 - .../DescriptorProto/ExtensionRange.php | 152 - .../DescriptorProto/ReservedRange.php | 122 - .../DescriptorProto_ExtensionRange.php | 16 - .../DescriptorProto_ReservedRange.php | 16 - .../Protobuf/Internal/EnumBuilderContext.php | 63 - .../Protobuf/Internal/EnumDescriptor.php | 115 - .../Protobuf/Internal/EnumDescriptorProto.php | 231 - .../EnumDescriptorProto/EnumReservedRange.php | 124 - .../EnumDescriptorProto_EnumReservedRange.php | 16 - .../Google/Protobuf/Internal/EnumOptions.php | 172 - .../Internal/EnumValueDescriptorProto.php | 137 - .../Protobuf/Internal/EnumValueOptions.php | 127 - .../Internal/ExtensionRangeOptions.php | 74 - .../Protobuf/Internal/FieldDescriptor.php | 284 - .../Internal/FieldDescriptorProto.php | 473 - .../Internal/FieldDescriptorProto/Label.php | 58 - .../Internal/FieldDescriptorProto/Type.php | 153 - .../Internal/FieldDescriptorProto_Label.php | 16 - .../Internal/FieldDescriptorProto_Type.php | 16 - .../Google/Protobuf/Internal/FieldOptions.php | 488 - .../Protobuf/Internal/FieldOptions/CType.php | 58 - .../Protobuf/Internal/FieldOptions/JSType.php | 62 - .../Protobuf/Internal/FieldOptions_CType.php | 16 - .../Protobuf/Internal/FieldOptions_JSType.php | 16 - .../Protobuf/Internal/FileDescriptor.php | 89 - .../Protobuf/Internal/FileDescriptorProto.php | 519 - .../Protobuf/Internal/FileDescriptorSet.php | 70 - .../Google/Protobuf/Internal/FileOptions.php | 1046 - .../Internal/FileOptions/OptimizeMode.php | 64 - .../Internal/FileOptions_OptimizeMode.php | 16 - .../Protobuf/Internal/GPBDecodeException.php | 47 - .../Google/Protobuf/Internal/GPBJsonWire.php | 304 - .../src/Google/Protobuf/Internal/GPBLabel.php | 40 - .../src/Google/Protobuf/Internal/GPBType.php | 55 - .../src/Google/Protobuf/Internal/GPBUtil.php | 615 - .../src/Google/Protobuf/Internal/GPBWire.php | 622 - .../Google/Protobuf/Internal/GPBWireType.php | 43 - .../Protobuf/Internal/GeneratedCodeInfo.php | 82 - .../Internal/GeneratedCodeInfo/Annotation.php | 216 - .../Internal/GeneratedCodeInfo_Annotation.php | 16 - .../Internal/GetPublicDescriptorTrait.php | 41 - .../Internal/HasPublicDescriptorTrait.php | 43 - .../src/Google/Protobuf/Internal/MapEntry.php | 57 - .../src/Google/Protobuf/Internal/MapField.php | 290 - .../Google/Protobuf/Internal/MapFieldIter.php | 124 - .../src/Google/Protobuf/Internal/Message.php | 1947 -- .../Internal/MessageBuilderContext.php | 120 - .../Protobuf/Internal/MessageOptions.php | 382 - .../Internal/MethodDescriptorProto.php | 264 - .../Protobuf/Internal/MethodOptions.php | 161 - .../MethodOptions/IdempotencyLevel.php | 64 - .../MethodOptions_IdempotencyLevel.php | 16 - .../Protobuf/Internal/OneofDescriptor.php | 78 - .../Internal/OneofDescriptorProto.php | 103 - .../Google/Protobuf/Internal/OneofField.php | 77 - .../Google/Protobuf/Internal/OneofOptions.php | 74 - .../Protobuf/Internal/RawInputStream.php | 50 - .../Protobuf/Internal/RepeatedField.php | 258 - .../Protobuf/Internal/RepeatedFieldIter.php | 118 - .../Internal/ServiceDescriptorProto.php | 137 - .../Protobuf/Internal/ServiceOptions.php | 127 - .../Protobuf/Internal/SourceCodeInfo.php | 237 - .../Internal/SourceCodeInfo/Location.php | 463 - .../Internal/SourceCodeInfo_Location.php | 16 - .../Protobuf/Internal/UninterpretedOption.php | 289 - .../Internal/UninterpretedOption/NamePart.php | 110 - .../Internal/UninterpretedOption_NamePart.php | 16 - .../php/src/Google/Protobuf/ListValue.php | 68 - .../php/src/Google/Protobuf/Method.php | 271 - .../php/src/Google/Protobuf/Mixin.php | 166 - .../php/src/Google/Protobuf/NullValue.php | 48 - .../src/Google/Protobuf/OneofDescriptor.php | 75 - .../php/src/Google/Protobuf/Option.php | 126 - .../php/src/Google/Protobuf/SourceContext.php | 72 - .../php/src/Google/Protobuf/StringValue.php | 68 - .../php/src/Google/Protobuf/Struct.php | 73 - .../php/src/Google/Protobuf/Syntax.php | 53 - .../php/src/Google/Protobuf/Timestamp.php | 200 - lib/protobuf/php/src/Google/Protobuf/Type.php | 237 - .../php/src/Google/Protobuf/UInt32Value.php | 68 - .../php/src/Google/Protobuf/UInt64Value.php | 68 - .../php/src/Google/Protobuf/Value.php | 214 - lib/protobuf/php/src/phpdoc.dist.xml | 15 - lib/protobuf/php/tests/array_test.php | 593 - lib/protobuf/php/tests/autoload.php | 27 - lib/protobuf/php/tests/bootstrap_phpunit.php | 5 - lib/protobuf/php/tests/compatibility_test.sh | 164 - lib/protobuf/php/tests/compile_extension.sh | 10 - lib/protobuf/php/tests/descriptors_test.php | 246 - lib/protobuf/php/tests/encode_decode_test.php | 1178 -- lib/protobuf/php/tests/gdb_test.sh | 19 - .../php/tests/generated_class_test.php | 1509 -- .../php/tests/generated_phpdoc_test.php | 345 - .../php/tests/generated_service_test.php | 110 - lib/protobuf/php/tests/map_field_test.php | 505 - lib/protobuf/php/tests/memory_leak_test.php | 208 - .../php/tests/php_implementation_test.php | 598 - lib/protobuf/php/tests/proto/empty/echo.proto | 17 - lib/protobuf/php/tests/proto/test.proto | 209 - .../php/tests/proto/test_descriptors.proto | 35 - .../proto/test_empty_php_namespace.proto | 19 - .../proto/test_import_descriptor_proto.proto | 14 - .../php/tests/proto/test_include.proto | 18 - .../php/tests/proto/test_no_namespace.proto | 22 - .../php/tests/proto/test_php_namespace.proto | 31 - .../php/tests/proto/test_prefix.proto | 20 - .../proto/test_reserved_enum_lower.proto | 77 - .../proto/test_reserved_enum_upper.proto | 77 - .../test_reserved_enum_value_lower.proto | 79 - .../test_reserved_enum_value_upper.proto | 79 - .../proto/test_reserved_message_lower.proto | 77 - .../proto/test_reserved_message_upper.proto | 77 - .../php/tests/proto/test_service.proto | 18 - .../tests/proto/test_service_namespace.proto | 13 - .../proto/test_wrapper_type_setters.proto | 26 - lib/protobuf/php/tests/test.sh | 40 - lib/protobuf/php/tests/test_base.php | 343 - lib/protobuf/php/tests/test_util.php | 547 - lib/protobuf/php/tests/undefined_test.php | 920 - lib/protobuf/php/tests/well_known_test.php | 419 - .../php/tests/wrapper_type_setters_test.php | 312 - lib/protobuf/post_process_dist.sh | 64 - lib/protobuf/protobuf-lite.pc.in | 11 - lib/protobuf/protobuf.bzl | 474 - lib/protobuf/protobuf.pc.in | 13 - lib/protobuf/protobuf_deps.bzl | 47 - lib/protobuf/protoc-artifacts/Dockerfile | 55 - lib/protobuf/protoc-artifacts/README.md | 183 - lib/protobuf/protoc-artifacts/build-protoc.sh | 280 - lib/protobuf/protoc-artifacts/build-zip.sh | 118 - lib/protobuf/protoc-artifacts/pom.xml | 139 - .../protoc-artifacts/scl-enable-devtoolset.sh | 13 - lib/protobuf/python/MANIFEST.in | 17 - lib/protobuf/python/README.md | 134 - .../protobuf/internal/factory_test1.proto | 55 - .../protobuf/internal/factory_test2.proto | 77 - .../protobuf/internal/more_extensions.proto | 58 - .../internal/more_extensions_dynamic.proto | 49 - .../protobuf/internal/more_messages.proto | 51 - .../internal/test_bad_identifiers.proto | 52 - .../proto/google/protobuf/descriptor.proto | 620 - .../src/proto/google/protobuf/unittest.proto | 719 - .../protobuf/unittest_custom_options.proto | 387 - .../google/protobuf/unittest_import.proto | 64 - .../protobuf/unittest_import_public.proto | 40 - .../proto/google/protobuf/unittest_mset.proto | 72 - .../unittest_no_generic_services.proto | 52 - .../compatibility_tests/v2.5.0/setup.py | 87 - .../python/compatibility_tests/v2.5.0/test.sh | 104 - .../v2.5.0/tests/__init__.py | 4 - .../v2.5.0/tests/google/__init__.py | 4 - .../v2.5.0/tests/google/protobuf/__init__.py | 4 - .../google/protobuf/internal/__init__.py | 37 - .../protobuf/internal/descriptor_test.py | 613 - .../protobuf/internal/generator_test.py | 269 - .../google/protobuf/internal/golden_message | Bin 509 -> 0 bytes .../internal/golden_packed_fields_message | Bin 142 -> 0 bytes .../google/protobuf/internal/message_test.py | 499 - .../internal/service_reflection_test.py | 136 - .../google/protobuf/internal/test_util.py | 651 - .../protobuf/internal/text_format_test.py | 622 - .../internal/text_format_unittest_data.txt | 128 - .../text_format_unittest_extensions_data.txt | 128 - .../protobuf/internal/wire_format_test.py | 253 - lib/protobuf/python/google/__init__.py | 4 - .../python/google/protobuf/__init__.py | 39 - .../google/protobuf/compiler/__init__.py | 0 .../python/google/protobuf/descriptor.py | 1077 - .../google/protobuf/descriptor_database.py | 177 - .../python/google/protobuf/descriptor_pool.py | 1204 -- .../google/protobuf/internal/__init__.py | 30 - .../protobuf/internal/_parameterized.py | 449 - .../google/protobuf/internal/any_test.proto | 51 - .../protobuf/internal/api_implementation.cc | 127 - .../protobuf/internal/api_implementation.py | 153 - .../google/protobuf/internal/containers.py | 779 - .../google/protobuf/internal/decoder.py | 1016 - .../internal/descriptor_database_test.py | 132 - .../protobuf/internal/descriptor_pool_test.py | 1126 - .../internal/descriptor_pool_test1.proto | 96 - .../internal/descriptor_pool_test2.proto | 73 - .../protobuf/internal/descriptor_test.py | 1055 - .../google/protobuf/internal/encoder.py | 828 - .../protobuf/internal/enum_type_wrapper.py | 95 - .../protobuf/internal/extension_dict.py | 206 - .../protobuf/internal/factory_test1.proto | 72 - .../protobuf/internal/factory_test2.proto | 104 - .../protobuf/internal/file_options_test.proto | 43 - .../protobuf/internal/generator_test.py | 359 - .../internal/import_test_package/__init__.py | 33 - .../internal/import_test_package/inner.proto | 37 - .../internal/import_test_package/outer.proto | 39 - .../protobuf/internal/json_format_test.py | 1136 - .../google/protobuf/internal/keywords_test.py | 105 - .../protobuf/internal/message_factory_test.py | 223 - .../protobuf/internal/message_listener.py | 78 - .../internal/message_set_extensions.proto | 74 - .../google/protobuf/internal/message_test.py | 2595 --- .../internal/missing_enum_values.proto | 57 - .../protobuf/internal/more_extensions.proto | 61 - .../internal/more_extensions_dynamic.proto | 51 - .../protobuf/internal/more_messages.proto | 360 - .../google/protobuf/internal/no_package.proto | 40 - .../protobuf/internal/packed_field_test.proto | 73 - .../protobuf/internal/proto_builder_test.py | 96 - .../protobuf/internal/python_message.py | 1535 -- .../protobuf/internal/python_protobuf.cc | 59 - .../protobuf/internal/reflection_test.py | 3230 --- .../internal/service_reflection_test.py | 144 - .../protobuf/internal/symbol_database_test.py | 138 - .../internal/test_bad_identifiers.proto | 53 - .../google/protobuf/internal/test_util.py | 868 - .../protobuf/internal/testing_refleaks.py | 133 - .../protobuf/internal/text_encoding_test.py | 72 - .../protobuf/internal/text_format_test.py | 2133 -- .../google/protobuf/internal/type_checkers.py | 400 - .../protobuf/internal/unknown_fields_test.py | 430 - .../protobuf/internal/well_known_types.py | 859 - .../internal/well_known_types_test.py | 1008 - .../google/protobuf/internal/wire_format.py | 268 - .../protobuf/internal/wire_format_test.py | 257 - .../python/google/protobuf/json_format.py | 815 - .../python/google/protobuf/message.py | 319 - .../python/google/protobuf/message_factory.py | 160 - .../python/google/protobuf/proto_api.h | 97 - .../python/google/protobuf/proto_builder.py | 130 - .../python/google/protobuf/pyext/README | 6 - .../python/google/protobuf/pyext/__init__.py | 4 - .../google/protobuf/pyext/cpp_message.py | 65 - .../google/protobuf/pyext/descriptor.cc | 1969 -- .../python/google/protobuf/pyext/descriptor.h | 104 - .../protobuf/pyext/descriptor_containers.cc | 1790 -- .../protobuf/pyext/descriptor_containers.h | 109 - .../protobuf/pyext/descriptor_database.cc | 185 - .../protobuf/pyext/descriptor_database.h | 82 - .../google/protobuf/pyext/descriptor_pool.cc | 772 - .../google/protobuf/pyext/descriptor_pool.h | 136 - .../google/protobuf/pyext/extension_dict.cc | 474 - .../google/protobuf/pyext/extension_dict.h | 71 - .../python/google/protobuf/pyext/field.cc | 142 - .../python/google/protobuf/pyext/field.h | 59 - .../google/protobuf/pyext/map_container.cc | 1077 - .../google/protobuf/pyext/map_container.h | 91 - .../python/google/protobuf/pyext/message.cc | 3121 --- .../python/google/protobuf/pyext/message.h | 383 - .../google/protobuf/pyext/message_factory.cc | 303 - .../google/protobuf/pyext/message_factory.h | 103 - .../google/protobuf/pyext/message_module.cc | 121 - .../protobuf/pyext/proto2_api_test.proto | 40 - .../python/google/protobuf/pyext/python.proto | 68 - .../pyext/repeated_composite_container.cc | 580 - .../pyext/repeated_composite_container.h | 112 - .../pyext/repeated_scalar_container.cc | 778 - .../pyext/repeated_scalar_container.h | 77 - .../google/protobuf/pyext/safe_numerics.h | 164 - .../protobuf/pyext/scoped_pyobject_ptr.h | 100 - .../google/protobuf/pyext/unknown_fields.cc | 357 - .../google/protobuf/pyext/unknown_fields.h | 90 - .../python/google/protobuf/python_protobuf.h | 57 - .../python/google/protobuf/reflection.py | 95 - .../python/google/protobuf/service.py | 226 - .../google/protobuf/service_reflection.py | 284 - .../python/google/protobuf/symbol_database.py | 189 - .../python/google/protobuf/text_encoding.py | 117 - .../python/google/protobuf/text_format.py | 1774 -- .../python/google/protobuf/util/__init__.py | 0 lib/protobuf/python/mox.py | 1401 -- lib/protobuf/python/release.sh | 116 - lib/protobuf/python/release/wheel/Dockerfile | 6 - lib/protobuf/python/release/wheel/README.md | 17 - .../release/wheel/build_wheel_manylinux.sh | 27 - .../release/wheel/protobuf_optimized_pip.sh | 66 - lib/protobuf/python/setup.cfg | 2 - lib/protobuf/python/setup.py | 285 - lib/protobuf/python/stubout.py | 143 - lib/protobuf/python/tox.ini | 26 - lib/protobuf/ruby/.gitignore | 9 - lib/protobuf/ruby/Gemfile | 3 - lib/protobuf/ruby/README.md | 111 - lib/protobuf/ruby/Rakefile | 155 - .../ruby/compatibility_tests/v3.0.0/README.md | 5 - .../ruby/compatibility_tests/v3.0.0/Rakefile | 25 - .../ruby/compatibility_tests/v3.0.0/test.sh | 17 - .../compatibility_tests/v3.0.0/tests/basic.rb | 1279 -- .../v3.0.0/tests/generated_code.proto | 67 - .../v3.0.0/tests/generated_code_test.rb | 19 - .../v3.0.0/tests/repeated_field_test.rb | 641 - .../v3.0.0/tests/stress.rb | 38 - .../v3.0.0/tests/test_import.proto | 5 - .../ruby/ext/google/protobuf_c/defs.c | 2257 -- .../ext/google/protobuf_c/encode_decode.c | 1617 -- .../ruby/ext/google/protobuf_c/extconf.rb | 23 - lib/protobuf/ruby/ext/google/protobuf_c/map.c | 854 - .../ruby/ext/google/protobuf_c/message.c | 848 - .../ruby/ext/google/protobuf_c/protobuf.c | 121 - .../ruby/ext/google/protobuf_c/protobuf.h | 615 - .../ext/google/protobuf_c/repeated_field.c | 660 - .../ruby/ext/google/protobuf_c/storage.c | 1062 - lib/protobuf/ruby/ext/google/protobuf_c/upb.c | 17497 ---------------- lib/protobuf/ruby/ext/google/protobuf_c/upb.h | 10641 ---------- .../ruby/ext/google/protobuf_c/wrap_memcpy.c | 51 - lib/protobuf/ruby/google-protobuf.gemspec | 27 - lib/protobuf/ruby/lib/google/protobuf.rb | 77 - .../ruby/lib/google/protobuf/message_exts.rb | 53 - .../lib/google/protobuf/repeated_field.rb | 188 - .../lib/google/protobuf/well_known_types.rb | 224 - lib/protobuf/ruby/pom.xml | 92 - .../google/protobuf/jruby/RubyBuilder.java | 167 - .../google/protobuf/jruby/RubyDescriptor.java | 269 - .../protobuf/jruby/RubyDescriptorPool.java | 169 - .../com/google/protobuf/jruby/RubyEnum.java | 86 - .../jruby/RubyEnumBuilderContext.java | 82 - .../protobuf/jruby/RubyEnumDescriptor.java | 185 - .../protobuf/jruby/RubyFieldDescriptor.java | 277 - .../com/google/protobuf/jruby/RubyMap.java | 434 - .../google/protobuf/jruby/RubyMessage.java | 809 - .../jruby/RubyMessageBuilderContext.java | 217 - .../jruby/RubyOneofBuilderContext.java | 84 - .../protobuf/jruby/RubyOneofDescriptor.java | 124 - .../google/protobuf/jruby/RubyProtobuf.java | 68 - .../protobuf/jruby/RubyRepeatedField.java | 409 - .../protobuf/jruby/SentinelOuterClass.java | 776 - .../java/com/google/protobuf/jruby/Utils.java | 303 - .../main/java/google/ProtobufJavaService.java | 60 - lib/protobuf/ruby/src/main/sentinel.proto | 15 - lib/protobuf/ruby/tests/basic.rb | 387 - lib/protobuf/ruby/tests/basic_proto2.rb | 265 - lib/protobuf/ruby/tests/basic_test.proto | 155 - .../ruby/tests/basic_test_proto2.proto | 162 - lib/protobuf/ruby/tests/common_tests.rb | 1551 -- lib/protobuf/ruby/tests/encode_decode_test.rb | 97 - lib/protobuf/ruby/tests/gc_test.rb | 102 - lib/protobuf/ruby/tests/generated_code.proto | 85 - .../ruby/tests/generated_code_proto2.proto | 80 - .../ruby/tests/generated_code_proto2_test.rb | 21 - .../ruby/tests/generated_code_test.rb | 23 - .../ruby/tests/repeated_field_test.rb | 663 - lib/protobuf/ruby/tests/stress.rb | 38 - lib/protobuf/ruby/tests/test_import.proto | 5 - .../ruby/tests/test_import_proto2.proto | 5 - .../ruby/tests/test_ruby_package.proto | 7 - .../ruby/tests/test_ruby_package_proto2.proto | 7 - lib/protobuf/ruby/tests/type_errors.rb | 176 - .../ruby/tests/well_known_types_test.rb | 142 - lib/protobuf/ruby/travis-test.sh | 54 - lib/protobuf/six.BUILD | 13 - lib/protobuf/src/Makefile.am | 904 - lib/protobuf/src/README.md | 228 - lib/protobuf/src/google/protobuf/any.cc | 81 - lib/protobuf/src/google/protobuf/any.h | 149 - lib/protobuf/src/google/protobuf/any.pb.cc | 440 - lib/protobuf/src/google/protobuf/any.pb.h | 358 - lib/protobuf/src/google/protobuf/any.proto | 155 - lib/protobuf/src/google/protobuf/any_lite.cc | 123 - lib/protobuf/src/google/protobuf/any_test.cc | 168 - .../src/google/protobuf/any_test.proto | 41 - lib/protobuf/src/google/protobuf/api.pb.cc | 1720 -- lib/protobuf/src/google/protobuf/api.pb.h | 1236 -- lib/protobuf/src/google/protobuf/api.proto | 210 - lib/protobuf/src/google/protobuf/arena.cc | 415 - lib/protobuf/src/google/protobuf/arena.h | 729 - lib/protobuf/src/google/protobuf/arena_impl.h | 326 - .../src/google/protobuf/arena_test_util.cc | 50 - .../src/google/protobuf/arena_test_util.h | 99 - .../src/google/protobuf/arena_unittest.cc | 1460 -- .../src/google/protobuf/arenastring.h | 407 - .../google/protobuf/arenastring_unittest.cc | 136 - .../protobuf/compiler/annotation_test_util.cc | 167 - .../protobuf/compiler/annotation_test_util.h | 115 - .../protobuf/compiler/code_generator.cc | 122 - .../google/protobuf/compiler/code_generator.h | 182 - .../compiler/command_line_interface.cc | 2363 --- .../compiler/command_line_interface.h | 450 - .../command_line_interface_unittest.cc | 2444 --- .../compiler/cpp/cpp_bootstrap_unittest.cc | 191 - .../google/protobuf/compiler/cpp/cpp_enum.cc | 430 - .../google/protobuf/compiler/cpp/cpp_enum.h | 105 - .../protobuf/compiler/cpp/cpp_enum_field.cc | 515 - .../protobuf/compiler/cpp/cpp_enum_field.h | 116 - .../protobuf/compiler/cpp/cpp_extension.cc | 184 - .../protobuf/compiler/cpp/cpp_extension.h | 91 - .../google/protobuf/compiler/cpp/cpp_field.cc | 206 - .../google/protobuf/compiler/cpp/cpp_field.h | 247 - .../google/protobuf/compiler/cpp/cpp_file.cc | 1485 -- .../google/protobuf/compiler/cpp/cpp_file.h | 205 - .../protobuf/compiler/cpp/cpp_generator.cc | 219 - .../protobuf/compiler/cpp/cpp_generator.h | 99 - .../protobuf/compiler/cpp/cpp_helpers.cc | 1843 -- .../protobuf/compiler/cpp/cpp_helpers.h | 839 - .../protobuf/compiler/cpp/cpp_map_field.cc | 377 - .../protobuf/compiler/cpp/cpp_map_field.h | 76 - .../protobuf/compiler/cpp/cpp_message.cc | 4448 ---- .../protobuf/compiler/cpp/cpp_message.h | 223 - .../compiler/cpp/cpp_message_field.cc | 826 - .../protobuf/compiler/cpp/cpp_message_field.h | 136 - .../compiler/cpp/cpp_message_layout_helper.h | 61 - .../compiler/cpp/cpp_move_unittest.cc | 169 - .../protobuf/compiler/cpp/cpp_options.h | 76 - .../compiler/cpp/cpp_padding_optimizer.cc | 227 - .../compiler/cpp/cpp_padding_optimizer.h | 64 - .../compiler/cpp/cpp_plugin_unittest.cc | 245 - .../compiler/cpp/cpp_primitive_field.cc | 516 - .../compiler/cpp/cpp_primitive_field.h | 118 - .../protobuf/compiler/cpp/cpp_service.cc | 327 - .../protobuf/compiler/cpp/cpp_service.h | 122 - .../protobuf/compiler/cpp/cpp_string_field.cc | 1244 -- .../protobuf/compiler/cpp/cpp_string_field.h | 136 - .../cpp/cpp_test_bad_identifiers.proto | 184 - .../cpp/cpp_test_large_enum_value.proto | 43 - .../protobuf/compiler/cpp/cpp_unittest.cc | 134 - .../protobuf/compiler/cpp/cpp_unittest.h | 51 - .../protobuf/compiler/cpp/cpp_unittest.inc | 2275 -- .../protobuf/compiler/cpp/metadata_test.cc | 162 - .../csharp/csharp_bootstrap_unittest.cc | 194 - .../compiler/csharp/csharp_doc_comment.cc | 115 - .../compiler/csharp/csharp_doc_comment.h | 51 - .../protobuf/compiler/csharp/csharp_enum.cc | 98 - .../protobuf/compiler/csharp/csharp_enum.h | 66 - .../compiler/csharp/csharp_enum_field.cc | 135 - .../compiler/csharp/csharp_enum_field.h | 83 - .../compiler/csharp/csharp_field_base.cc | 445 - .../compiler/csharp/csharp_field_base.h | 108 - .../compiler/csharp/csharp_generator.cc | 113 - .../compiler/csharp/csharp_generator.h | 67 - .../csharp/csharp_generator_unittest.cc | 70 - .../compiler/csharp/csharp_helpers.cc | 566 - .../protobuf/compiler/csharp/csharp_helpers.h | 167 - .../compiler/csharp/csharp_map_field.cc | 140 - .../compiler/csharp/csharp_map_field.h | 73 - .../compiler/csharp/csharp_message.cc | 710 - .../protobuf/compiler/csharp/csharp_message.h | 92 - .../compiler/csharp/csharp_message_field.cc | 293 - .../compiler/csharp/csharp_message_field.h | 93 - .../protobuf/compiler/csharp/csharp_names.h | 106 - .../protobuf/compiler/csharp/csharp_options.h | 81 - .../compiler/csharp/csharp_primitive_field.cc | 320 - .../compiler/csharp/csharp_primitive_field.h | 97 - .../csharp/csharp_reflection_class.cc | 327 - .../compiler/csharp/csharp_reflection_class.h | 75 - .../csharp/csharp_repeated_enum_field.cc | 136 - .../csharp/csharp_repeated_enum_field.h | 77 - .../csharp/csharp_repeated_message_field.cc | 162 - .../csharp/csharp_repeated_message_field.h | 77 - .../csharp/csharp_repeated_primitive_field.cc | 133 - .../csharp/csharp_repeated_primitive_field.h | 73 - .../csharp/csharp_source_generator_base.cc | 72 - .../csharp/csharp_source_generator_base.h | 72 - .../compiler/csharp/csharp_wrapper_field.cc | 277 - .../compiler/csharp/csharp_wrapper_field.h | 95 - .../src/google/protobuf/compiler/importer.cc | 510 - .../src/google/protobuf/compiler/importer.h | 335 - .../protobuf/compiler/importer_unittest.cc | 547 - .../protobuf/compiler/java/java_context.cc | 202 - .../protobuf/compiler/java/java_context.h | 113 - .../compiler/java/java_doc_comment.cc | 233 - .../protobuf/compiler/java/java_doc_comment.h | 75 - .../java/java_doc_comment_unittest.cc | 67 - .../protobuf/compiler/java/java_enum.cc | 354 - .../google/protobuf/compiler/java/java_enum.h | 100 - .../protobuf/compiler/java/java_enum_field.cc | 1020 - .../protobuf/compiler/java/java_enum_field.h | 157 - .../compiler/java/java_enum_field_lite.cc | 773 - .../compiler/java/java_enum_field_lite.h | 136 - .../protobuf/compiler/java/java_enum_lite.cc | 229 - .../protobuf/compiler/java/java_enum_lite.h | 98 - .../protobuf/compiler/java/java_extension.cc | 173 - .../protobuf/compiler/java/java_extension.h | 115 - .../compiler/java/java_extension_lite.cc | 115 - .../compiler/java/java_extension_lite.h | 75 - .../protobuf/compiler/java/java_field.cc | 293 - .../protobuf/compiler/java/java_field.h | 188 - .../protobuf/compiler/java/java_file.cc | 683 - .../google/protobuf/compiler/java/java_file.h | 119 - .../protobuf/compiler/java/java_generator.cc | 207 - .../protobuf/compiler/java/java_generator.h | 74 - .../compiler/java/java_generator_factory.cc | 86 - .../compiler/java/java_generator_factory.h | 103 - .../protobuf/compiler/java/java_helpers.cc | 1027 - .../protobuf/compiler/java/java_helpers.h | 429 - .../protobuf/compiler/java/java_map_field.cc | 760 - .../protobuf/compiler/java/java_map_field.h | 80 - .../compiler/java/java_map_field_lite.cc | 805 - .../compiler/java/java_map_field_lite.h | 71 - .../protobuf/compiler/java/java_message.cc | 1443 -- .../protobuf/compiler/java/java_message.h | 144 - .../compiler/java/java_message_builder.cc | 727 - .../compiler/java/java_message_builder.h | 88 - .../java/java_message_builder_lite.cc | 149 - .../compiler/java/java_message_builder_lite.h | 85 - .../compiler/java/java_message_field.cc | 1348 -- .../compiler/java/java_message_field.h | 175 - .../compiler/java/java_message_field_lite.cc | 807 - .../compiler/java/java_message_field_lite.h | 136 - .../compiler/java/java_message_lite.cc | 731 - .../compiler/java/java_message_lite.h | 82 - .../compiler/java/java_name_resolver.cc | 288 - .../compiler/java/java_name_resolver.h | 127 - .../protobuf/compiler/java/java_names.h | 112 - .../protobuf/compiler/java/java_options.h | 73 - .../compiler/java/java_plugin_unittest.cc | 120 - .../compiler/java/java_primitive_field.cc | 958 - .../compiler/java/java_primitive_field.h | 158 - .../java/java_primitive_field_lite.cc | 633 - .../compiler/java/java_primitive_field_lite.h | 137 - .../protobuf/compiler/java/java_service.cc | 475 - .../protobuf/compiler/java/java_service.h | 139 - .../java/java_shared_code_generator.cc | 197 - .../java/java_shared_code_generator.h | 90 - .../compiler/java/java_string_field.cc | 1036 - .../compiler/java/java_string_field.h | 156 - .../compiler/java/java_string_field_lite.cc | 721 - .../compiler/java/java_string_field_lite.h | 135 - .../compiler/javamicro/javamicro_enum.cc | 91 - .../compiler/javamicro/javamicro_enum.h | 87 - .../javamicro/javamicro_enum_field.cc | 333 - .../compiler/javamicro/javamicro_enum_field.h | 94 - .../compiler/javamicro/javamicro_field.cc | 102 - .../compiler/javamicro/javamicro_field.h | 98 - .../compiler/javamicro/javamicro_file.cc | 237 - .../compiler/javamicro/javamicro_file.h | 92 - .../compiler/javamicro/javamicro_generator.cc | 210 - .../compiler/javamicro/javamicro_generator.h | 72 - .../compiler/javamicro/javamicro_helpers.cc | 356 - .../compiler/javamicro/javamicro_helpers.h | 138 - .../compiler/javamicro/javamicro_main.cc | 8 - .../compiler/javamicro/javamicro_message.cc | 480 - .../compiler/javamicro/javamicro_message.h | 93 - .../javamicro/javamicro_message_field.cc | 302 - .../javamicro/javamicro_message_field.h | 95 - .../compiler/javamicro/javamicro_params.h | 170 - .../javamicro/javamicro_primitive_field.cc | 676 - .../javamicro/javamicro_primitive_field.h | 94 - .../compiler/javanano/javanano_enum.cc | 143 - .../compiler/javanano/javanano_enum.h | 87 - .../compiler/javanano/javanano_enum_field.cc | 544 - .../compiler/javanano/javanano_enum_field.h | 126 - .../compiler/javanano/javanano_extension.cc | 150 - .../compiler/javanano/javanano_extension.h | 74 - .../compiler/javanano/javanano_field.cc | 209 - .../compiler/javanano/javanano_field.h | 130 - .../compiler/javanano/javanano_file.cc | 263 - .../compiler/javanano/javanano_file.h | 94 - .../compiler/javanano/javanano_generator.cc | 230 - .../compiler/javanano/javanano_generator.h | 72 - .../compiler/javanano/javanano_helpers.cc | 591 - .../compiler/javanano/javanano_helpers.h | 199 - .../compiler/javanano/javanano_main.cc | 8 - .../compiler/javanano/javanano_map_field.cc | 186 - .../compiler/javanano/javanano_map_field.h | 70 - .../compiler/javanano/javanano_message.cc | 676 - .../compiler/javanano/javanano_message.h | 97 - .../javanano/javanano_message_field.cc | 363 - .../javanano/javanano_message_field.h | 121 - .../compiler/javanano/javanano_params.h | 258 - .../javanano/javanano_primitive_field.cc | 968 - .../javanano/javanano_primitive_field.h | 150 - .../protobuf/compiler/js/js_generator.cc | 3955 ---- .../protobuf/compiler/js/js_generator.h | 336 - .../compiler/js/well_known_types_embed.cc | 270 - .../compiler/js/well_known_types_embed.h | 43 - .../src/google/protobuf/compiler/main.cc | 110 - .../protobuf/compiler/mock_code_generator.cc | 328 - .../protobuf/compiler/mock_code_generator.h | 130 - .../compiler/objectivec/method_dump.sh | 179 - .../compiler/objectivec/objectivec_enum.cc | 261 - .../compiler/objectivec/objectivec_enum.h | 71 - .../objectivec/objectivec_enum_field.cc | 149 - .../objectivec/objectivec_enum_field.h | 77 - .../objectivec/objectivec_extension.cc | 144 - .../objectivec/objectivec_extension.h | 66 - .../compiler/objectivec/objectivec_field.cc | 474 - .../compiler/objectivec/objectivec_field.h | 192 - .../compiler/objectivec/objectivec_file.cc | 612 - .../compiler/objectivec/objectivec_file.h | 83 - .../objectivec/objectivec_generator.cc | 172 - .../objectivec/objectivec_generator.h | 78 - .../compiler/objectivec/objectivec_helpers.cc | 1742 -- .../compiler/objectivec/objectivec_helpers.h | 317 - .../objectivec/objectivec_helpers_unittest.cc | 257 - .../objectivec/objectivec_map_field.cc | 177 - .../objectivec/objectivec_map_field.h | 68 - .../compiler/objectivec/objectivec_message.cc | 609 - .../compiler/objectivec/objectivec_message.h | 99 - .../objectivec/objectivec_message_field.cc | 107 - .../objectivec/objectivec_message_field.h | 82 - .../objectivec/objectivec_nsobject_methods.h | 197 - .../compiler/objectivec/objectivec_oneof.cc | 140 - .../compiler/objectivec/objectivec_oneof.h | 76 - .../objectivec/objectivec_primitive_field.cc | 190 - .../objectivec/objectivec_primitive_field.h | 95 - .../google/protobuf/compiler/package_info.h | 63 - .../src/google/protobuf/compiler/parser.cc | 2395 --- .../src/google/protobuf/compiler/parser.h | 599 - .../protobuf/compiler/parser_unittest.cc | 3586 ---- .../protobuf/compiler/php/php_generator.cc | 1684 -- .../protobuf/compiler/php/php_generator.h | 73 - .../src/google/protobuf/compiler/plugin.cc | 186 - .../src/google/protobuf/compiler/plugin.h | 94 - .../src/google/protobuf/compiler/plugin.pb.cc | 1901 -- .../src/google/protobuf/compiler/plugin.pb.h | 1396 -- .../src/google/protobuf/compiler/plugin.proto | 168 - .../compiler/python/python_generator.cc | 1429 -- .../compiler/python/python_generator.h | 180 - .../compiler/python/python_plugin_unittest.cc | 162 - .../compiler/ruby/ruby_generated_code.proto | 67 - .../compiler/ruby/ruby_generated_code_pb.rb | 76 - .../ruby/ruby_generated_code_proto2.proto | 68 - .../ruby/ruby_generated_code_proto2_pb.rb | 77 - .../ruby/ruby_generated_pkg_explicit.proto | 9 - .../ruby_generated_pkg_explicit_legacy.proto | 9 - .../ruby_generated_pkg_explicit_legacy_pb.rb | 20 - .../ruby/ruby_generated_pkg_explicit_pb.rb | 20 - .../ruby/ruby_generated_pkg_implicit.proto | 7 - .../ruby/ruby_generated_pkg_implicit_pb.rb | 20 - .../protobuf/compiler/ruby/ruby_generator.cc | 598 - .../protobuf/compiler/ruby/ruby_generator.h | 67 - .../compiler/ruby/ruby_generator_unittest.cc | 131 - .../src/google/protobuf/compiler/scc.h | 164 - .../google/protobuf/compiler/subprocess.cc | 476 - .../src/google/protobuf/compiler/subprocess.h | 111 - .../google/protobuf/compiler/test_plugin.cc | 61 - .../protobuf/compiler/zip_output_unittest.sh | 100 - .../google/protobuf/compiler/zip_writer.cc | 222 - .../src/google/protobuf/compiler/zip_writer.h | 93 - .../src/google/protobuf/descriptor.cc | 7333 ------- lib/protobuf/src/google/protobuf/descriptor.h | 2188 -- .../src/google/protobuf/descriptor.pb.cc | 15413 -------------- .../src/google/protobuf/descriptor.pb.h | 12012 ----------- .../src/google/protobuf/descriptor.proto | 885 - .../google/protobuf/descriptor_database.cc | 617 - .../src/google/protobuf/descriptor_database.h | 407 - .../protobuf/descriptor_database_unittest.cc | 803 - .../google/protobuf/descriptor_unittest.cc | 8042 ------- .../protobuf/drop_unknown_fields_test.cc | 83 - .../src/google/protobuf/duration.pb.cc | 405 - .../src/google/protobuf/duration.pb.h | 278 - .../src/google/protobuf/duration.proto | 116 - .../src/google/protobuf/dynamic_message.cc | 876 - .../src/google/protobuf/dynamic_message.h | 241 - .../protobuf/dynamic_message_unittest.cc | 326 - lib/protobuf/src/google/protobuf/empty.pb.cc | 305 - lib/protobuf/src/google/protobuf/empty.pb.h | 234 - lib/protobuf/src/google/protobuf/empty.proto | 52 - .../src/google/protobuf/extension_set.cc | 2102 -- .../src/google/protobuf/extension_set.h | 1597 -- .../google/protobuf/extension_set_heavy.cc | 726 - .../src/google/protobuf/extension_set_inl.h | 283 - .../google/protobuf/extension_set_unittest.cc | 1326 -- .../src/google/protobuf/field_mask.pb.cc | 375 - .../src/google/protobuf/field_mask.pb.h | 320 - .../src/google/protobuf/field_mask.proto | 245 - .../protobuf/generated_enum_reflection.h | 97 - .../google/protobuf/generated_enum_util.cc | 95 - .../src/google/protobuf/generated_enum_util.h | 83 - .../protobuf/generated_message_reflection.cc | 2436 --- .../protobuf/generated_message_reflection.h | 311 - .../generated_message_reflection_unittest.cc | 1054 - .../generated_message_table_driven.cc | 105 - .../protobuf/generated_message_table_driven.h | 339 - .../generated_message_table_driven_lite.cc | 107 - .../generated_message_table_driven_lite.h | 905 - .../google/protobuf/generated_message_util.cc | 837 - .../google/protobuf/generated_message_util.h | 240 - lib/protobuf/src/google/protobuf/has_bits.h | 116 - .../google/protobuf/implicit_weak_message.cc | 74 - .../google/protobuf/implicit_weak_message.h | 145 - .../google/protobuf/inlined_string_field.h | 259 - .../src/google/protobuf/io/coded_stream.cc | 796 - .../src/google/protobuf/io/coded_stream.h | 1409 -- .../src/google/protobuf/io/coded_stream_inl.h | 90 - .../protobuf/io/coded_stream_unittest.cc | 1381 -- .../src/google/protobuf/io/gzip_stream.cc | 333 - .../src/google/protobuf/io/gzip_stream.h | 201 - .../protobuf/io/gzip_stream_unittest.sh | 44 - .../src/google/protobuf/io/io_win32.cc | 416 - .../src/google/protobuf/io/io_win32.h | 120 - .../google/protobuf/io/io_win32_unittest.cc | 454 - .../src/google/protobuf/io/package_info.h | 53 - .../src/google/protobuf/io/printer.cc | 399 - lib/protobuf/src/google/protobuf/io/printer.h | 384 - .../google/protobuf/io/printer_unittest.cc | 735 - lib/protobuf/src/google/protobuf/io/strtod.cc | 143 - lib/protobuf/src/google/protobuf/io/strtod.h | 55 - .../src/google/protobuf/io/tokenizer.cc | 1131 - .../src/google/protobuf/io/tokenizer.h | 412 - .../google/protobuf/io/tokenizer_unittest.cc | 959 - .../google/protobuf/io/zero_copy_stream.cc | 55 - .../src/google/protobuf/io/zero_copy_stream.h | 252 - .../protobuf/io/zero_copy_stream_impl.cc | 373 - .../protobuf/io/zero_copy_stream_impl.h | 336 - .../protobuf/io/zero_copy_stream_impl_lite.cc | 440 - .../protobuf/io/zero_copy_stream_impl_lite.h | 404 - .../protobuf/io/zero_copy_stream_unittest.cc | 1001 - .../google/protobuf/lite_arena_unittest.cc | 90 - .../src/google/protobuf/lite_unittest.cc | 1195 -- lib/protobuf/src/google/protobuf/map.h | 1224 -- lib/protobuf/src/google/protobuf/map_entry.h | 164 - .../src/google/protobuf/map_entry_lite.h | 732 - lib/protobuf/src/google/protobuf/map_field.cc | 572 - lib/protobuf/src/google/protobuf/map_field.h | 817 - .../src/google/protobuf/map_field_inl.h | 357 - .../src/google/protobuf/map_field_lite.h | 193 - .../src/google/protobuf/map_field_test.cc | 480 - .../src/google/protobuf/map_lite_test_util.cc | 93 - .../src/google/protobuf/map_lite_test_util.h | 80 - .../google/protobuf/map_lite_unittest.proto | 130 - .../google/protobuf/map_proto2_unittest.proto | 91 - lib/protobuf/src/google/protobuf/map_test.cc | 3435 --- .../src/google/protobuf/map_test_util.cc | 1603 -- .../src/google/protobuf/map_test_util.h | 164 - .../src/google/protobuf/map_test_util_impl.h | 481 - .../src/google/protobuf/map_type_handler.h | 826 - .../src/google/protobuf/map_unittest.proto | 130 - lib/protobuf/src/google/protobuf/message.cc | 747 - lib/protobuf/src/google/protobuf/message.h | 1271 -- .../src/google/protobuf/message_lite.cc | 567 - .../src/google/protobuf/message_lite.h | 555 - .../src/google/protobuf/message_unittest.cc | 45 - .../src/google/protobuf/message_unittest.inc | 633 - lib/protobuf/src/google/protobuf/metadata.h | 78 - .../src/google/protobuf/metadata_lite.h | 235 - .../google/protobuf/no_field_presence_test.cc | 576 - .../src/google/protobuf/package_info.h | 66 - .../src/google/protobuf/parse_context.cc | 559 - .../src/google/protobuf/parse_context.h | 762 - lib/protobuf/src/google/protobuf/port.h | 6 - lib/protobuf/src/google/protobuf/port_def.inc | 380 - .../src/google/protobuf/port_undef.inc | 77 - .../protobuf/preserve_unknown_enum_test.cc | 290 - .../protobuf/proto3_arena_lite_unittest.cc | 155 - .../google/protobuf/proto3_arena_unittest.cc | 202 - .../google/protobuf/proto3_lite_unittest.cc | 43 - .../google/protobuf/proto3_lite_unittest.inc | 139 - lib/protobuf/src/google/protobuf/reflection.h | 562 - .../src/google/protobuf/reflection_internal.h | 363 - .../src/google/protobuf/reflection_ops.cc | 342 - .../src/google/protobuf/reflection_ops.h | 89 - .../protobuf/reflection_ops_unittest.cc | 479 - .../src/google/protobuf/repeated_field.cc | 134 - .../src/google/protobuf/repeated_field.h | 2682 --- .../repeated_field_reflection_unittest.cc | 712 - .../protobuf/repeated_field_unittest.cc | 1998 -- lib/protobuf/src/google/protobuf/service.cc | 45 - lib/protobuf/src/google/protobuf/service.h | 293 - .../src/google/protobuf/source_context.pb.cc | 363 - .../src/google/protobuf/source_context.pb.h | 277 - .../src/google/protobuf/source_context.proto | 48 - lib/protobuf/src/google/protobuf/struct.pb.cc | 1459 -- lib/protobuf/src/google/protobuf/struct.pb.h | 1158 - lib/protobuf/src/google/protobuf/struct.proto | 95 - .../src/google/protobuf/stubs/bytestream.cc | 198 - .../src/google/protobuf/stubs/bytestream.h | 351 - .../protobuf/stubs/bytestream_unittest.cc | 146 - .../src/google/protobuf/stubs/callback.h | 583 - .../src/google/protobuf/stubs/casts.h | 134 - .../src/google/protobuf/stubs/common.cc | 376 - .../src/google/protobuf/stubs/common.h | 221 - .../google/protobuf/stubs/common_unittest.cc | 358 - .../src/google/protobuf/stubs/fastmem.h | 157 - lib/protobuf/src/google/protobuf/stubs/hash.h | 123 - .../src/google/protobuf/stubs/int128.cc | 192 - .../src/google/protobuf/stubs/int128.h | 387 - .../google/protobuf/stubs/int128_unittest.cc | 517 - .../src/google/protobuf/stubs/logging.h | 241 - .../src/google/protobuf/stubs/macros.h | 120 - .../src/google/protobuf/stubs/map_util.h | 771 - .../src/google/protobuf/stubs/mathlimits.cc | 89 - .../src/google/protobuf/stubs/mathlimits.h | 307 - .../src/google/protobuf/stubs/mathutil.h | 140 - .../src/google/protobuf/stubs/mutex.h | 186 - lib/protobuf/src/google/protobuf/stubs/once.h | 55 - .../google/protobuf/stubs/platform_macros.h | 134 - lib/protobuf/src/google/protobuf/stubs/port.h | 443 - .../src/google/protobuf/stubs/status.cc | 134 - .../src/google/protobuf/stubs/status.h | 127 - .../src/google/protobuf/stubs/status_macros.h | 89 - .../src/google/protobuf/stubs/status_test.cc | 138 - .../src/google/protobuf/stubs/statusor.cc | 48 - .../src/google/protobuf/stubs/statusor.h | 263 - .../google/protobuf/stubs/statusor_test.cc | 274 - .../src/google/protobuf/stubs/stl_util.h | 121 - .../src/google/protobuf/stubs/stringpiece.cc | 270 - .../src/google/protobuf/stubs/stringpiece.h | 494 - .../protobuf/stubs/stringpiece_unittest.cc | 796 - .../src/google/protobuf/stubs/stringprintf.cc | 176 - .../src/google/protobuf/stubs/stringprintf.h | 83 - .../protobuf/stubs/stringprintf_unittest.cc | 152 - .../protobuf/stubs/structurally_valid.cc | 617 - .../stubs/structurally_valid_unittest.cc | 70 - .../src/google/protobuf/stubs/strutil.cc | 2414 --- .../src/google/protobuf/stubs/strutil.h | 940 - .../google/protobuf/stubs/strutil_unittest.cc | 841 - .../src/google/protobuf/stubs/substitute.cc | 138 - .../src/google/protobuf/stubs/substitute.h | 174 - .../src/google/protobuf/stubs/template_util.h | 138 - .../protobuf/stubs/template_util_unittest.cc | 130 - .../src/google/protobuf/stubs/time.cc | 365 - lib/protobuf/src/google/protobuf/stubs/time.h | 80 - .../src/google/protobuf/stubs/time_test.cc | 261 - .../protobuf/test_messages_proto2.proto | 233 - .../protobuf/test_messages_proto3.proto | 244 - lib/protobuf/src/google/protobuf/test_util.cc | 47 - lib/protobuf/src/google/protobuf/test_util.h | 1263 -- .../src/google/protobuf/test_util.inc | 2406 --- lib/protobuf/src/google/protobuf/test_util2.h | 83 - .../src/google/protobuf/test_util_lite.cc | 1969 -- .../src/google/protobuf/test_util_lite.h | 101 - .../google/protobuf/testdata/bad_utf8_string | 1 - .../google/protobuf/testdata/golden_message | Bin 531 -> 0 bytes .../protobuf/testdata/golden_message_maps | Bin 13619 -> 0 bytes .../testdata/golden_message_oneof_implemented | Bin 515 -> 0 bytes .../protobuf/testdata/golden_message_proto3 | Bin 248 -> 0 bytes .../testdata/golden_packed_fields_message | Bin 142 -> 0 bytes .../protobuf/testdata/map_test_data.txt | 140 - .../testdata/text_format_unittest_data.txt | 134 - ...format_unittest_data_oneof_implemented.txt | 129 - .../text_format_unittest_data_pointy.txt | 134 - ...text_format_unittest_data_pointy_oneof.txt | 129 - .../text_format_unittest_extensions_data.txt | 134 - ...format_unittest_extensions_data_pointy.txt | 134 - .../src/google/protobuf/testing/file.cc | 212 - .../src/google/protobuf/testing/file.h | 105 - .../src/google/protobuf/testing/googletest.cc | 304 - .../src/google/protobuf/testing/googletest.h | 104 - .../src/google/protobuf/testing/zcgunzip.cc | 83 - .../src/google/protobuf/testing/zcgzip.cc | 86 - .../src/google/protobuf/text_format.cc | 2514 --- .../src/google/protobuf/text_format.h | 629 - .../google/protobuf/text_format_unittest.cc | 2027 -- .../src/google/protobuf/timestamp.pb.cc | 405 - .../src/google/protobuf/timestamp.pb.h | 278 - .../src/google/protobuf/timestamp.proto | 138 - lib/protobuf/src/google/protobuf/type.pb.cc | 2979 --- lib/protobuf/src/google/protobuf/type.pb.h | 2553 --- lib/protobuf/src/google/protobuf/type.proto | 187 - .../src/google/protobuf/unittest.proto | 1107 - .../src/google/protobuf/unittest_arena.proto | 46 - .../protobuf/unittest_custom_options.proto | 430 - .../unittest_drop_unknown_fields.proto | 58 - .../unittest_embed_optimize_for.proto | 51 - .../src/google/protobuf/unittest_empty.proto | 38 - .../unittest_enormous_descriptor.proto | 1048 - .../src/google/protobuf/unittest_import.proto | 73 - .../protobuf/unittest_import_lite.proto | 52 - .../protobuf/unittest_import_public.proto | 41 - .../unittest_import_public_lite.proto | 43 - .../protobuf/unittest_lazy_dependencies.proto | 75 - ...test_lazy_dependencies_custom_option.proto | 67 - .../unittest_lazy_dependencies_enum.proto | 61 - .../src/google/protobuf/unittest_lite.proto | 488 - .../unittest_lite_imports_nonlite.proto | 47 - .../src/google/protobuf/unittest_mset.proto | 84 - .../protobuf/unittest_mset_wire_format.proto | 52 - .../google/protobuf/unittest_no_arena.proto | 206 - .../protobuf/unittest_no_arena_import.proto | 37 - .../protobuf/unittest_no_arena_lite.proto | 42 - .../protobuf/unittest_no_field_presence.proto | 138 - .../unittest_no_generic_services.proto | 54 - .../protobuf/unittest_optimize_for.proto | 67 - .../unittest_preserve_unknown_enum.proto | 71 - .../unittest_preserve_unknown_enum2.proto | 50 - .../src/google/protobuf/unittest_proto3.proto | 222 - .../protobuf/unittest_proto3_arena.proto | 208 - .../protobuf/unittest_proto3_arena_lite.proto | 207 - .../protobuf/unittest_proto3_lite.proto | 206 - .../protobuf/unittest_well_known_types.proto | 114 - .../src/google/protobuf/unknown_field_set.cc | 371 - .../src/google/protobuf/unknown_field_set.h | 394 - .../protobuf/unknown_field_set_unittest.cc | 612 - .../protobuf/util/delimited_message_util.cc | 121 - .../protobuf/util/delimited_message_util.h | 107 - .../util/delimited_message_util_test.cc | 87 - .../google/protobuf/util/field_comparator.cc | 213 - .../google/protobuf/util/field_comparator.h | 260 - .../protobuf/util/field_comparator_test.cc | 498 - .../google/protobuf/util/field_mask_util.cc | 720 - .../google/protobuf/util/field_mask_util.h | 245 - .../protobuf/util/field_mask_util_test.cc | 820 - .../google/protobuf/util/internal/constants.h | 99 - .../protobuf/util/internal/datapiece.cc | 425 - .../google/protobuf/util/internal/datapiece.h | 220 - .../internal/default_value_objectwriter.cc | 632 - .../internal/default_value_objectwriter.h | 336 - .../default_value_objectwriter_test.cc | 190 - .../protobuf/util/internal/error_listener.cc | 42 - .../protobuf/util/internal/error_listener.h | 108 - .../util/internal/expecting_objectwriter.h | 240 - .../util/internal/field_mask_utility.cc | 225 - .../util/internal/field_mask_utility.h | 73 - .../protobuf/util/internal/json_escaping.cc | 347 - .../protobuf/util/internal/json_escaping.h | 91 - .../util/internal/json_objectwriter.cc | 194 - .../util/internal/json_objectwriter.h | 233 - .../util/internal/json_objectwriter_test.cc | 313 - .../util/internal/json_stream_parser.cc | 884 - .../util/internal/json_stream_parser.h | 295 - .../util/internal/json_stream_parser_test.cc | 891 - .../protobuf/util/internal/location_tracker.h | 69 - .../util/internal/mock_error_listener.h | 64 - .../util/internal/object_location_tracker.h | 64 - .../protobuf/util/internal/object_source.h | 83 - .../protobuf/util/internal/object_writer.cc | 92 - .../protobuf/util/internal/object_writer.h | 145 - .../protobuf/util/internal/proto_writer.cc | 831 - .../protobuf/util/internal/proto_writer.h | 373 - .../util/internal/protostream_objectsource.cc | 1156 - .../util/internal/protostream_objectsource.h | 338 - .../internal/protostream_objectsource_test.cc | 1163 - .../util/internal/protostream_objectwriter.cc | 1314 -- .../util/internal/protostream_objectwriter.h | 419 - .../internal/protostream_objectwriter_test.cc | 2937 --- .../util/internal/structured_objectwriter.h | 119 - .../util/internal/testdata/anys.proto | 114 - .../util/internal/testdata/books.proto | 214 - .../internal/testdata/default_value.proto | 170 - .../testdata/default_value_test.proto | 53 - .../util/internal/testdata/field_mask.proto | 71 - .../util/internal/testdata/maps.proto | 148 - .../util/internal/testdata/oneofs.proto | 77 - .../util/internal/testdata/proto3.proto | 42 - .../util/internal/testdata/struct.proto | 117 - .../testdata/timestamp_duration.proto | 80 - .../util/internal/testdata/wrappers.proto | 100 - .../protobuf/util/internal/type_info.cc | 181 - .../google/protobuf/util/internal/type_info.h | 96 - .../util/internal/type_info_test_helper.cc | 131 - .../util/internal/type_info_test_helper.h | 95 - .../google/protobuf/util/internal/utility.cc | 414 - .../google/protobuf/util/internal/utility.h | 204 - .../google/protobuf/util/json_format.proto | 130 - .../protobuf/util/json_format_proto3.proto | 189 - .../src/google/protobuf/util/json_util.cc | 282 - .../src/google/protobuf/util/json_util.h | 203 - .../google/protobuf/util/json_util_test.cc | 649 - .../protobuf/util/message_differencer.cc | 1969 -- .../protobuf/util/message_differencer.h | 920 - .../util/message_differencer_unittest.cc | 3706 ---- .../util/message_differencer_unittest.proto | 78 - .../src/google/protobuf/util/package_info.h | 46 - .../src/google/protobuf/util/time_util.cc | 509 - .../src/google/protobuf/util/time_util.h | 312 - .../google/protobuf/util/time_util_test.cc | 380 - .../src/google/protobuf/util/type_resolver.h | 75 - .../protobuf/util/type_resolver_util.cc | 373 - .../google/protobuf/util/type_resolver_util.h | 57 - .../protobuf/util/type_resolver_util_test.cc | 437 - .../protobuf/well_known_types_unittest.cc | 60 - .../src/google/protobuf/wire_format.cc | 1360 -- .../src/google/protobuf/wire_format.h | 347 - .../src/google/protobuf/wire_format_lite.cc | 789 - .../src/google/protobuf/wire_format_lite.h | 1864 -- .../google/protobuf/wire_format_unittest.cc | 1523 -- .../src/google/protobuf/wrappers.pb.cc | 2737 --- .../src/google/protobuf/wrappers.pb.h | 1829 -- .../src/google/protobuf/wrappers.proto | 123 - lib/protobuf/src/libprotobuf-lite.map | 9 - lib/protobuf/src/libprotobuf.map | 9 - lib/protobuf/src/libprotoc.map | 9 - lib/protobuf/src/solaris/libstdc++.la | 51 - lib/protobuf/tests.sh | 751 - lib/protobuf/third_party/zlib.BUILD | 60 - lib/protobuf/update_file_lists.sh | 193 - lib/protobuf/update_version.py | 322 - lib/protobuf/util/python/BUILD | 18 - lib/protobuf/vendor_suffix_test.config | 33 - lib/protobuf/vendor_suffix_test.cpp | 42 - 2304 files changed, 849016 deletions(-) delete mode 100644 lib/protobuf/Android.bp delete mode 100644 lib/protobuf/BUILD delete mode 100644 lib/protobuf/CHANGES.txt delete mode 100644 lib/protobuf/CONTRIBUTING.md delete mode 100644 lib/protobuf/CONTRIBUTORS.txt delete mode 100644 lib/protobuf/CleanSpec.mk delete mode 100644 lib/protobuf/LICENSE delete mode 100644 lib/protobuf/METADATA delete mode 100644 lib/protobuf/MODULE_LICENSE_APACHE2 delete mode 100644 lib/protobuf/Makefile.am delete mode 120000 lib/protobuf/NOTICE delete mode 100644 lib/protobuf/OWNERS delete mode 100644 lib/protobuf/Protobuf.podspec delete mode 100644 lib/protobuf/README.android delete mode 100644 lib/protobuf/README.md delete mode 100644 lib/protobuf/TEST_MAPPING delete mode 100644 lib/protobuf/WORKSPACE delete mode 100644 lib/protobuf/android/config.h delete mode 100644 lib/protobuf/appveyor.bat delete mode 100644 lib/protobuf/appveyor.yml delete mode 100755 lib/protobuf/autogen.sh delete mode 100644 lib/protobuf/benchmarks/Makefile.am delete mode 100644 lib/protobuf/benchmarks/README.md delete mode 100644 lib/protobuf/benchmarks/__init__.py delete mode 100644 lib/protobuf/benchmarks/benchmarks.proto delete mode 100644 lib/protobuf/benchmarks/cpp/cpp_benchmark.cc delete mode 100644 lib/protobuf/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message1/proto2/dataset.google_message1_proto2.pb delete mode 100644 lib/protobuf/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message1/proto3/dataset.google_message1_proto3.pb delete mode 100644 lib/protobuf/benchmarks/datasets/google_message2/benchmark_message2.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message2/dataset.google_message2.pb delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_1.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_2.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_3.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_4.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_5.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_6.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_7.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message3/benchmark_message3_8.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message4/benchmark_message4.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message4/benchmark_message4_1.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message4/benchmark_message4_2.proto delete mode 100644 lib/protobuf/benchmarks/datasets/google_message4/benchmark_message4_3.proto delete mode 100755 lib/protobuf/benchmarks/download_data.sh delete mode 100644 lib/protobuf/benchmarks/go/go_benchmark_test.go delete mode 100644 lib/protobuf/benchmarks/google_size.proto delete mode 100644 lib/protobuf/benchmarks/java/pom.xml delete mode 100644 lib/protobuf/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java delete mode 100644 lib/protobuf/benchmarks/js/benchmark_suite.js delete mode 100644 lib/protobuf/benchmarks/js/js_benchmark.js delete mode 100644 lib/protobuf/benchmarks/php/PhpBenchmark.php delete mode 100644 lib/protobuf/benchmarks/php/autoload.php delete mode 100644 lib/protobuf/benchmarks/protobuf.js/generate_pbjs_files.js delete mode 100644 lib/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js delete mode 100644 lib/protobuf/benchmarks/python/__init__.py delete mode 100755 lib/protobuf/benchmarks/python/py_benchmark.py delete mode 100644 lib/protobuf/benchmarks/python/python_benchmark_messages.cc delete mode 100644 lib/protobuf/benchmarks/util/__init__.py delete mode 100755 lib/protobuf/benchmarks/util/big_query_utils.py delete mode 100644 lib/protobuf/benchmarks/util/data_proto2_to_proto3_util.h delete mode 100644 lib/protobuf/benchmarks/util/gogo_data_scrubber.cc delete mode 100644 lib/protobuf/benchmarks/util/proto3_data_stripper.cc delete mode 100644 lib/protobuf/benchmarks/util/protoc-gen-gogoproto.cc delete mode 100644 lib/protobuf/benchmarks/util/protoc-gen-proto2_to_proto3.cc delete mode 100755 lib/protobuf/benchmarks/util/result_parser.py delete mode 100755 lib/protobuf/benchmarks/util/result_uploader.py delete mode 100644 lib/protobuf/benchmarks/util/schema_proto2_to_proto3_util.h delete mode 100644 lib/protobuf/build.gradle delete mode 100644 lib/protobuf/cmake/CMakeLists.txt delete mode 100644 lib/protobuf/cmake/README.md delete mode 100644 lib/protobuf/cmake/conformance.cmake delete mode 100644 lib/protobuf/cmake/examples.cmake delete mode 100644 lib/protobuf/cmake/extract_includes.bat.in delete mode 100644 lib/protobuf/cmake/install.cmake delete mode 100644 lib/protobuf/cmake/libprotobuf-lite.cmake delete mode 100644 lib/protobuf/cmake/libprotobuf.cmake delete mode 100644 lib/protobuf/cmake/libprotoc.cmake delete mode 100644 lib/protobuf/cmake/protobuf-config-version.cmake.in delete mode 100644 lib/protobuf/cmake/protobuf-config.cmake.in delete mode 100644 lib/protobuf/cmake/protobuf-lite.pc.cmake delete mode 100644 lib/protobuf/cmake/protobuf-module.cmake.in delete mode 100644 lib/protobuf/cmake/protobuf-options.cmake delete mode 100644 lib/protobuf/cmake/protobuf.pc.cmake delete mode 100644 lib/protobuf/cmake/protoc.cmake delete mode 100644 lib/protobuf/cmake/tests.cmake delete mode 100644 lib/protobuf/cmake/version.rc.in delete mode 100644 lib/protobuf/compiler_config_setting.bzl delete mode 100644 lib/protobuf/composer.json delete mode 100644 lib/protobuf/config/config.h delete mode 100644 lib/protobuf/configure.ac delete mode 100644 lib/protobuf/conformance/ConformanceJava.java delete mode 100644 lib/protobuf/conformance/ConformanceJavaLite.java delete mode 100644 lib/protobuf/conformance/Makefile.am delete mode 100644 lib/protobuf/conformance/README.md delete mode 100644 lib/protobuf/conformance/autoload.php delete mode 100644 lib/protobuf/conformance/binary_json_conformance_suite.cc delete mode 100644 lib/protobuf/conformance/binary_json_conformance_suite.h delete mode 100644 lib/protobuf/conformance/conformance.proto delete mode 100644 lib/protobuf/conformance/conformance_cpp.cc delete mode 100755 lib/protobuf/conformance/conformance_nodejs.js delete mode 100644 lib/protobuf/conformance/conformance_objc.m delete mode 100755 lib/protobuf/conformance/conformance_php.php delete mode 100755 lib/protobuf/conformance/conformance_python.py delete mode 100755 lib/protobuf/conformance/conformance_ruby.rb delete mode 100644 lib/protobuf/conformance/conformance_test.cc delete mode 100644 lib/protobuf/conformance/conformance_test.h delete mode 100644 lib/protobuf/conformance/conformance_test_main.cc delete mode 100644 lib/protobuf/conformance/conformance_test_runner.cc delete mode 100644 lib/protobuf/conformance/failure_list_cpp.txt delete mode 100644 lib/protobuf/conformance/failure_list_csharp.txt delete mode 100644 lib/protobuf/conformance/failure_list_java.txt delete mode 100644 lib/protobuf/conformance/failure_list_js.txt delete mode 100644 lib/protobuf/conformance/failure_list_objc.txt delete mode 100644 lib/protobuf/conformance/failure_list_php.txt delete mode 100644 lib/protobuf/conformance/failure_list_php_c.txt delete mode 100644 lib/protobuf/conformance/failure_list_php_zts_c.txt delete mode 100644 lib/protobuf/conformance/failure_list_python-post26.txt delete mode 100644 lib/protobuf/conformance/failure_list_python.txt delete mode 100644 lib/protobuf/conformance/failure_list_python_cpp.txt delete mode 100644 lib/protobuf/conformance/failure_list_ruby.txt delete mode 100644 lib/protobuf/conformance/failure_list_ruby_mac.txt delete mode 100644 lib/protobuf/conformance/text_format_conformance_suite.cc delete mode 100644 lib/protobuf/conformance/text_format_conformance_suite.h delete mode 100644 lib/protobuf/conformance/text_format_failure_list_csharp.txt delete mode 100755 lib/protobuf/conformance/text_format_failure_list_java.txt delete mode 100644 lib/protobuf/conformance/text_format_failure_list_php.txt delete mode 100644 lib/protobuf/conformance/text_format_failure_list_python.txt delete mode 100644 lib/protobuf/conformance/text_format_failure_list_ruby.txt delete mode 100644 lib/protobuf/conformance/third_party/jsoncpp/json.h delete mode 100644 lib/protobuf/conformance/third_party/jsoncpp/jsoncpp.cpp delete mode 100755 lib/protobuf/conformance/update_failure_list.py delete mode 100644 lib/protobuf/csharp/.gitignore delete mode 100644 lib/protobuf/csharp/CHANGES.txt delete mode 100644 lib/protobuf/csharp/Google.Protobuf.Tools.nuspec delete mode 100644 lib/protobuf/csharp/Google.Protobuf.Tools.targets delete mode 100644 lib/protobuf/csharp/README.md delete mode 100644 lib/protobuf/csharp/build_packages.bat delete mode 100755 lib/protobuf/csharp/build_tools.sh delete mode 100644 lib/protobuf/csharp/buildall.bat delete mode 100755 lib/protobuf/csharp/buildall.sh delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/csharp/protos/unittest_issues.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/map_unittest_proto3.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_proto3.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_public_proto3.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_proto3.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_well_known_types.proto delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/ByteStringTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedOutputStreamTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/MapFieldTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/DeprecatedMemberTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/EqualityTester.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/FieldCodecTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/GeneratedMessageTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/IssuesTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonParserTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonTokenizerTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Program.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleEnum.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleMessages.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestCornerCases.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs delete mode 100644 lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs delete mode 100755 lib/protobuf/csharp/compatibility_tests/v3.0.0/test.sh delete mode 100755 lib/protobuf/csharp/generate_protos.sh delete mode 100644 lib/protobuf/csharp/install_dotnet_sdk.ps1 delete mode 100644 lib/protobuf/csharp/keys/Google.Protobuf.public.snk delete mode 100644 lib/protobuf/csharp/keys/Google.Protobuf.snk delete mode 100644 lib/protobuf/csharp/keys/README.md delete mode 100644 lib/protobuf/csharp/protos/README.md delete mode 100644 lib/protobuf/csharp/protos/map_unittest_proto3.proto delete mode 100644 lib/protobuf/csharp/protos/unittest_custom_options_proto3.proto delete mode 100644 lib/protobuf/csharp/protos/unittest_import_proto3.proto delete mode 100644 lib/protobuf/csharp/protos/unittest_import_public_proto3.proto delete mode 100644 lib/protobuf/csharp/protos/unittest_issues.proto delete mode 100644 lib/protobuf/csharp/protos/unittest_proto3.proto delete mode 100644 lib/protobuf/csharp/src/AddressBook/AddPerson.cs delete mode 100644 lib/protobuf/csharp/src/AddressBook/AddressBook.csproj delete mode 100644 lib/protobuf/csharp/src/AddressBook/Addressbook.cs delete mode 100644 lib/protobuf/csharp/src/AddressBook/ListPeople.cs delete mode 100644 lib/protobuf/csharp/src/AddressBook/Program.cs delete mode 100644 lib/protobuf/csharp/src/AddressBook/SampleUsage.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/BenchmarkMessage1Proto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Benchmarks.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Google.Protobuf.Benchmarks.csproj delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Program.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationBenchmark.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationConfig.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Conformance/Conformance.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Conformance/Google.Protobuf.Conformance.csproj delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Conformance/Program.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Google.Protobuf.JsonDump.csproj delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Program.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/ByteStringTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/CodedOutputStreamTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/ProtobufEqualityComparersTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/StreamExtensionsTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/DeprecatedMemberTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/EqualityTester.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/FieldCodecTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/FieldMaskTreeTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/IssuesTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/JsonParserTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/JsonTokenizerTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/CustomOptionsTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorDeclarationTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/SampleEnum.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/SampleMessages.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/SampleNaNs.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestCornerCases.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/UnknownFieldSetTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.Test/testprotos.pb delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf.sln delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ByteArray.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ByteString.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/CodedInputStream.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.ComputeSize.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Collections/Lists.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Collections/MapField.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Collections/ProtobufEqualityComparers.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Collections/ReadOnlyDictionary.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Collections/RepeatedField.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Compatibility/MethodInfoExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Compatibility/PropertyInfoExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Compatibility/StreamExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Compatibility/TypeExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Extension.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ExtensionRegistry.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ExtensionSet.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ExtensionValue.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/FieldCodec.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/FieldMaskTree.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/FrameworkPortability.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Google.Protobuf.csproj delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ICustomDiagnosticMessage.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/IDeepCloneable.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/IExtendableMessage.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/IMessage.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/InvalidJsonException.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/InvalidProtocolBufferException.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/JsonFormatter.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/JsonParser.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/JsonToken.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/JsonTokenizer.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/LimitedInputStream.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/MessageExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/MessageParser.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ObjectIntPair.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Properties/AssemblyInfo.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/ProtoPreconditions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/CustomOptions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/Descriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorBase.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorDeclaration.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorPool.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorUtil.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorValidationException.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldAccessorBase.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldType.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/GeneratedClrTypeInfo.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/IDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/MapFieldAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/SingleFieldAccessor.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/Reflection/TypeRegistry.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/UnknownField.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/UnknownFieldSet.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/AnyPartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/DurationPartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMaskPartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimeExtensions.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimestampPartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/ValuePartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/WrappersPartial.cs delete mode 100644 lib/protobuf/csharp/src/Google.Protobuf/WireFormat.cs delete mode 100644 lib/protobuf/docs/options.md delete mode 100644 lib/protobuf/docs/performance.md delete mode 100644 lib/protobuf/docs/third_party.md delete mode 100644 lib/protobuf/editors/README.txt delete mode 100644 lib/protobuf/editors/proto.vim delete mode 100644 lib/protobuf/editors/protobuf-mode.el delete mode 100644 lib/protobuf/examples/AddPerson.java delete mode 100644 lib/protobuf/examples/BUILD delete mode 100644 lib/protobuf/examples/CMakeLists.txt delete mode 100644 lib/protobuf/examples/ListPeople.java delete mode 100644 lib/protobuf/examples/Makefile delete mode 100755 lib/protobuf/examples/README.md delete mode 100644 lib/protobuf/examples/WORKSPACE delete mode 100644 lib/protobuf/examples/add_person.cc delete mode 100644 lib/protobuf/examples/add_person.dart delete mode 100644 lib/protobuf/examples/add_person.go delete mode 100755 lib/protobuf/examples/add_person.py delete mode 100644 lib/protobuf/examples/add_person_test.go delete mode 100644 lib/protobuf/examples/addressbook.proto delete mode 100644 lib/protobuf/examples/list_people.cc delete mode 100644 lib/protobuf/examples/list_people.dart delete mode 100644 lib/protobuf/examples/list_people.go delete mode 100755 lib/protobuf/examples/list_people.py delete mode 100644 lib/protobuf/examples/list_people_test.go delete mode 100644 lib/protobuf/examples/pubspec.yaml delete mode 120000 lib/protobuf/examples/third_party/zlib.BUILD delete mode 100755 lib/protobuf/generate_changelog.py delete mode 100755 lib/protobuf/generate_descriptor_proto.sh delete mode 100644 lib/protobuf/global.json delete mode 100644 lib/protobuf/java/README.md delete mode 100644 lib/protobuf/java/bom/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/README.md delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/deps/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/multiple_files_test.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/nested_builders_test.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/nested_extension.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/nested_extension_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/non_nested_extension.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/non_nested_extension_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/com/google/protobuf/test_bad_identifiers.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/descriptor.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_custom_options.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_embed_optimize_for.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_empty.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_enormous_descriptor.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_import.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_import_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_import_public.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_import_public_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_lite_imports_nonlite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_mset.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_no_generic_services.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/more_protos/src/proto/google/protobuf/unittest_optimize_for.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/multiple_files_test.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/nested_builders_test.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/nested_extension.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/nested_extension_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/non_nested_extension.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/non_nested_extension_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/com/google/protobuf/test_bad_identifiers.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/descriptor.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_custom_options.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_embed_optimize_for.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_empty.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_enormous_descriptor.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import_public.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import_public_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_lite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_lite_imports_nonlite.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_mset.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_no_generic_services.proto delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_optimize_for.proto delete mode 100755 lib/protobuf/java/compatibility_tests/v2.5.0/test.sh delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/pom.xml delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/AbstractMessageTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/BoundedByteStringTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/ByteStringTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/CodedInputStreamTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/CodedOutputStreamTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/DeprecatedFieldTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/DescriptorsTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/DynamicMessageTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/ForceFieldBuildersPreRun.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/GeneratedMessageTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/LazyStringArrayListTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/LazyStringEndToEndTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/LiteralByteStringTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/MessageTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/NestedBuildersTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/ParserTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/RopeByteStringSubstringTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/RopeByteStringTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/ServiceTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/TestBadIdentifiers.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/TestUtil.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/TextFormatTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/UnknownFieldSetTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/UnmodifiableLazyStringListTest.java delete mode 100644 lib/protobuf/java/compatibility_tests/v2.5.0/tests/src/main/java/com/google/protobuf/test/WireFormatTest.java delete mode 100644 lib/protobuf/java/core/generate-sources-build.xml delete mode 100644 lib/protobuf/java/core/generate-test-sources-build.xml delete mode 100644 lib/protobuf/java/core/pom.xml delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/AbstractMessage.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/AbstractParser.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Android.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ArrayDecoders.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/BinaryReader.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/BinaryWriter.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/BlockingRpcChannel.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/BlockingService.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/BooleanArrayList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/BufferAllocator.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ByteOutput.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ByteString.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/CodedInputStream.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/CodedOutputStream.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/DescriptorMessageInfoFactory.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Descriptors.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/DiscardUnknownFieldsParser.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/DoubleArrayList.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/DynamicMessage.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExperimentalApi.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Extension.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionSchema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionSchemaFull.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/FieldInfo.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/FieldSet.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/FieldType.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/FloatArrayList.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/GeneratedMessage.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/IntArrayList.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Internal.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/JavaType.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/LazyField.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/LazyFieldLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/LazyStringList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ListFieldSchema.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/LongArrayList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapEntry.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapEntryLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapField.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapFieldLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapFieldSchema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapFieldSchemaFull.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Message.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageInfo.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageLite.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageLiteToString.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageOrBuilder.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageReflection.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageSchema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/MessageSetSchema.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/MutabilityOracle.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/NewInstanceSchemaFull.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/NioByteString.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/OneofInfo.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Parser.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ProtoSyntax.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/Protobuf.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/ProtobufLists.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ProtocolMessageEnum.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ProtocolStringList.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/RawMessageInfo.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/Reader.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RopeByteString.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RpcCallback.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RpcChannel.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RpcController.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/RpcUtil.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/Schema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/SchemaFactory.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/SchemaUtil.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Service.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/ServiceException.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/SmallSortedMap.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/TextFormat.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/TextFormatParseInfoTree.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/TextFormatParseLocation.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnknownFieldSetSchema.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnsafeByteOperations.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/UnsafeUtil.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/Utf8.java delete mode 100644 lib/protobuf/java/core/src/main/java/com/google/protobuf/WireFormat.java delete mode 100755 lib/protobuf/java/core/src/main/java/com/google/protobuf/Writer.java delete mode 100644 lib/protobuf/java/core/src/stubs/sun/misc/Unsafe.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractMessageTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractProto2LiteSchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractProto2SchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractProto3LiteSchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractProto3SchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/AbstractSchemaTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/AnyTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/ArrayDecodersTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/BinaryProtocolTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/BooleanArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/BoundedByteStringTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ByteBufferWriterTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ByteStringTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/CachedFieldSizeTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/CheckUtf8Test.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/CodedAdapterTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/CodedOutputStreamTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DecodeUtf8Test.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DeprecatedFieldTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DescriptorsTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DiscardUnknownFieldsTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DoubleArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/DynamicMessageTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/EnumTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/ExperimentalMessageFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/ExperimentalSerializationUtil.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/ExperimentalTestDataProvider.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/FieldPresenceTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/FloatArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/GeneratedMessageTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/IntArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LazyFieldLiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LazyFieldTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LazyStringArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LiteralByteStringTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/LongArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/MapForProto2LiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/MapForProto2Test.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/MapLiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/MapTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/MessageTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/NestedBuildersTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/NioByteStringTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/PackedFieldTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/ParserLiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ParserTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2ExtensionLookupSchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2LiteSchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2MessageFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2MessageInfoFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2MessageLiteFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2SchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto2UnknownEnumValueTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3LiteSchemaTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3MessageFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3MessageInfoFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3MessageLiteFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3MessageLiteInfoFactory.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Proto3SchemaTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ProtobufArrayListTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/RepeatedFieldBuilderV3Test.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/RopeByteStringTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/ServiceTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/SingleFieldBuilderV3Test.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/SmallSortedMapTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestBadIdentifiers.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestBadIdentifiersLite.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestSchemas.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestSchemasLite.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestUtil.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TestUtilLite.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TextFormatParseInfoTreeTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TextFormatParseLocationTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/TextFormatTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/UnknownEnumValueTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/UnknownFieldSetTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Utf8Test.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/Utf8Utils.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/WellKnownTypesTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/WireFormatLiteTest.java delete mode 100644 lib/protobuf/java/core/src/test/java/com/google/protobuf/WireFormatTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/WrappersLiteOfMethodTest.java delete mode 100755 lib/protobuf/java/core/src/test/java/com/google/protobuf/WrappersOfMethodTest.java delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/any_test.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/cached_field_size_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/deprecated_file.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/field_presence_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/lazy_fields_lite.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/lite_equals_and_hash.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/map_for_proto2_lite_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/map_for_proto2_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/map_initialization_order_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/map_lite_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/map_test.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/message_lite_extension_util_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/multiple_files_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/nested_builders_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/nested_extension.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/nested_extension_lite.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/non_nested_extension.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/non_nested_extension_lite.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/outer_class_name_test.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/outer_class_name_test2.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/outer_class_name_test3.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/packed_field_test.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/proto2_message.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/proto2_message_lite.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/proto2_unknown_enum_values.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/proto3_message.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/proto3_message_lite.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/test_bad_identifiers.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/test_check_utf8.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/test_check_utf8_size.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/test_custom_options.proto delete mode 100644 lib/protobuf/java/core/src/test/proto/com/google/protobuf/test_extra_interfaces.proto delete mode 100755 lib/protobuf/java/core/src/test/proto/com/google/protobuf/wrappers_test.proto delete mode 100644 lib/protobuf/java/lite.md delete mode 100644 lib/protobuf/java/lite/generate-sources-build.xml delete mode 100644 lib/protobuf/java/lite/generate-test-sources-build.xml delete mode 100644 lib/protobuf/java/lite/lite.awk delete mode 100644 lib/protobuf/java/lite/pom.xml delete mode 100644 lib/protobuf/java/lite/process-lite-sources-build.xml delete mode 100755 lib/protobuf/java/lite/src/test/java/com/google/protobuf/LiteTest.java delete mode 100755 lib/protobuf/java/lite/src/test/java/com/google/protobuf/Proto2MessageLiteInfoFactory.java delete mode 100644 lib/protobuf/java/pom.xml delete mode 100644 lib/protobuf/java/util/pom.xml delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/Durations.java delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/FieldMaskTree.java delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/FieldMaskUtil.java delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/JsonFormat.java delete mode 100755 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/Structs.java delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/TimeUtil.java delete mode 100644 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/Timestamps.java delete mode 100755 lib/protobuf/java/util/src/main/java/com/google/protobuf/util/Values.java delete mode 100644 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/FieldMaskTreeTest.java delete mode 100644 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/FieldMaskUtilTest.java delete mode 100644 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java delete mode 100755 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/StructsTest.java delete mode 100644 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/TimeUtilTest.java delete mode 100755 lib/protobuf/java/util/src/test/java/com/google/protobuf/util/ValuesTest.java delete mode 100644 lib/protobuf/java/util/src/test/proto/com/google/protobuf/util/json_test.proto delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/ByteStringMicro.java delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/CodedInputStreamMicro.java delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/CodedOutputStreamMicro.java delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/InvalidProtocolBufferMicroException.java delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/MessageMicro.java delete mode 100644 lib/protobuf/javamicro/src/main/java/com/google/protobuf/micro/WireFormatMicro.java delete mode 100644 lib/protobuf/javanano/README.md delete mode 100644 lib/protobuf/javanano/pom.xml delete mode 100644 lib/protobuf/javanano/src/device/main/java/com/google/protobuf/nano/android/ParcelableExtendableMessageNano.java delete mode 100644 lib/protobuf/javanano/src/device/main/java/com/google/protobuf/nano/android/ParcelableMessageNano.java delete mode 100644 lib/protobuf/javanano/src/device/main/java/com/google/protobuf/nano/android/ParcelableMessageNanoCreator.java delete mode 100644 lib/protobuf/javanano/src/device/test/AndroidManifest.xml delete mode 100644 lib/protobuf/javanano/src/device/test/java/com/google/protobuf/nano/NanoAndroidTest.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/CodedInputByteBufferNano.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/CodedOutputByteBufferNano.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/ExtendableMessageNano.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/Extension.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/FieldArray.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/FieldData.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/InternalNano.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/InvalidProtocolBufferNanoException.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/MapFactories.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/MessageNano.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/MessageNanoPrinter.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/UnknownFieldData.java delete mode 100644 lib/protobuf/javanano/src/main/java/com/google/protobuf/nano/WireFormatNano.java delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/NanoTest.java delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/map_test.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_accessors_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_enum_class_multiple_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_enum_class_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_enum_validity_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_extension_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_extension_packed_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_extension_repeated_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_extension_singular_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_has_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_multiple_nameclash_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_multiple_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_recursive_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_reference_types_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_repeated_merge_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_repeated_packables_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_simple_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_single_nano.proto delete mode 100644 lib/protobuf/javanano/src/test/java/com/google/protobuf/nano/unittest_stringutf8_nano.proto delete mode 100644 lib/protobuf/js/README.md delete mode 100644 lib/protobuf/js/binary/arith.js delete mode 100644 lib/protobuf/js/binary/arith_test.js delete mode 100644 lib/protobuf/js/binary/constants.js delete mode 100644 lib/protobuf/js/binary/decoder.js delete mode 100644 lib/protobuf/js/binary/decoder_test.js delete mode 100644 lib/protobuf/js/binary/encoder.js delete mode 100644 lib/protobuf/js/binary/message_test.js delete mode 100644 lib/protobuf/js/binary/proto_test.js delete mode 100644 lib/protobuf/js/binary/reader.js delete mode 100644 lib/protobuf/js/binary/reader_test.js delete mode 100644 lib/protobuf/js/binary/utils.js delete mode 100644 lib/protobuf/js/binary/utils_test.js delete mode 100644 lib/protobuf/js/binary/writer.js delete mode 100644 lib/protobuf/js/binary/writer_test.js delete mode 100644 lib/protobuf/js/commonjs/export.js delete mode 100644 lib/protobuf/js/commonjs/export_asserts.js delete mode 100644 lib/protobuf/js/commonjs/export_testdeps.js delete mode 100644 lib/protobuf/js/commonjs/import_test.js delete mode 100644 lib/protobuf/js/commonjs/jasmine.json delete mode 100644 lib/protobuf/js/commonjs/rewrite_tests_for_commonjs.js delete mode 100644 lib/protobuf/js/commonjs/strict_test.js delete mode 100644 lib/protobuf/js/commonjs/test6/test6.proto delete mode 100644 lib/protobuf/js/commonjs/test7/test7.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/arith_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/decoder_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/proto_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/reader_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/utils_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/binary/writer_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/export_asserts.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/export_testdeps.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/import_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/jasmine.json delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/rewrite_tests_for_commonjs.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/test6/test6.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/commonjs/test7/test7.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/data.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/debug_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/jasmine1.json delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/jasmine2.json delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/jasmine3.json delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/message_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/proto3_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/proto3_test.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/test.proto delete mode 100755 lib/protobuf/js/compatibility_tests/v3.0.0/test.sh delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/test2.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/test3.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/test4.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/test5.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/testbinary.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.0.0/testempty.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/arith_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/decoder_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/proto_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/reader_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/utils_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/binary/writer_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/commonjs/test6/test6.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/commonjs/test7/test7.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/data.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/debug_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/maps_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/message_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/proto3_test.js delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/proto3_test.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/test.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/test2.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/test3.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/test4.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/test5.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/testbinary.proto delete mode 100644 lib/protobuf/js/compatibility_tests/v3.1.0/testempty.proto delete mode 100644 lib/protobuf/js/data.proto delete mode 100644 lib/protobuf/js/debug.js delete mode 100644 lib/protobuf/js/debug_test.js delete mode 100644 lib/protobuf/js/gulpfile.js delete mode 100644 lib/protobuf/js/jasmine.json delete mode 100644 lib/protobuf/js/map.js delete mode 100755 lib/protobuf/js/maps_test.js delete mode 100644 lib/protobuf/js/message.js delete mode 100644 lib/protobuf/js/message_test.js delete mode 100644 lib/protobuf/js/node_loader.js delete mode 100644 lib/protobuf/js/package.json delete mode 100644 lib/protobuf/js/proto3_test.js delete mode 100644 lib/protobuf/js/proto3_test.proto delete mode 100644 lib/protobuf/js/test.proto delete mode 100644 lib/protobuf/js/test10.proto delete mode 100644 lib/protobuf/js/test11.proto delete mode 100644 lib/protobuf/js/test12.proto delete mode 100644 lib/protobuf/js/test13.proto delete mode 100644 lib/protobuf/js/test14.proto delete mode 100644 lib/protobuf/js/test15.proto delete mode 100644 lib/protobuf/js/test2.proto delete mode 100644 lib/protobuf/js/test3.proto delete mode 100644 lib/protobuf/js/test4.proto delete mode 100644 lib/protobuf/js/test5.proto delete mode 100644 lib/protobuf/js/test8.proto delete mode 100644 lib/protobuf/js/test9.proto delete mode 100644 lib/protobuf/js/test_bootstrap.js delete mode 100644 lib/protobuf/js/testbinary.proto delete mode 100644 lib/protobuf/js/testempty.proto delete mode 100644 lib/protobuf/kokoro/README.md delete mode 100644 lib/protobuf/kokoro/linux/32-bit/Dockerfile delete mode 100755 lib/protobuf/kokoro/linux/32-bit/build.sh delete mode 100644 lib/protobuf/kokoro/linux/32-bit/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/32-bit/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/linux/64-bit/Dockerfile delete mode 100755 lib/protobuf/kokoro/linux/bazel/build.sh delete mode 100644 lib/protobuf/kokoro/linux/bazel/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/bazel/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/linux/benchmark/build.sh delete mode 100755 lib/protobuf/kokoro/linux/benchmark/continuous.cfg delete mode 100755 lib/protobuf/kokoro/linux/benchmark/run.sh delete mode 100755 lib/protobuf/kokoro/linux/build_and_run_docker.sh delete mode 100755 lib/protobuf/kokoro/linux/cpp_distcheck/build.sh delete mode 100644 lib/protobuf/kokoro/linux/cpp_distcheck/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/cpp_distcheck/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/cpp_tcmalloc/build.sh delete mode 100644 lib/protobuf/kokoro/linux/cpp_tcmalloc/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/cpp_tcmalloc/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/csharp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/csharp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/csharp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/dist_install/build.sh delete mode 100644 lib/protobuf/kokoro/linux/dist_install/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/dist_install/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/dockerfile/push_testing_images.sh delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/release/ruby_rake_compiler/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/cpp_tcmalloc/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/csharp/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/javascript/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/php/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/php_32bit/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/python_jessie/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/python_stretch/Dockerfile delete mode 100644 lib/protobuf/kokoro/linux/dockerfile/test/ruby/Dockerfile delete mode 100755 lib/protobuf/kokoro/linux/golang/build.sh delete mode 100644 lib/protobuf/kokoro/linux/golang/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/golang/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/java_compatibility/build.sh delete mode 100644 lib/protobuf/kokoro/linux/java_compatibility/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/java_compatibility/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/java_jdk7/build.sh delete mode 100644 lib/protobuf/kokoro/linux/java_jdk7/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/java_jdk7/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/java_oracle7/build.sh delete mode 100644 lib/protobuf/kokoro/linux/java_oracle7/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/java_oracle7/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/javascript/build.sh delete mode 100644 lib/protobuf/kokoro/linux/javascript/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/javascript/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/linux/make_test_output.py delete mode 100755 lib/protobuf/kokoro/linux/php_all/build.sh delete mode 100644 lib/protobuf/kokoro/linux/php_all/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/php_all/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/pull_request_in_docker.sh delete mode 100755 lib/protobuf/kokoro/linux/python/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python27/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python27/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python27/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python27_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python27_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python27_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python33/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python33/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python33/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python33_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python33_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python33_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python34/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python34/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python34/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python34_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python34_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python34_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python35/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python35/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python35/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python35_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python35_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python35_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python36/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python36/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python36/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python36_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python36_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python36_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python37/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python37/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python37/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python37_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python37_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python37_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python_compatibility/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python_compatibility/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python_compatibility/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/python_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/linux/python_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/python_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/ruby23/build.sh delete mode 100644 lib/protobuf/kokoro/linux/ruby23/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/ruby23/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/ruby24/build.sh delete mode 100644 lib/protobuf/kokoro/linux/ruby24/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/ruby24/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/ruby25/build.sh delete mode 100644 lib/protobuf/kokoro/linux/ruby25/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/ruby25/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/linux/ruby26/build.sh delete mode 100644 lib/protobuf/kokoro/linux/ruby26/continuous.cfg delete mode 100644 lib/protobuf/kokoro/linux/ruby26/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/cpp/build.sh delete mode 100644 lib/protobuf/kokoro/macos/cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/cpp_distcheck/build.sh delete mode 100644 lib/protobuf/kokoro/macos/cpp_distcheck/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/cpp_distcheck/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/javascript/build.sh delete mode 100644 lib/protobuf/kokoro/macos/javascript/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/javascript/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/objectivec_cocoapods_integration/build.sh delete mode 100644 lib/protobuf/kokoro/macos/objectivec_cocoapods_integration/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/objectivec_cocoapods_integration/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/objectivec_ios_debug/build.sh delete mode 100644 lib/protobuf/kokoro/macos/objectivec_ios_debug/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/objectivec_ios_debug/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/objectivec_ios_release/build.sh delete mode 100644 lib/protobuf/kokoro/macos/objectivec_ios_release/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/objectivec_ios_release/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/objectivec_osx/build.sh delete mode 100644 lib/protobuf/kokoro/macos/objectivec_osx/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/objectivec_osx/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/php5.6_mac/build.sh delete mode 100644 lib/protobuf/kokoro/macos/php5.6_mac/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/php5.6_mac/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/php7.0_mac/build.sh delete mode 100644 lib/protobuf/kokoro/macos/php7.0_mac/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/php7.0_mac/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/prepare_build_macos_rc delete mode 100755 lib/protobuf/kokoro/macos/python/build.sh delete mode 100644 lib/protobuf/kokoro/macos/python/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/python/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/python_cpp/build.sh delete mode 100644 lib/protobuf/kokoro/macos/python_cpp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/python_cpp/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/ruby23/build.sh delete mode 100644 lib/protobuf/kokoro/macos/ruby23/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/ruby23/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/ruby24/build.sh delete mode 100644 lib/protobuf/kokoro/macos/ruby24/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/ruby24/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/ruby25/build.sh delete mode 100644 lib/protobuf/kokoro/macos/ruby25/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/ruby25/presubmit.cfg delete mode 100755 lib/protobuf/kokoro/macos/ruby26/build.sh delete mode 100644 lib/protobuf/kokoro/macos/ruby26/continuous.cfg delete mode 100644 lib/protobuf/kokoro/macos/ruby26/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/collect_all_artifacts.cfg delete mode 100755 lib/protobuf/kokoro/release/collect_all_artifacts.sh delete mode 100644 lib/protobuf/kokoro/release/csharp/windows/build_nuget.bat delete mode 100644 lib/protobuf/kokoro/release/csharp/windows/continuous.cfg delete mode 100644 lib/protobuf/kokoro/release/csharp/windows/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/csharp/windows/release.cfg delete mode 100755 lib/protobuf/kokoro/release/protoc/linux/build.sh delete mode 100644 lib/protobuf/kokoro/release/protoc/linux/release.cfg delete mode 100644 lib/protobuf/kokoro/release/protoc/macos/build.sh delete mode 100644 lib/protobuf/kokoro/release/protoc/macos/release.cfg delete mode 100644 lib/protobuf/kokoro/release/protoc/windows/build.bat delete mode 100644 lib/protobuf/kokoro/release/protoc/windows/release.cfg delete mode 100755 lib/protobuf/kokoro/release/python/linux/build_artifacts.sh delete mode 100644 lib/protobuf/kokoro/release/python/linux/config.sh delete mode 100644 lib/protobuf/kokoro/release/python/linux/continuous.cfg delete mode 100644 lib/protobuf/kokoro/release/python/linux/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/python/linux/release.cfg delete mode 100755 lib/protobuf/kokoro/release/python/macos/build_artifacts.sh delete mode 100644 lib/protobuf/kokoro/release/python/macos/config.sh delete mode 100644 lib/protobuf/kokoro/release/python/macos/continuous.cfg delete mode 100644 lib/protobuf/kokoro/release/python/macos/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/python/macos/release.cfg delete mode 100644 lib/protobuf/kokoro/release/python/windows/build_artifacts.bat delete mode 100644 lib/protobuf/kokoro/release/python/windows/build_single_artifact.bat delete mode 100644 lib/protobuf/kokoro/release/python/windows/continuous.cfg delete mode 100644 lib/protobuf/kokoro/release/python/windows/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/python/windows/release.cfg delete mode 100755 lib/protobuf/kokoro/release/ruby/linux/build_artifacts.sh delete mode 100644 lib/protobuf/kokoro/release/ruby/linux/continuous.cfg delete mode 100755 lib/protobuf/kokoro/release/ruby/linux/prepare_build.sh delete mode 100644 lib/protobuf/kokoro/release/ruby/linux/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/ruby/linux/release.cfg delete mode 100755 lib/protobuf/kokoro/release/ruby/linux/ruby/ruby_build.sh delete mode 100755 lib/protobuf/kokoro/release/ruby/linux/ruby/ruby_build_environment.sh delete mode 100755 lib/protobuf/kokoro/release/ruby/macos/build_artifacts.sh delete mode 100644 lib/protobuf/kokoro/release/ruby/macos/continuous.cfg delete mode 100644 lib/protobuf/kokoro/release/ruby/macos/presubmit.cfg delete mode 100644 lib/protobuf/kokoro/release/ruby/macos/release.cfg delete mode 100755 lib/protobuf/kokoro/release/ruby/macos/ruby/ruby_build.sh delete mode 100755 lib/protobuf/kokoro/release/ruby/macos/ruby/ruby_build_environment.sh delete mode 100644 lib/protobuf/kokoro/windows/csharp/build.bat delete mode 100644 lib/protobuf/kokoro/windows/csharp/continuous.cfg delete mode 100644 lib/protobuf/kokoro/windows/csharp/presubmit.cfg delete mode 100644 lib/protobuf/m4/ac_system_extensions.m4 delete mode 100644 lib/protobuf/m4/acx_check_suncc.m4 delete mode 100644 lib/protobuf/m4/ax_cxx_compile_stdcxx.m4 delete mode 100644 lib/protobuf/m4/ax_prog_cc_for_build.m4 delete mode 100644 lib/protobuf/m4/ax_prog_cxx_for_build.m4 delete mode 100644 lib/protobuf/m4/ax_pthread.m4 delete mode 100644 lib/protobuf/m4/stl_hash.m4 delete mode 100644 lib/protobuf/objectivec/.gitignore delete mode 100755 lib/protobuf/objectivec/DevTools/check_version_stamps.sh delete mode 100755 lib/protobuf/objectivec/DevTools/compile_testing_protos.sh delete mode 100755 lib/protobuf/objectivec/DevTools/full_mac_build.sh delete mode 100755 lib/protobuf/objectivec/DevTools/pddm.py delete mode 100755 lib/protobuf/objectivec/DevTools/pddm_tests.py delete mode 100644 lib/protobuf/objectivec/GPBArray.h delete mode 100644 lib/protobuf/objectivec/GPBArray.m delete mode 100644 lib/protobuf/objectivec/GPBArray_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBBootstrap.h delete mode 100644 lib/protobuf/objectivec/GPBCodedInputStream.h delete mode 100644 lib/protobuf/objectivec/GPBCodedInputStream.m delete mode 100644 lib/protobuf/objectivec/GPBCodedInputStream_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBCodedOutputStream.h delete mode 100644 lib/protobuf/objectivec/GPBCodedOutputStream.m delete mode 100644 lib/protobuf/objectivec/GPBCodedOutputStream_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBDescriptor.h delete mode 100644 lib/protobuf/objectivec/GPBDescriptor.m delete mode 100644 lib/protobuf/objectivec/GPBDescriptor_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBDictionary.h delete mode 100644 lib/protobuf/objectivec/GPBDictionary.m delete mode 100644 lib/protobuf/objectivec/GPBDictionary_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBExtensionInternals.h delete mode 100644 lib/protobuf/objectivec/GPBExtensionInternals.m delete mode 100644 lib/protobuf/objectivec/GPBExtensionRegistry.h delete mode 100644 lib/protobuf/objectivec/GPBExtensionRegistry.m delete mode 100644 lib/protobuf/objectivec/GPBMessage.h delete mode 100644 lib/protobuf/objectivec/GPBMessage.m delete mode 100644 lib/protobuf/objectivec/GPBMessage_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBProtocolBuffers.h delete mode 100644 lib/protobuf/objectivec/GPBProtocolBuffers.m delete mode 100644 lib/protobuf/objectivec/GPBProtocolBuffers_RuntimeSupport.h delete mode 100644 lib/protobuf/objectivec/GPBRootObject.h delete mode 100644 lib/protobuf/objectivec/GPBRootObject.m delete mode 100644 lib/protobuf/objectivec/GPBRootObject_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBRuntimeTypes.h delete mode 100644 lib/protobuf/objectivec/GPBUnknownField.h delete mode 100644 lib/protobuf/objectivec/GPBUnknownField.m delete mode 100644 lib/protobuf/objectivec/GPBUnknownFieldSet.h delete mode 100644 lib/protobuf/objectivec/GPBUnknownFieldSet.m delete mode 100644 lib/protobuf/objectivec/GPBUnknownFieldSet_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBUnknownField_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBUtilities.h delete mode 100644 lib/protobuf/objectivec/GPBUtilities.m delete mode 100644 lib/protobuf/objectivec/GPBUtilities_PackagePrivate.h delete mode 100644 lib/protobuf/objectivec/GPBWellKnownTypes.h delete mode 100644 lib/protobuf/objectivec/GPBWellKnownTypes.m delete mode 100644 lib/protobuf/objectivec/GPBWireFormat.h delete mode 100644 lib/protobuf/objectivec/GPBWireFormat.m delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme delete mode 100644 lib/protobuf/objectivec/ProtocolBuffers_tvOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme delete mode 100644 lib/protobuf/objectivec/README.md delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/project.pbxproj delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/xcshareddata/xcschemes/OSXCocoaPodsTester.xcscheme delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/AppDelegate.h delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/AppDelegate.m delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Base.lproj/MainMenu.xib delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Info.plist delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/main.m delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/Podfile-framework delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/OSXCocoaPodsTester/Podfile-static delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/README.md delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/Podfile-framework delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/Podfile-static delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/project.pbxproj delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/xcshareddata/xcschemes/iOSCocoaPodsTester.xcscheme delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/AppDelegate.h delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/AppDelegate.m delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Assets.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Base.lproj/LaunchScreen.storyboard delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Base.lproj/Main.storyboard delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Info.plist delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/ViewController.h delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/ViewController.m delete mode 100644 lib/protobuf/objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/main.m delete mode 100755 lib/protobuf/objectivec/Tests/CocoaPods/run_tests.sh delete mode 100644 lib/protobuf/objectivec/Tests/GPBARCUnittestProtos.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBArrayTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCodedInputStreamTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCodedOuputStreamTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest01.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest02.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest03.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest04.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest05.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest06.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest07.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest08.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest09.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest10.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest11.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest12.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest13.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest14.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest15.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest16.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest17.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest18.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest19.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest20.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest21.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest22.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest23.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest24.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBCompileTest25.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBConcurrencyTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDescriptorTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+Bool.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+Int32.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+Int64.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+String.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+UInt32.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests+UInt64.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBDictionaryTests.pddm delete mode 100644 lib/protobuf/objectivec/Tests/GPBExtensionRegistryTest.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBMessageTests+Merge.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBMessageTests+Runtime.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBMessageTests+Serialization.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBMessageTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBObjectiveCPlusPlusTest.mm delete mode 100644 lib/protobuf/objectivec/Tests/GPBPerfTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBSwiftTests.swift delete mode 100644 lib/protobuf/objectivec/Tests/GPBTestUtilities.h delete mode 100644 lib/protobuf/objectivec/Tests/GPBTestUtilities.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBUnittestProtos.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBUnittestProtos2.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBUnknownFieldSetTest.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBUtilitiesTests.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBWellKnownTypesTest.m delete mode 100644 lib/protobuf/objectivec/Tests/GPBWireFormatTests.m delete mode 100644 lib/protobuf/objectivec/Tests/UnitTests-Bridging-Header.h delete mode 100644 lib/protobuf/objectivec/Tests/UnitTests-Info.plist delete mode 100644 lib/protobuf/objectivec/Tests/golden_message delete mode 100644 lib/protobuf/objectivec/Tests/golden_packed_fields_message delete mode 100644 lib/protobuf/objectivec/Tests/text_format_extensions_unittest_data.txt delete mode 100644 lib/protobuf/objectivec/Tests/text_format_map_unittest_data.txt delete mode 100644 lib/protobuf/objectivec/Tests/text_format_unittest_data.txt delete mode 100644 lib/protobuf/objectivec/Tests/unittest_cycle.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_deprecated.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_deprecated_file.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_a.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_b.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_c.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_d.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_e.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_f.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_extension_chain_g.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_objc.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_objc_options.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_objc_startup.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_runtime_proto2.proto delete mode 100644 lib/protobuf/objectivec/Tests/unittest_runtime_proto3.proto delete mode 100755 lib/protobuf/objectivec/generate_well_known_types.sh delete mode 100644 lib/protobuf/objectivec/google/protobuf/Any.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Any.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Api.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Api.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Duration.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Duration.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Empty.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Empty.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/FieldMask.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/FieldMask.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/SourceContext.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/SourceContext.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Struct.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Struct.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Timestamp.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Timestamp.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Type.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Type.pbobjc.m delete mode 100644 lib/protobuf/objectivec/google/protobuf/Wrappers.pbobjc.h delete mode 100644 lib/protobuf/objectivec/google/protobuf/Wrappers.pbobjc.m delete mode 100644 lib/protobuf/php/README.md delete mode 100644 lib/protobuf/php/composer.json delete mode 100644 lib/protobuf/php/ext/google/protobuf/array.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/builtin_descriptors.inc delete mode 100644 lib/protobuf/php/ext/google/protobuf/config.m4 delete mode 100644 lib/protobuf/php/ext/google/protobuf/def.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/encode_decode.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/map.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/message.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/package.xml delete mode 100644 lib/protobuf/php/ext/google/protobuf/protobuf.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/protobuf.h delete mode 100644 lib/protobuf/php/ext/google/protobuf/storage.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/type_check.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/upb.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/upb.h delete mode 100644 lib/protobuf/php/ext/google/protobuf/utf8.c delete mode 100644 lib/protobuf/php/ext/google/protobuf/utf8.h delete mode 100755 lib/protobuf/php/generate_descriptor_protos.sh delete mode 100644 lib/protobuf/php/phpunit.xml delete mode 100755 lib/protobuf/php/release.sh delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Any.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Api.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Duration.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/FieldMask.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/SourceContext.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Struct.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Timestamp.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Type.php delete mode 100644 lib/protobuf/php/src/GPBMetadata/Google/Protobuf/Wrappers.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Any.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Api.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/BoolValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/BytesValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Descriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/DescriptorPool.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/DoubleValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Duration.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Enum.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/EnumDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/EnumValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/EnumValueDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Field.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Field/Cardinality.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Field/Kind.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/FieldDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/FieldMask.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Field_Cardinality.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Field_Kind.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/FloatValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/GPBEmpty.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Int32Value.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Int64Value.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/CodedInputStream.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/CodedOutputStream.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/Descriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorPool.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorProto_ExtensionRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/DescriptorProto_ReservedRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumBuilderContext.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumDescriptorProto_EnumReservedRange.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/EnumValueOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptorProto_Label.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldDescriptorProto_Type.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldOptions/CType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldOptions/JSType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldOptions_CType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FieldOptions_JSType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileDescriptorSet.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/FileOptions_OptimizeMode.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBDecodeException.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBJsonWire.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBLabel.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBUtil.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBWire.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GPBWireType.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GeneratedCodeInfo_Annotation.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/GetPublicDescriptorTrait.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/HasPublicDescriptorTrait.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MapEntry.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MapField.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MapFieldIter.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/Message.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MessageBuilderContext.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MessageOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MethodOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/MethodOptions_IdempotencyLevel.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/OneofDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/OneofField.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/OneofOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/RawInputStream.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/RepeatedField.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/RepeatedFieldIter.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/ServiceOptions.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/SourceCodeInfo.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/SourceCodeInfo_Location.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/UninterpretedOption.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Internal/UninterpretedOption_NamePart.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/ListValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Method.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Mixin.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/NullValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/OneofDescriptor.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Option.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/SourceContext.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/StringValue.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Struct.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Syntax.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Timestamp.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Type.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/UInt32Value.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/UInt64Value.php delete mode 100644 lib/protobuf/php/src/Google/Protobuf/Value.php delete mode 100644 lib/protobuf/php/src/phpdoc.dist.xml delete mode 100644 lib/protobuf/php/tests/array_test.php delete mode 100755 lib/protobuf/php/tests/autoload.php delete mode 100644 lib/protobuf/php/tests/bootstrap_phpunit.php delete mode 100755 lib/protobuf/php/tests/compatibility_test.sh delete mode 100755 lib/protobuf/php/tests/compile_extension.sh delete mode 100644 lib/protobuf/php/tests/descriptors_test.php delete mode 100644 lib/protobuf/php/tests/encode_decode_test.php delete mode 100755 lib/protobuf/php/tests/gdb_test.sh delete mode 100644 lib/protobuf/php/tests/generated_class_test.php delete mode 100644 lib/protobuf/php/tests/generated_phpdoc_test.php delete mode 100644 lib/protobuf/php/tests/generated_service_test.php delete mode 100644 lib/protobuf/php/tests/map_field_test.php delete mode 100644 lib/protobuf/php/tests/memory_leak_test.php delete mode 100644 lib/protobuf/php/tests/php_implementation_test.php delete mode 100644 lib/protobuf/php/tests/proto/empty/echo.proto delete mode 100644 lib/protobuf/php/tests/proto/test.proto delete mode 100644 lib/protobuf/php/tests/proto/test_descriptors.proto delete mode 100644 lib/protobuf/php/tests/proto/test_empty_php_namespace.proto delete mode 100644 lib/protobuf/php/tests/proto/test_import_descriptor_proto.proto delete mode 100644 lib/protobuf/php/tests/proto/test_include.proto delete mode 100644 lib/protobuf/php/tests/proto/test_no_namespace.proto delete mode 100644 lib/protobuf/php/tests/proto/test_php_namespace.proto delete mode 100644 lib/protobuf/php/tests/proto/test_prefix.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_enum_lower.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_enum_upper.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_enum_value_lower.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_enum_value_upper.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_message_lower.proto delete mode 100644 lib/protobuf/php/tests/proto/test_reserved_message_upper.proto delete mode 100644 lib/protobuf/php/tests/proto/test_service.proto delete mode 100644 lib/protobuf/php/tests/proto/test_service_namespace.proto delete mode 100644 lib/protobuf/php/tests/proto/test_wrapper_type_setters.proto delete mode 100755 lib/protobuf/php/tests/test.sh delete mode 100644 lib/protobuf/php/tests/test_base.php delete mode 100644 lib/protobuf/php/tests/test_util.php delete mode 100644 lib/protobuf/php/tests/undefined_test.php delete mode 100644 lib/protobuf/php/tests/well_known_test.php delete mode 100644 lib/protobuf/php/tests/wrapper_type_setters_test.php delete mode 100755 lib/protobuf/post_process_dist.sh delete mode 100644 lib/protobuf/protobuf-lite.pc.in delete mode 100644 lib/protobuf/protobuf.bzl delete mode 100644 lib/protobuf/protobuf.pc.in delete mode 100644 lib/protobuf/protobuf_deps.bzl delete mode 100644 lib/protobuf/protoc-artifacts/Dockerfile delete mode 100644 lib/protobuf/protoc-artifacts/README.md delete mode 100755 lib/protobuf/protoc-artifacts/build-protoc.sh delete mode 100755 lib/protobuf/protoc-artifacts/build-zip.sh delete mode 100644 lib/protobuf/protoc-artifacts/pom.xml delete mode 100755 lib/protobuf/protoc-artifacts/scl-enable-devtoolset.sh delete mode 100644 lib/protobuf/python/MANIFEST.in delete mode 100644 lib/protobuf/python/README.md delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/factory_test1.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/factory_test2.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/more_extensions.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/more_extensions_dynamic.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/more_messages.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/python/google/protobuf/internal/test_bad_identifiers.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/descriptor.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_custom_options.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_import_public.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_mset.proto delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/protos/src/proto/google/protobuf/unittest_no_generic_services.proto delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/setup.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/test.sh delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/__init__.py delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/__init__.py delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/__init__.py delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/__init__.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/descriptor_test.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/generator_test.py delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/golden_message delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/golden_packed_fields_message delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/message_test.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/service_reflection_test.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/test_util.py delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_test.py delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_unittest_data.txt delete mode 100644 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/text_format_unittest_extensions_data.txt delete mode 100755 lib/protobuf/python/compatibility_tests/v2.5.0/tests/google/protobuf/internal/wire_format_test.py delete mode 100755 lib/protobuf/python/google/__init__.py delete mode 100755 lib/protobuf/python/google/protobuf/__init__.py delete mode 100644 lib/protobuf/python/google/protobuf/compiler/__init__.py delete mode 100755 lib/protobuf/python/google/protobuf/descriptor.py delete mode 100644 lib/protobuf/python/google/protobuf/descriptor_database.py delete mode 100644 lib/protobuf/python/google/protobuf/descriptor_pool.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/__init__.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/_parameterized.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/any_test.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/api_implementation.cc delete mode 100755 lib/protobuf/python/google/protobuf/internal/api_implementation.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/containers.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/decoder.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/descriptor_database_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/descriptor_pool_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/descriptor_pool_test1.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/descriptor_pool_test2.proto delete mode 100755 lib/protobuf/python/google/protobuf/internal/descriptor_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/encoder.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/enum_type_wrapper.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/extension_dict.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/factory_test1.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/factory_test2.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/file_options_test.proto delete mode 100755 lib/protobuf/python/google/protobuf/internal/generator_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/import_test_package/__init__.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/import_test_package/inner.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/import_test_package/outer.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/json_format_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/keywords_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/message_factory_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/message_listener.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/message_set_extensions.proto delete mode 100755 lib/protobuf/python/google/protobuf/internal/message_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/missing_enum_values.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/more_extensions.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/more_messages.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/no_package.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/packed_field_test.proto delete mode 100644 lib/protobuf/python/google/protobuf/internal/proto_builder_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/python_message.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/python_protobuf.cc delete mode 100755 lib/protobuf/python/google/protobuf/internal/reflection_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/service_reflection_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/symbol_database_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto delete mode 100755 lib/protobuf/python/google/protobuf/internal/test_util.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/testing_refleaks.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/text_encoding_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/text_format_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/type_checkers.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/unknown_fields_test.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/well_known_types.py delete mode 100644 lib/protobuf/python/google/protobuf/internal/well_known_types_test.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/wire_format.py delete mode 100755 lib/protobuf/python/google/protobuf/internal/wire_format_test.py delete mode 100644 lib/protobuf/python/google/protobuf/json_format.py delete mode 100755 lib/protobuf/python/google/protobuf/message.py delete mode 100644 lib/protobuf/python/google/protobuf/message_factory.py delete mode 100644 lib/protobuf/python/google/protobuf/proto_api.h delete mode 100644 lib/protobuf/python/google/protobuf/proto_builder.py delete mode 100644 lib/protobuf/python/google/protobuf/pyext/README delete mode 100644 lib/protobuf/python/google/protobuf/pyext/__init__.py delete mode 100644 lib/protobuf/python/google/protobuf/pyext/cpp_message.py delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_containers.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_containers.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_database.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_database.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_pool.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/descriptor_pool.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/extension_dict.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/extension_dict.h delete mode 100755 lib/protobuf/python/google/protobuf/pyext/field.cc delete mode 100755 lib/protobuf/python/google/protobuf/pyext/field.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/map_container.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/map_container.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/message.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/message.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/message_factory.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/message_factory.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/message_module.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/proto2_api_test.proto delete mode 100644 lib/protobuf/python/google/protobuf/pyext/python.proto delete mode 100644 lib/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/repeated_composite_container.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/repeated_scalar_container.cc delete mode 100644 lib/protobuf/python/google/protobuf/pyext/repeated_scalar_container.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/safe_numerics.h delete mode 100644 lib/protobuf/python/google/protobuf/pyext/scoped_pyobject_ptr.h delete mode 100755 lib/protobuf/python/google/protobuf/pyext/unknown_fields.cc delete mode 100755 lib/protobuf/python/google/protobuf/pyext/unknown_fields.h delete mode 100644 lib/protobuf/python/google/protobuf/python_protobuf.h delete mode 100755 lib/protobuf/python/google/protobuf/reflection.py delete mode 100755 lib/protobuf/python/google/protobuf/service.py delete mode 100755 lib/protobuf/python/google/protobuf/service_reflection.py delete mode 100644 lib/protobuf/python/google/protobuf/symbol_database.py delete mode 100644 lib/protobuf/python/google/protobuf/text_encoding.py delete mode 100755 lib/protobuf/python/google/protobuf/text_format.py delete mode 100644 lib/protobuf/python/google/protobuf/util/__init__.py delete mode 100755 lib/protobuf/python/mox.py delete mode 100755 lib/protobuf/python/release.sh delete mode 100644 lib/protobuf/python/release/wheel/Dockerfile delete mode 100644 lib/protobuf/python/release/wheel/README.md delete mode 100755 lib/protobuf/python/release/wheel/build_wheel_manylinux.sh delete mode 100755 lib/protobuf/python/release/wheel/protobuf_optimized_pip.sh delete mode 100644 lib/protobuf/python/setup.cfg delete mode 100755 lib/protobuf/python/setup.py delete mode 100755 lib/protobuf/python/stubout.py delete mode 100644 lib/protobuf/python/tox.ini delete mode 100644 lib/protobuf/ruby/.gitignore delete mode 100644 lib/protobuf/ruby/Gemfile delete mode 100644 lib/protobuf/ruby/README.md delete mode 100644 lib/protobuf/ruby/Rakefile delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/README.md delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/Rakefile delete mode 100755 lib/protobuf/ruby/compatibility_tests/v3.0.0/test.sh delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/basic.rb delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/generated_code.proto delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/generated_code_test.rb delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/repeated_field_test.rb delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/stress.rb delete mode 100644 lib/protobuf/ruby/compatibility_tests/v3.0.0/tests/test_import.proto delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/defs.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/encode_decode.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/extconf.rb delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/map.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/message.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/protobuf.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/protobuf.h delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/repeated_field.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/storage.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/upb.c delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/upb.h delete mode 100644 lib/protobuf/ruby/ext/google/protobuf_c/wrap_memcpy.c delete mode 100644 lib/protobuf/ruby/google-protobuf.gemspec delete mode 100644 lib/protobuf/ruby/lib/google/protobuf.rb delete mode 100644 lib/protobuf/ruby/lib/google/protobuf/message_exts.rb delete mode 100644 lib/protobuf/ruby/lib/google/protobuf/repeated_field.rb delete mode 100644 lib/protobuf/ruby/lib/google/protobuf/well_known_types.rb delete mode 100644 lib/protobuf/ruby/pom.xml delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyBuilder.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyDescriptor.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyDescriptorPool.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyEnum.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumBuilderContext.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyMap.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyMessageBuilderContext.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyOneofBuilderContext.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyOneofDescriptor.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyProtobuf.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/RubyRepeatedField.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/SentinelOuterClass.java delete mode 100644 lib/protobuf/ruby/src/main/java/com/google/protobuf/jruby/Utils.java delete mode 100644 lib/protobuf/ruby/src/main/java/google/ProtobufJavaService.java delete mode 100644 lib/protobuf/ruby/src/main/sentinel.proto delete mode 100644 lib/protobuf/ruby/tests/basic.rb delete mode 100644 lib/protobuf/ruby/tests/basic_proto2.rb delete mode 100644 lib/protobuf/ruby/tests/basic_test.proto delete mode 100644 lib/protobuf/ruby/tests/basic_test_proto2.proto delete mode 100644 lib/protobuf/ruby/tests/common_tests.rb delete mode 100644 lib/protobuf/ruby/tests/encode_decode_test.rb delete mode 100644 lib/protobuf/ruby/tests/gc_test.rb delete mode 100644 lib/protobuf/ruby/tests/generated_code.proto delete mode 100644 lib/protobuf/ruby/tests/generated_code_proto2.proto delete mode 100644 lib/protobuf/ruby/tests/generated_code_proto2_test.rb delete mode 100644 lib/protobuf/ruby/tests/generated_code_test.rb delete mode 100644 lib/protobuf/ruby/tests/repeated_field_test.rb delete mode 100644 lib/protobuf/ruby/tests/stress.rb delete mode 100644 lib/protobuf/ruby/tests/test_import.proto delete mode 100644 lib/protobuf/ruby/tests/test_import_proto2.proto delete mode 100644 lib/protobuf/ruby/tests/test_ruby_package.proto delete mode 100644 lib/protobuf/ruby/tests/test_ruby_package_proto2.proto delete mode 100644 lib/protobuf/ruby/tests/type_errors.rb delete mode 100644 lib/protobuf/ruby/tests/well_known_types_test.rb delete mode 100755 lib/protobuf/ruby/travis-test.sh delete mode 100644 lib/protobuf/six.BUILD delete mode 100644 lib/protobuf/src/Makefile.am delete mode 100644 lib/protobuf/src/README.md delete mode 100644 lib/protobuf/src/google/protobuf/any.cc delete mode 100644 lib/protobuf/src/google/protobuf/any.h delete mode 100644 lib/protobuf/src/google/protobuf/any.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/any.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/any.proto delete mode 100644 lib/protobuf/src/google/protobuf/any_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/any_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/any_test.proto delete mode 100644 lib/protobuf/src/google/protobuf/api.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/api.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/api.proto delete mode 100644 lib/protobuf/src/google/protobuf/arena.cc delete mode 100644 lib/protobuf/src/google/protobuf/arena.h delete mode 100644 lib/protobuf/src/google/protobuf/arena_impl.h delete mode 100644 lib/protobuf/src/google/protobuf/arena_test_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/arena_test_util.h delete mode 100644 lib/protobuf/src/google/protobuf/arena_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/arenastring.h delete mode 100644 lib/protobuf/src/google/protobuf/arenastring_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/annotation_test_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/annotation_test_util.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/code_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/code_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/command_line_interface.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/command_line_interface.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/command_line_interface_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_message_layout_helper.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_move_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_options.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_service.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.inc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/cpp/metadata_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_names.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_options.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/importer.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/importer.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/importer_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_context.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_context.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_doc_comment.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_field_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_enum_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_extension.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_extension.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_extension_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_extension_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_file.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_file.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_generator_factory.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_map_field_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_map_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_builder.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_builder.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_builder_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_builder_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_field_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_message_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_name_resolver.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_names.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_options.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_plugin_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_primitive_field_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_primitive_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_service.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_service.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_string_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_string_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_string_field_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/java/java_string_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_file.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_file.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_main.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_params.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javamicro/javamicro_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_extension.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_extension.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_file.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_file.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_main.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_params.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/javanano/javanano_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/js/js_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/js/js_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/js/well_known_types_embed.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/js/well_known_types_embed.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/main.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/mock_code_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/mock_code_generator.h delete mode 100755 lib/protobuf/src/google/protobuf/compiler/objectivec/method_dump.sh delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/package_info.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/parser.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/parser.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/parser_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/php/php_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/php/php_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/plugin.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/plugin.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/plugin.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/plugin.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/plugin.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/python/python_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/python/python_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/python/python_plugin_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_code.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_code_pb.rb delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_code_proto2.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_code_proto2_pb.rb delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_explicit.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_explicit_legacy.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_explicit_legacy_pb.rb delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_explicit_pb.rb delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_implicit.proto delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generated_pkg_implicit_pb.rb delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generator.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/scc.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/subprocess.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/subprocess.h delete mode 100644 lib/protobuf/src/google/protobuf/compiler/test_plugin.cc delete mode 100755 lib/protobuf/src/google/protobuf/compiler/zip_output_unittest.sh delete mode 100644 lib/protobuf/src/google/protobuf/compiler/zip_writer.cc delete mode 100644 lib/protobuf/src/google/protobuf/compiler/zip_writer.h delete mode 100644 lib/protobuf/src/google/protobuf/descriptor.cc delete mode 100644 lib/protobuf/src/google/protobuf/descriptor.h delete mode 100644 lib/protobuf/src/google/protobuf/descriptor.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/descriptor.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/descriptor.proto delete mode 100644 lib/protobuf/src/google/protobuf/descriptor_database.cc delete mode 100644 lib/protobuf/src/google/protobuf/descriptor_database.h delete mode 100644 lib/protobuf/src/google/protobuf/descriptor_database_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/descriptor_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/drop_unknown_fields_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/duration.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/duration.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/duration.proto delete mode 100644 lib/protobuf/src/google/protobuf/dynamic_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/dynamic_message.h delete mode 100644 lib/protobuf/src/google/protobuf/dynamic_message_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/empty.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/empty.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/empty.proto delete mode 100644 lib/protobuf/src/google/protobuf/extension_set.cc delete mode 100644 lib/protobuf/src/google/protobuf/extension_set.h delete mode 100644 lib/protobuf/src/google/protobuf/extension_set_heavy.cc delete mode 100644 lib/protobuf/src/google/protobuf/extension_set_inl.h delete mode 100644 lib/protobuf/src/google/protobuf/extension_set_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/field_mask.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/field_mask.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/field_mask.proto delete mode 100644 lib/protobuf/src/google/protobuf/generated_enum_reflection.h delete mode 100755 lib/protobuf/src/google/protobuf/generated_enum_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_enum_util.h delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_reflection.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_reflection.h delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_reflection_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_table_driven.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_table_driven.h delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_table_driven_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_table_driven_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/generated_message_util.h delete mode 100644 lib/protobuf/src/google/protobuf/has_bits.h delete mode 100644 lib/protobuf/src/google/protobuf/implicit_weak_message.cc delete mode 100644 lib/protobuf/src/google/protobuf/implicit_weak_message.h delete mode 100644 lib/protobuf/src/google/protobuf/inlined_string_field.h delete mode 100644 lib/protobuf/src/google/protobuf/io/coded_stream.cc delete mode 100755 lib/protobuf/src/google/protobuf/io/coded_stream.h delete mode 100644 lib/protobuf/src/google/protobuf/io/coded_stream_inl.h delete mode 100644 lib/protobuf/src/google/protobuf/io/coded_stream_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/gzip_stream.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/gzip_stream.h delete mode 100755 lib/protobuf/src/google/protobuf/io/gzip_stream_unittest.sh delete mode 100755 lib/protobuf/src/google/protobuf/io/io_win32.cc delete mode 100755 lib/protobuf/src/google/protobuf/io/io_win32.h delete mode 100755 lib/protobuf/src/google/protobuf/io/io_win32_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/package_info.h delete mode 100644 lib/protobuf/src/google/protobuf/io/printer.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/printer.h delete mode 100644 lib/protobuf/src/google/protobuf/io/printer_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/strtod.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/strtod.h delete mode 100644 lib/protobuf/src/google/protobuf/io/tokenizer.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/tokenizer.h delete mode 100644 lib/protobuf/src/google/protobuf/io/tokenizer_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream.h delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/io/zero_copy_stream_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/lite_arena_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/lite_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/map.h delete mode 100644 lib/protobuf/src/google/protobuf/map_entry.h delete mode 100644 lib/protobuf/src/google/protobuf/map_entry_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/map_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/map_field.h delete mode 100644 lib/protobuf/src/google/protobuf/map_field_inl.h delete mode 100644 lib/protobuf/src/google/protobuf/map_field_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/map_field_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/map_lite_test_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/map_lite_test_util.h delete mode 100644 lib/protobuf/src/google/protobuf/map_lite_unittest.proto delete mode 100644 lib/protobuf/src/google/protobuf/map_proto2_unittest.proto delete mode 100644 lib/protobuf/src/google/protobuf/map_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/map_test_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/map_test_util.h delete mode 100644 lib/protobuf/src/google/protobuf/map_test_util_impl.h delete mode 100644 lib/protobuf/src/google/protobuf/map_type_handler.h delete mode 100644 lib/protobuf/src/google/protobuf/map_unittest.proto delete mode 100644 lib/protobuf/src/google/protobuf/message.cc delete mode 100644 lib/protobuf/src/google/protobuf/message.h delete mode 100644 lib/protobuf/src/google/protobuf/message_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/message_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/message_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/message_unittest.inc delete mode 100644 lib/protobuf/src/google/protobuf/metadata.h delete mode 100644 lib/protobuf/src/google/protobuf/metadata_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/no_field_presence_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/package_info.h delete mode 100644 lib/protobuf/src/google/protobuf/parse_context.cc delete mode 100644 lib/protobuf/src/google/protobuf/parse_context.h delete mode 100644 lib/protobuf/src/google/protobuf/port.h delete mode 100644 lib/protobuf/src/google/protobuf/port_def.inc delete mode 100644 lib/protobuf/src/google/protobuf/port_undef.inc delete mode 100644 lib/protobuf/src/google/protobuf/preserve_unknown_enum_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/proto3_arena_lite_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/proto3_arena_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/proto3_lite_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/proto3_lite_unittest.inc delete mode 100644 lib/protobuf/src/google/protobuf/reflection.h delete mode 100644 lib/protobuf/src/google/protobuf/reflection_internal.h delete mode 100644 lib/protobuf/src/google/protobuf/reflection_ops.cc delete mode 100644 lib/protobuf/src/google/protobuf/reflection_ops.h delete mode 100644 lib/protobuf/src/google/protobuf/reflection_ops_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/repeated_field.cc delete mode 100644 lib/protobuf/src/google/protobuf/repeated_field.h delete mode 100644 lib/protobuf/src/google/protobuf/repeated_field_reflection_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/repeated_field_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/service.cc delete mode 100644 lib/protobuf/src/google/protobuf/service.h delete mode 100644 lib/protobuf/src/google/protobuf/source_context.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/source_context.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/source_context.proto delete mode 100644 lib/protobuf/src/google/protobuf/struct.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/struct.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/struct.proto delete mode 100644 lib/protobuf/src/google/protobuf/stubs/bytestream.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/bytestream.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/bytestream_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/callback.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/casts.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/common.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/common.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/common_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/fastmem.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/hash.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/int128.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/int128.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/int128_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/logging.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/macros.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/map_util.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/mathlimits.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/mathlimits.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/mathutil.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/mutex.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/once.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/platform_macros.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/port.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/status.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/status.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/status_macros.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/status_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/statusor.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/statusor.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/statusor_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stl_util.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringpiece.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringpiece.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringpiece_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringprintf.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringprintf.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/stringprintf_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/structurally_valid.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/structurally_valid_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/strutil.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/strutil.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/strutil_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/substitute.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/substitute.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/template_util.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/template_util_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/time.cc delete mode 100644 lib/protobuf/src/google/protobuf/stubs/time.h delete mode 100644 lib/protobuf/src/google/protobuf/stubs/time_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/test_messages_proto2.proto delete mode 100644 lib/protobuf/src/google/protobuf/test_messages_proto3.proto delete mode 100644 lib/protobuf/src/google/protobuf/test_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/test_util.h delete mode 100644 lib/protobuf/src/google/protobuf/test_util.inc delete mode 100644 lib/protobuf/src/google/protobuf/test_util2.h delete mode 100644 lib/protobuf/src/google/protobuf/test_util_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/test_util_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/testdata/bad_utf8_string delete mode 100644 lib/protobuf/src/google/protobuf/testdata/golden_message delete mode 100644 lib/protobuf/src/google/protobuf/testdata/golden_message_maps delete mode 100644 lib/protobuf/src/google/protobuf/testdata/golden_message_oneof_implemented delete mode 100644 lib/protobuf/src/google/protobuf/testdata/golden_message_proto3 delete mode 100644 lib/protobuf/src/google/protobuf/testdata/golden_packed_fields_message delete mode 100644 lib/protobuf/src/google/protobuf/testdata/map_test_data.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_data.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt delete mode 100644 lib/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt delete mode 100644 lib/protobuf/src/google/protobuf/testing/file.cc delete mode 100644 lib/protobuf/src/google/protobuf/testing/file.h delete mode 100644 lib/protobuf/src/google/protobuf/testing/googletest.cc delete mode 100644 lib/protobuf/src/google/protobuf/testing/googletest.h delete mode 100644 lib/protobuf/src/google/protobuf/testing/zcgunzip.cc delete mode 100644 lib/protobuf/src/google/protobuf/testing/zcgzip.cc delete mode 100644 lib/protobuf/src/google/protobuf/text_format.cc delete mode 100644 lib/protobuf/src/google/protobuf/text_format.h delete mode 100644 lib/protobuf/src/google/protobuf/text_format_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/timestamp.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/timestamp.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/timestamp.proto delete mode 100644 lib/protobuf/src/google/protobuf/type.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/type.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/type.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_arena.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_custom_options.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_drop_unknown_fields.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_embed_optimize_for.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_empty.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_enormous_descriptor.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_import.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_import_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_import_public.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_import_public_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_lazy_dependencies.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_lazy_dependencies_custom_option.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_lazy_dependencies_enum.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_lite_imports_nonlite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_mset.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_mset_wire_format.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_no_arena.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_no_arena_import.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_no_arena_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_no_field_presence.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_no_generic_services.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_optimize_for.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_preserve_unknown_enum.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_preserve_unknown_enum2.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_proto3.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_proto3_arena.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_proto3_arena_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_proto3_lite.proto delete mode 100644 lib/protobuf/src/google/protobuf/unittest_well_known_types.proto delete mode 100644 lib/protobuf/src/google/protobuf/unknown_field_set.cc delete mode 100644 lib/protobuf/src/google/protobuf/unknown_field_set.h delete mode 100644 lib/protobuf/src/google/protobuf/unknown_field_set_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/delimited_message_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/delimited_message_util.h delete mode 100644 lib/protobuf/src/google/protobuf/util/delimited_message_util_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/field_comparator.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/field_comparator.h delete mode 100644 lib/protobuf/src/google/protobuf/util/field_comparator_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/field_mask_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/field_mask_util.h delete mode 100644 lib/protobuf/src/google/protobuf/util/field_mask_util_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/constants.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/datapiece.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/datapiece.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/default_value_objectwriter_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/error_listener.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/error_listener.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/expecting_objectwriter.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/field_mask_utility.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/field_mask_utility.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_escaping.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_escaping.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_objectwriter.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_objectwriter.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_objectwriter_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_stream_parser.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_stream_parser.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/json_stream_parser_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/location_tracker.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/mock_error_listener.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/object_location_tracker.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/object_source.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/object_writer.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/object_writer.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/proto_writer.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/proto_writer.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectsource.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectsource_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/protostream_objectwriter_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/structured_objectwriter.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/anys.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/books.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/default_value.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/default_value_test.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/field_mask.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/maps.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/oneofs.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/proto3.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/struct.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/timestamp_duration.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/testdata/wrappers.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/type_info.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/type_info.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/type_info_test_helper.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/type_info_test_helper.h delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/utility.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/internal/utility.h delete mode 100644 lib/protobuf/src/google/protobuf/util/json_format.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/json_format_proto3.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/json_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/json_util.h delete mode 100644 lib/protobuf/src/google/protobuf/util/json_util_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/message_differencer.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/message_differencer.h delete mode 100644 lib/protobuf/src/google/protobuf/util/message_differencer_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/message_differencer_unittest.proto delete mode 100644 lib/protobuf/src/google/protobuf/util/package_info.h delete mode 100644 lib/protobuf/src/google/protobuf/util/time_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/time_util.h delete mode 100644 lib/protobuf/src/google/protobuf/util/time_util_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/type_resolver.h delete mode 100644 lib/protobuf/src/google/protobuf/util/type_resolver_util.cc delete mode 100644 lib/protobuf/src/google/protobuf/util/type_resolver_util.h delete mode 100644 lib/protobuf/src/google/protobuf/util/type_resolver_util_test.cc delete mode 100644 lib/protobuf/src/google/protobuf/well_known_types_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/wire_format.cc delete mode 100644 lib/protobuf/src/google/protobuf/wire_format.h delete mode 100644 lib/protobuf/src/google/protobuf/wire_format_lite.cc delete mode 100644 lib/protobuf/src/google/protobuf/wire_format_lite.h delete mode 100644 lib/protobuf/src/google/protobuf/wire_format_unittest.cc delete mode 100644 lib/protobuf/src/google/protobuf/wrappers.pb.cc delete mode 100644 lib/protobuf/src/google/protobuf/wrappers.pb.h delete mode 100644 lib/protobuf/src/google/protobuf/wrappers.proto delete mode 100644 lib/protobuf/src/libprotobuf-lite.map delete mode 100644 lib/protobuf/src/libprotobuf.map delete mode 100644 lib/protobuf/src/libprotoc.map delete mode 100644 lib/protobuf/src/solaris/libstdc++.la delete mode 100755 lib/protobuf/tests.sh delete mode 100644 lib/protobuf/third_party/zlib.BUILD delete mode 100755 lib/protobuf/update_file_lists.sh delete mode 100755 lib/protobuf/update_version.py delete mode 100644 lib/protobuf/util/python/BUILD delete mode 100644 lib/protobuf/vendor_suffix_test.config delete mode 100644 lib/protobuf/vendor_suffix_test.cpp diff --git a/lib/protobuf/Android.bp b/lib/protobuf/Android.bp deleted file mode 100644 index ed0e49a..0000000 --- a/lib/protobuf/Android.bp +++ /dev/null @@ -1,808 +0,0 @@ -// Copyright (C) 2009 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// -// - -cc_defaults { - name: "protobuf-cflags-defaults", - clang_cflags: [ - "-Wno-unused-const-variable", - "-Wno-error=user-defined-warnings", - ], - cflags: [ - "-Wall", - "-Werror", - "-Wno-unused-function", - "-Wno-sign-compare", - "-Wno-unused-parameter", - "-Wno-sign-promo", - ], - - target: { - windows: { - cflags: ["-Wno-macro-redefined"], - }, - }, -} - -cc_defaults { - name: "libprotobuf-cpp-lite-defaults", - defaults: ["protobuf-cflags-defaults"], - srcs: [ - "src/google/protobuf/any_lite.cc", - "src/google/protobuf/arena.cc", - "src/google/protobuf/extension_set.cc", - "src/google/protobuf/generated_enum_util.cc", - "src/google/protobuf/generated_message_table_driven_lite.cc", - "src/google/protobuf/generated_message_util.cc", - "src/google/protobuf/implicit_weak_message.cc", - "src/google/protobuf/io/coded_stream.cc", - "src/google/protobuf/io/io_win32.cc", - "src/google/protobuf/io/strtod.cc", - "src/google/protobuf/io/zero_copy_stream.cc", - "src/google/protobuf/io/zero_copy_stream_impl.cc", - "src/google/protobuf/io/zero_copy_stream_impl_lite.cc", - "src/google/protobuf/message_lite.cc", - "src/google/protobuf/parse_context.cc", - "src/google/protobuf/repeated_field.cc", - "src/google/protobuf/stubs/bytestream.cc", - "src/google/protobuf/stubs/common.cc", - "src/google/protobuf/stubs/int128.cc", - "src/google/protobuf/stubs/status.cc", - "src/google/protobuf/stubs/statusor.cc", - "src/google/protobuf/stubs/stringpiece.cc", - "src/google/protobuf/stubs/stringprintf.cc", - "src/google/protobuf/stubs/structurally_valid.cc", - "src/google/protobuf/stubs/strutil.cc", - "src/google/protobuf/stubs/time.cc", - "src/google/protobuf/wire_format_lite.cc", - ], - - local_include_dirs: [ - "android", - "src", - ], - export_include_dirs: ["src"], - - target: { - android: { - shared_libs: ["liblog"], - }, - vendor: { - // This suffix must be updated when a new version is imported. - suffix: "-3.9.1", - }, - }, -} - -// C++ lite library for the NDK. -// ======================================================= -cc_library_static { - name: "libprotobuf-cpp-lite-ndk", - defaults: ["libprotobuf-cpp-lite-defaults"], - - sdk_version: "9", - - stl: "c++_static", -} - -// C++ lite library for the platform and host. -// ======================================================= -cc_library { - name: "libprotobuf-cpp-lite", - host_supported: true, - recovery_available: true, - vendor_available: true, - double_loadable: true, - defaults: ["libprotobuf-cpp-lite-defaults"], - - target: { - windows: { - enabled: true, - }, - }, - apex_available: [ - "//apex_available:platform", - "//apex_available:anyapex", - ], - min_sdk_version: "29", -} - -// C++ lite library for the platform and host. -// ======================================================= -cc_library_static { - name: "libprotobuf-cpp-lite_static", - host_supported: true, - defaults: ["libprotobuf-cpp-lite-defaults"], -} - -// C++ full library -// ======================================================= -cc_defaults { - name: "libprotobuf-cpp-full-defaults", - defaults: ["libprotobuf-cpp-lite-defaults"], - - srcs: [ - "src/google/protobuf/any.cc", - "src/google/protobuf/any.pb.cc", - "src/google/protobuf/api.pb.cc", - "src/google/protobuf/compiler/importer.cc", - "src/google/protobuf/compiler/parser.cc", - "src/google/protobuf/descriptor.cc", - "src/google/protobuf/descriptor.pb.cc", - "src/google/protobuf/descriptor_database.cc", - "src/google/protobuf/duration.pb.cc", - "src/google/protobuf/dynamic_message.cc", - "src/google/protobuf/empty.pb.cc", - "src/google/protobuf/extension_set_heavy.cc", - "src/google/protobuf/field_mask.pb.cc", - "src/google/protobuf/generated_message_reflection.cc", - "src/google/protobuf/generated_message_table_driven.cc", - "src/google/protobuf/io/gzip_stream.cc", - "src/google/protobuf/io/printer.cc", - "src/google/protobuf/io/tokenizer.cc", - "src/google/protobuf/map_field.cc", - "src/google/protobuf/message.cc", - "src/google/protobuf/reflection_ops.cc", - "src/google/protobuf/service.cc", - "src/google/protobuf/source_context.pb.cc", - "src/google/protobuf/struct.pb.cc", - "src/google/protobuf/stubs/mathlimits.cc", - "src/google/protobuf/stubs/substitute.cc", - "src/google/protobuf/text_format.cc", - "src/google/protobuf/timestamp.pb.cc", - "src/google/protobuf/type.pb.cc", - "src/google/protobuf/unknown_field_set.cc", - "src/google/protobuf/util/delimited_message_util.cc", - "src/google/protobuf/util/field_comparator.cc", - "src/google/protobuf/util/field_mask_util.cc", - "src/google/protobuf/util/internal/datapiece.cc", - "src/google/protobuf/util/internal/default_value_objectwriter.cc", - "src/google/protobuf/util/internal/error_listener.cc", - "src/google/protobuf/util/internal/field_mask_utility.cc", - "src/google/protobuf/util/internal/json_escaping.cc", - "src/google/protobuf/util/internal/json_objectwriter.cc", - "src/google/protobuf/util/internal/json_stream_parser.cc", - "src/google/protobuf/util/internal/object_writer.cc", - "src/google/protobuf/util/internal/proto_writer.cc", - "src/google/protobuf/util/internal/protostream_objectsource.cc", - "src/google/protobuf/util/internal/protostream_objectwriter.cc", - "src/google/protobuf/util/internal/type_info.cc", - "src/google/protobuf/util/internal/type_info_test_helper.cc", - "src/google/protobuf/util/internal/utility.cc", - "src/google/protobuf/util/json_util.cc", - "src/google/protobuf/util/message_differencer.cc", - "src/google/protobuf/util/time_util.cc", - "src/google/protobuf/util/type_resolver_util.cc", - "src/google/protobuf/wire_format.cc", - "src/google/protobuf/wrappers.pb.cc", - ], - - cflags: ["-DHAVE_ZLIB=1"], - shared_libs: ["libz"], -} - -// C++ full library for the NDK. -// ======================================================= -cc_library_static { - name: "libprotobuf-cpp-full-ndk", - defaults: ["libprotobuf-cpp-full-defaults"], - - sdk_version: "9", - - stl: "c++_static", -} - -// C++ full library for the platform and host -// ======================================================= -cc_library { - name: "libprotobuf-cpp-full", - defaults: ["libprotobuf-cpp-full-defaults"], - host_supported: true, - vendor_available: true, - // TODO(b/153609531): remove when no longer needed. - native_bridge_supported: true, - target: { - android: { - static: { - enabled: false, - }, - }, - windows: { - enabled: true, - }, - }, -} - -// Compiler library for the host -// ======================================================= -cc_library { - name: "libprotoc", - host_supported: true, - device_supported: false, - defaults: ["libprotobuf-cpp-full-defaults"], - - srcs: [ - "src/google/protobuf/compiler/code_generator.cc", - "src/google/protobuf/compiler/command_line_interface.cc", - "src/google/protobuf/compiler/cpp/cpp_enum.cc", - "src/google/protobuf/compiler/cpp/cpp_enum_field.cc", - "src/google/protobuf/compiler/cpp/cpp_extension.cc", - "src/google/protobuf/compiler/cpp/cpp_field.cc", - "src/google/protobuf/compiler/cpp/cpp_file.cc", - "src/google/protobuf/compiler/cpp/cpp_generator.cc", - "src/google/protobuf/compiler/cpp/cpp_helpers.cc", - "src/google/protobuf/compiler/cpp/cpp_map_field.cc", - "src/google/protobuf/compiler/cpp/cpp_message.cc", - "src/google/protobuf/compiler/cpp/cpp_message_field.cc", - "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc", - "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc", - "src/google/protobuf/compiler/cpp/cpp_service.cc", - "src/google/protobuf/compiler/cpp/cpp_string_field.cc", - "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", - "src/google/protobuf/compiler/csharp/csharp_enum.cc", - "src/google/protobuf/compiler/csharp/csharp_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_field_base.cc", - "src/google/protobuf/compiler/csharp/csharp_generator.cc", - "src/google/protobuf/compiler/csharp/csharp_helpers.cc", - "src/google/protobuf/compiler/csharp/csharp_map_field.cc", - "src/google/protobuf/compiler/csharp/csharp_message.cc", - "src/google/protobuf/compiler/csharp/csharp_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", - "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", - "src/google/protobuf/compiler/java/java_context.cc", - "src/google/protobuf/compiler/java/java_doc_comment.cc", - "src/google/protobuf/compiler/java/java_enum.cc", - "src/google/protobuf/compiler/java/java_enum_field.cc", - "src/google/protobuf/compiler/java/java_enum_field_lite.cc", - "src/google/protobuf/compiler/java/java_enum_lite.cc", - "src/google/protobuf/compiler/java/java_extension.cc", - "src/google/protobuf/compiler/java/java_extension_lite.cc", - "src/google/protobuf/compiler/java/java_field.cc", - "src/google/protobuf/compiler/java/java_file.cc", - "src/google/protobuf/compiler/java/java_generator.cc", - "src/google/protobuf/compiler/java/java_generator_factory.cc", - "src/google/protobuf/compiler/java/java_helpers.cc", - "src/google/protobuf/compiler/java/java_map_field.cc", - "src/google/protobuf/compiler/java/java_map_field_lite.cc", - "src/google/protobuf/compiler/java/java_message.cc", - "src/google/protobuf/compiler/java/java_message_builder.cc", - "src/google/protobuf/compiler/java/java_message_builder_lite.cc", - "src/google/protobuf/compiler/java/java_message_field.cc", - "src/google/protobuf/compiler/java/java_message_field_lite.cc", - "src/google/protobuf/compiler/java/java_message_lite.cc", - "src/google/protobuf/compiler/java/java_name_resolver.cc", - "src/google/protobuf/compiler/java/java_primitive_field.cc", - "src/google/protobuf/compiler/java/java_primitive_field_lite.cc", - "src/google/protobuf/compiler/java/java_service.cc", - "src/google/protobuf/compiler/java/java_shared_code_generator.cc", - "src/google/protobuf/compiler/java/java_string_field.cc", - "src/google/protobuf/compiler/java/java_string_field_lite.cc", - "src/google/protobuf/compiler/js/js_generator.cc", - "src/google/protobuf/compiler/js/well_known_types_embed.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_extension.cc", - "src/google/protobuf/compiler/objectivec/objectivec_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_file.cc", - "src/google/protobuf/compiler/objectivec/objectivec_generator.cc", - "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc", - "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc", - "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc", - "src/google/protobuf/compiler/php/php_generator.cc", - "src/google/protobuf/compiler/plugin.cc", - "src/google/protobuf/compiler/plugin.pb.cc", - "src/google/protobuf/compiler/python/python_generator.cc", - "src/google/protobuf/compiler/ruby/ruby_generator.cc", - "src/google/protobuf/compiler/subprocess.cc", - "src/google/protobuf/compiler/zip_writer.cc", - ], - - export_include_dirs: [ - "android", - "src", - "config", - ], - - target: { - windows: { - enabled: true, - // defined by the global cflags, but redefined by protobuf - cflags: ["-UWIN32_LEAN_AND_MEAN"], - }, - }, - - rtti: true, -} - -// Android Protocol buffer compiler, aprotoc (host executable) -// used by the build systems as $(PROTOC) defined in -// build/core/config.mk -// ======================================================= -cc_binary_host { - name: "aprotoc", - defaults: ["protobuf-cflags-defaults"], - - target: { - windows: { - enabled: true, - // defined by the global cflags, but redefined by protobuf - cflags: ["-UWIN32_LEAN_AND_MEAN"], - }, - }, - - // Statically link libc++ because we copy aprotoc to unbundled projects where - // libc++.so may not be available. - stl: "libc++_static", - - srcs: [ - "src/google/protobuf/compiler/main.cc", - ], - - static_libs: [ - "libprotoc", - "libz", - ], - - cflags: [ - "-DHAVE_ZLIB=1", - ], - - rtti: true, -} - -cc_test { - name: "libprotobuf_vendor_suffix_test", - vendor: true, - srcs: ["vendor_suffix_test.cpp"], - shared_libs: [ - "libprotobuf-cpp-lite", - "libprotobuf-cpp-full", - ], - static_libs: ["libbase"], - stl: "libc++", - test_suites: ["general-tests"], - test_config: "vendor_suffix_test.config", -} - -java_defaults { - name: "libprotobuf_errorprone_defaults", - errorprone: { - javacflags: ["-Xep:MissingOverride:OFF"], // b/73499927 - }, -} - -// Java nano library -// ======================================================= -java_library_static { - name: "libprotobuf-java-nano", - defaults: ["libprotobuf_errorprone_defaults"], - host_supported: true, - - sdk_version: "9", - - srcs: [ - "javanano/src/main/java/com/google/protobuf/nano/**/*.java", - ], - - target: { - android: { - srcs: ["javanano/src/device/main/java/com/google/protobuf/nano/**/*.java"], - }, - }, - - java_version: "1.7", - - apex_available: [ - "//apex_available:platform", - // TODO(b/151068271) switch this to //apex_available:anyapex - "com.android.wifi", - ], -} - -// Java nano library (compatibility for old host-side users) -// ======================================================= -java_library_host { - name: "host-libprotobuf-java-nano", - static_libs: ["libprotobuf-java-nano"], - - java_version: "1.7", -} - -// Java micro library -// ======================================================= -java_library_static { - name: "libprotobuf-java-micro", - defaults: ["libprotobuf_errorprone_defaults"], - host_supported: true, - - sdk_version: "8", - - srcs: ["javamicro/src/main/java/com/google/protobuf/micro/**/*.java"], - - apex_available: [ - "//apex_available:platform", - // TODO(b/151068271) switch this to //apex_available:anyapex - "com.android.bluetooth.updatable", - ], -} - -// Java micro library (compatibility for old host-side users) -// ======================================================= -java_library_host { - name: "host-libprotobuf-java-micro", - static_libs: ["libprotobuf-java-micro"], -} - -// Java lite library -// ======================================================= -java_library_static { - name: "libprotobuf-java-lite", - host_supported: true, - sdk_version: "core_current", - - srcs: [ - "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java", - "java/core/src/main/java/com/google/protobuf/AbstractParser.java", - "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java", - "java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java", - "java/core/src/main/java/com/google/protobuf/Android.java", - "java/core/src/main/java/com/google/protobuf/ArrayDecoders.java", - "java/core/src/main/java/com/google/protobuf/BinaryReader.java", - "java/core/src/main/java/com/google/protobuf/BinaryWriter.java", - "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java", - "java/core/src/main/java/com/google/protobuf/BufferAllocator.java", - "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java", - "java/core/src/main/java/com/google/protobuf/ByteOutput.java", - "java/core/src/main/java/com/google/protobuf/ByteString.java", - "java/core/src/main/java/com/google/protobuf/CodedInputStream.java", - "java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java", - "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java", - "java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java", - "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java", - "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java", - "java/core/src/main/java/com/google/protobuf/ExtensionLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java", - "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchema.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java", - "java/core/src/main/java/com/google/protobuf/FieldInfo.java", - "java/core/src/main/java/com/google/protobuf/FieldSet.java", - "java/core/src/main/java/com/google/protobuf/FieldType.java", - "java/core/src/main/java/com/google/protobuf/FloatArrayList.java", - "java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java", - "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java", - "java/core/src/main/java/com/google/protobuf/IntArrayList.java", - "java/core/src/main/java/com/google/protobuf/Internal.java", - "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java", - "java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java", - "java/core/src/main/java/com/google/protobuf/JavaType.java", - "java/core/src/main/java/com/google/protobuf/LazyField.java", - "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java", - "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java", - "java/core/src/main/java/com/google/protobuf/LazyStringList.java", - "java/core/src/main/java/com/google/protobuf/ListFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/LongArrayList.java", - "java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java", - "java/core/src/main/java/com/google/protobuf/MapEntryLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java", - "java/core/src/main/java/com/google/protobuf/MessageInfo.java", - "java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java", - "java/core/src/main/java/com/google/protobuf/MessageLite.java", - "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java", - "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java", - "java/core/src/main/java/com/google/protobuf/MessageSchema.java", - "java/core/src/main/java/com/google/protobuf/MessageSetSchema.java", - "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java", - "java/core/src/main/java/com/google/protobuf/NioByteString.java", - "java/core/src/main/java/com/google/protobuf/OneofInfo.java", - "java/core/src/main/java/com/google/protobuf/Parser.java", - "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java", - "java/core/src/main/java/com/google/protobuf/ProtoSyntax.java", - "java/core/src/main/java/com/google/protobuf/Protobuf.java", - "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java", - "java/core/src/main/java/com/google/protobuf/ProtobufLists.java", - "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java", - "java/core/src/main/java/com/google/protobuf/RawMessageInfo.java", - "java/core/src/main/java/com/google/protobuf/Reader.java", - "java/core/src/main/java/com/google/protobuf/RopeByteString.java", - "java/core/src/main/java/com/google/protobuf/Schema.java", - "java/core/src/main/java/com/google/protobuf/SchemaFactory.java", - "java/core/src/main/java/com/google/protobuf/SchemaUtil.java", - "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java", - "java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java", - "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java", - "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java", - "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java", - "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java", - "java/core/src/main/java/com/google/protobuf/Utf8.java", - "java/core/src/main/java/com/google/protobuf/WireFormat.java", - "java/core/src/main/java/com/google/protobuf/Writer.java", - ], - - target: { - android: { - libs: ["libcore_private.stubs"], - }, - }, - - java_version: "1.7", - - apex_available: [ - "//apex_available:platform", - // TODO(b/151068271) switch below to //apex_available:anyapex - "com.android.permission", - "com.android.bluetooth.updatable", - "com.android.tethering", - "com.android.wifi", - ], -} - -// Java lite library (compatibility for old host-side users) -// ======================================================= -java_library_host { - name: "host-libprotobuf-java-lite", - static_libs: ["libprotobuf-java-lite"], -} - -// Java full library (for host-side users) -// ======================================================= -java_library_host { - name: "libprotobuf-java-full", - defaults: ["libprotobuf_errorprone_defaults"], - - srcs: [ - "java/core/src/main/java/**/*.java", - ":libprotobuf-internal-protos", - ], - - proto: { - type: "full", - local_include_dirs: [ - "src", - ], - canonical_path_from_root: false, - }, - - java_version: "1.7", -} - -java_library_host { - name: "libprotobuf-java-util-full", - defaults: ["libprotobuf_errorprone_defaults"], - srcs: [ - "java/util/src/main/java/com/google/protobuf/util/*.java", - ], - static_libs: [ - "error_prone_annotations", - "gson-prebuilt-jar", - "guava-21.0", - "libprotobuf-java-full", - ], -} - -// Java full library (compatibility for old host-side users) -// ======================================================= -java_library_host { - name: "host-libprotobuf-java-full", - static_libs: ["libprotobuf-java-full"], -} - -// Stubs library for using hidden APIs in core-oj and core-libart -// ======================================================= -java_library { - name: "libcore_private.stubs", - srcs: ["java/core/src/stubs/**/*.java"], - sdk_version: "core_current", - installable: false, -} - -// Python library -// ======================================================= -python_library { - name: "libprotobuf-python", - srcs: [ - ":libprotobuf-internal-python-srcs", - ":libprotobuf-internal-protos", - ], - version: { - py2: { - enabled: true, - }, - py3: { - enabled: true, - }, - }, - libs: [ - "py-six", - ], - proto: { - local_include_dirs: [ - "src", - ], - canonical_path_from_root: false, - }, - host_supported: true, -} - -filegroup { - name: "libprotobuf-internal-python-srcs", - srcs: ["python/google/**/*.py"], - path: "python", -} - -filegroup { - name: "libprotobuf-internal-protos", - srcs: [ - "src/google/protobuf/descriptor.proto", - "src/google/protobuf/any.proto", - "src/google/protobuf/source_context.proto", - "src/google/protobuf/type.proto", - "src/google/protobuf/compiler/plugin.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/struct.proto", - "src/google/protobuf/timestamp.proto", - "src/google/protobuf/wrappers.proto", - ], - path: "src", -} - -// To test java proto params build rules. -// ======================================================= -java_test { - name: "aprotoc-test-nano-params", - sdk_version: "current", - proto: { - type: "nano", - local_include_dirs: ["src"], - output_params: [ - "java_package=javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto\\|com.google.protobuf.nano", - "java_outer_classname=javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto\\|UnittestImportNano", - ], - }, - srcs: [ - "javanano/src/test/java/com/google/protobuf/nano/unittest_import_nano.proto", - "javanano/src/test/java/com/google/protobuf/nano/unittest_simple_nano.proto", - "javanano/src/test/java/com/google/protobuf/nano/unittest_stringutf8_nano.proto", - "javanano/src/test/java/com/google/protobuf/nano/unittest_recursive_nano.proto", - ], - java_version: "1.7", -} - -// To test Android-specific nanoproto features. -// ======================================================= -java_test { - // Parcelable messages - name: "android-nano-test-parcelable", - sdk_version: "current", - // Only needed at compile-time. - libs: ["android-support-annotations"], - proto: { - type: "nano", - local_include_dirs: ["src"], - output_params: [ - "parcelable_messages=true", - "generate_intdefs=true", - ], - }, - srcs: ["javanano/src/test/java/com/google/protobuf/nano/unittest_simple_nano.proto"], -} - -java_test { - // Parcelable and extendable messages - name: "android-nano-test-parcelable-extendable", - sdk_version: "current", - // Only needed at compile-time. - libs: ["android-support-annotations"], - proto: { - type: "nano", - local_include_dirs: ["src"], - output_params: [ - "parcelable_messages=true", - "generate_intdefs=true", - "store_unknown_fields=true", - ], - }, - srcs: ["javanano/src/test/java/com/google/protobuf/nano/unittest_extension_nano.proto"], - java_version: "1.7", -} - -android_test { - // Test APK - name: "NanoAndroidTest", - sdk_version: "8", - srcs: ["javanano/src/device/test/java/com/google/protobuf/nano/**/*.java"], - manifest: "javanano/src/device/test/AndroidManifest.xml", - static_libs: [ - "libprotobuf-java-nano", - "android-nano-test-parcelable", - "android-nano-test-parcelable-extendable", - ], - dex_preopt: { - enabled: false, - }, -} - -// Java micro generator plugin -// ======================================================= -cc_binary_host { - name: "protoc-gen-javamicro", - defaults: ["protobuf-cflags-defaults"], - srcs: [ - "src/google/protobuf/compiler/javamicro/javamicro_enum.cc", - "src/google/protobuf/compiler/javamicro/javamicro_enum_field.cc", - "src/google/protobuf/compiler/javamicro/javamicro_field.cc", - "src/google/protobuf/compiler/javamicro/javamicro_file.cc", - "src/google/protobuf/compiler/javamicro/javamicro_generator.cc", - "src/google/protobuf/compiler/javamicro/javamicro_helpers.cc", - "src/google/protobuf/compiler/javamicro/javamicro_main.cc", - "src/google/protobuf/compiler/javamicro/javamicro_message.cc", - "src/google/protobuf/compiler/javamicro/javamicro_message_field.cc", - "src/google/protobuf/compiler/javamicro/javamicro_primitive_field.cc", - ], - local_include_dirs: ["src"], - static_libs: [ - "libprotoc", - "libz", - ], - stl: "libc++_static", -} - -// Java nano generator plugin -// ======================================================= -cc_binary_host { - name: "protoc-gen-javanano", - defaults: ["protobuf-cflags-defaults"], - srcs: [ - "src/google/protobuf/compiler/javanano/javanano_enum.cc", - "src/google/protobuf/compiler/javanano/javanano_enum_field.cc", - "src/google/protobuf/compiler/javanano/javanano_extension.cc", - "src/google/protobuf/compiler/javanano/javanano_field.cc", - "src/google/protobuf/compiler/javanano/javanano_file.cc", - "src/google/protobuf/compiler/javanano/javanano_generator.cc", - "src/google/protobuf/compiler/javanano/javanano_helpers.cc", - "src/google/protobuf/compiler/javanano/javanano_main.cc", - "src/google/protobuf/compiler/javanano/javanano_map_field.cc", - "src/google/protobuf/compiler/javanano/javanano_message.cc", - "src/google/protobuf/compiler/javanano/javanano_message_field.cc", - "src/google/protobuf/compiler/javanano/javanano_primitive_field.cc", - ], - local_include_dirs: ["src"], - static_libs: [ - "libprotoc", - "libz", - ], - stl: "libc++_static", -} diff --git a/lib/protobuf/BUILD b/lib/protobuf/BUILD deleted file mode 100644 index dbae719..0000000 --- a/lib/protobuf/BUILD +++ /dev/null @@ -1,1208 +0,0 @@ -# Bazel (https://bazel.build/) BUILD file for Protobuf. - -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test", "objc_library") -load("@rules_java//java:defs.bzl", "java_library") -load("@rules_proto//proto:defs.bzl", "proto_lang_toolchain", "proto_library") - -licenses(["notice"]) - -exports_files(["LICENSE"]) - -################################################################################ -# Java 9 configuration -################################################################################ - -config_setting( - name = "jdk9", - values = { - "java_toolchain": "@bazel_tools//tools/jdk:toolchain_jdk9", - }, -) - -################################################################################ -# ZLIB configuration -################################################################################ - -ZLIB_DEPS = ["@zlib//:zlib"] - -################################################################################ -# Protobuf Runtime Library -################################################################################ - -MSVC_COPTS = [ - "/DHAVE_PTHREAD", - "/wd4018", # -Wno-sign-compare - "/wd4065", # switch statement contains 'default' but no 'case' labels - "/wd4146", # unary minus operator applied to unsigned type, result still unsigned - "/wd4244", # 'conversion' conversion from 'type1' to 'type2', possible loss of data - "/wd4251", # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' - "/wd4267", # 'var' : conversion from 'size_t' to 'type', possible loss of data - "/wd4305", # 'identifier' : truncation from 'type1' to 'type2' - "/wd4307", # 'operator' : integral constant overflow - "/wd4309", # 'conversion' : truncation of constant value - "/wd4334", # 'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) - "/wd4355", # 'this' : used in base member initializer list - "/wd4506", # no definition for inline function 'function' - "/wd4514", # -Wno-unused-function - "/wd4800", # 'type' : forcing value to bool 'true' or 'false' (performance warning) - "/wd4996", # The compiler encountered a deprecated declaration. -] - -COPTS = select({ - ":msvc" : MSVC_COPTS, - "//conditions:default": [ - "-DHAVE_PTHREAD", - "-DHAVE_ZLIB", - "-Woverloaded-virtual", - "-Wno-sign-compare", - "-Wno-unused-function", - # Prevents ISO C++ const string assignment warnings for pyext sources. - "-Wno-write-strings", - ], -}) - -load(":compiler_config_setting.bzl", "create_compiler_config_setting") - -create_compiler_config_setting(name = "msvc", value = "msvc-cl") - -config_setting( - name = "android", - values = { - "crosstool_top": "//external:android/crosstool", - }, -) - -config_setting( - name = "android-libcpp", - values = { - "crosstool_top": "@androidndk//:toolchain-libcpp", - }, -) - -config_setting( - name = "android-gnu-libstdcpp", - values = { - "crosstool_top": "@androidndk//:toolchain-gnu-libstdcpp", - }, -) - -# Android and MSVC builds do not need to link in a separate pthread library. -LINK_OPTS = select({ - ":android": [], - ":android-libcpp": [], - ":android-gnu-libstdcpp": [], - ":msvc": [ - # Suppress linker warnings about files with no symbols defined. - "-ignore:4221", - ], - "//conditions:default": ["-lpthread", "-lm"], -}) - -load( - ":protobuf.bzl", - "cc_proto_library", - "py_proto_library", - "internal_copied_filegroup", - "internal_gen_well_known_protos_java", - "internal_protobuf_py_tests", -) - -cc_library( - name = "protobuf_lite", - srcs = [ - # AUTOGEN(protobuf_lite_srcs) - "src/google/protobuf/any_lite.cc", - "src/google/protobuf/arena.cc", - "src/google/protobuf/extension_set.cc", - "src/google/protobuf/generated_enum_util.cc", - "src/google/protobuf/generated_message_table_driven_lite.cc", - "src/google/protobuf/generated_message_util.cc", - "src/google/protobuf/implicit_weak_message.cc", - "src/google/protobuf/io/coded_stream.cc", - "src/google/protobuf/io/io_win32.cc", - "src/google/protobuf/io/strtod.cc", - "src/google/protobuf/io/zero_copy_stream.cc", - "src/google/protobuf/io/zero_copy_stream_impl.cc", - "src/google/protobuf/io/zero_copy_stream_impl_lite.cc", - "src/google/protobuf/message_lite.cc", - "src/google/protobuf/parse_context.cc", - "src/google/protobuf/repeated_field.cc", - "src/google/protobuf/stubs/bytestream.cc", - "src/google/protobuf/stubs/common.cc", - "src/google/protobuf/stubs/int128.cc", - "src/google/protobuf/stubs/status.cc", - "src/google/protobuf/stubs/statusor.cc", - "src/google/protobuf/stubs/stringpiece.cc", - "src/google/protobuf/stubs/stringprintf.cc", - "src/google/protobuf/stubs/structurally_valid.cc", - "src/google/protobuf/stubs/strutil.cc", - "src/google/protobuf/stubs/time.cc", - "src/google/protobuf/wire_format_lite.cc", - ], - hdrs = glob(["src/google/protobuf/**/*.h", "src/google/protobuf/**/*.inc"]), - copts = COPTS, - includes = ["src/"], - linkopts = LINK_OPTS, - visibility = ["//visibility:public"], -) - -PROTOBUF_DEPS = select({ - ":msvc": [], - "//conditions:default": ZLIB_DEPS, -}) - -cc_library( - name = "protobuf", - srcs = [ - # AUTOGEN(protobuf_srcs) - "src/google/protobuf/any.cc", - "src/google/protobuf/any.pb.cc", - "src/google/protobuf/api.pb.cc", - "src/google/protobuf/compiler/importer.cc", - "src/google/protobuf/compiler/parser.cc", - "src/google/protobuf/descriptor.cc", - "src/google/protobuf/descriptor.pb.cc", - "src/google/protobuf/descriptor_database.cc", - "src/google/protobuf/duration.pb.cc", - "src/google/protobuf/dynamic_message.cc", - "src/google/protobuf/empty.pb.cc", - "src/google/protobuf/extension_set_heavy.cc", - "src/google/protobuf/field_mask.pb.cc", - "src/google/protobuf/generated_message_reflection.cc", - "src/google/protobuf/generated_message_table_driven.cc", - "src/google/protobuf/io/gzip_stream.cc", - "src/google/protobuf/io/printer.cc", - "src/google/protobuf/io/tokenizer.cc", - "src/google/protobuf/map_field.cc", - "src/google/protobuf/message.cc", - "src/google/protobuf/reflection_ops.cc", - "src/google/protobuf/service.cc", - "src/google/protobuf/source_context.pb.cc", - "src/google/protobuf/struct.pb.cc", - "src/google/protobuf/stubs/mathlimits.cc", - "src/google/protobuf/stubs/substitute.cc", - "src/google/protobuf/text_format.cc", - "src/google/protobuf/timestamp.pb.cc", - "src/google/protobuf/type.pb.cc", - "src/google/protobuf/unknown_field_set.cc", - "src/google/protobuf/util/delimited_message_util.cc", - "src/google/protobuf/util/field_comparator.cc", - "src/google/protobuf/util/field_mask_util.cc", - "src/google/protobuf/util/internal/datapiece.cc", - "src/google/protobuf/util/internal/default_value_objectwriter.cc", - "src/google/protobuf/util/internal/error_listener.cc", - "src/google/protobuf/util/internal/field_mask_utility.cc", - "src/google/protobuf/util/internal/json_escaping.cc", - "src/google/protobuf/util/internal/json_objectwriter.cc", - "src/google/protobuf/util/internal/json_stream_parser.cc", - "src/google/protobuf/util/internal/object_writer.cc", - "src/google/protobuf/util/internal/proto_writer.cc", - "src/google/protobuf/util/internal/protostream_objectsource.cc", - "src/google/protobuf/util/internal/protostream_objectwriter.cc", - "src/google/protobuf/util/internal/type_info.cc", - "src/google/protobuf/util/internal/type_info_test_helper.cc", - "src/google/protobuf/util/internal/utility.cc", - "src/google/protobuf/util/json_util.cc", - "src/google/protobuf/util/message_differencer.cc", - "src/google/protobuf/util/time_util.cc", - "src/google/protobuf/util/type_resolver_util.cc", - "src/google/protobuf/wire_format.cc", - "src/google/protobuf/wrappers.pb.cc", - ], - hdrs = glob(["src/**/*.h", "src/**/*.inc"]), - copts = COPTS, - includes = ["src/"], - linkopts = LINK_OPTS, - visibility = ["//visibility:public"], - deps = [":protobuf_lite"] + PROTOBUF_DEPS, -) - -# This provides just the header files for use in projects that need to build -# shared libraries for dynamic loading. This target is available until Bazel -# adds native support for such use cases. -# TODO(keveman): Remove this target once the support gets added to Bazel. -cc_library( - name = "protobuf_headers", - hdrs = glob(["src/**/*.h", "src/**/*.inc"]), - includes = ["src/"], - visibility = ["//visibility:public"], -) - -# Map of all well known protos. -# name => (include path, imports) -WELL_KNOWN_PROTO_MAP = { - "any" : ("google/protobuf/any.proto", []), - "api" : ("google/protobuf/api.proto", ["source_context", "type"]), - "compiler_plugin" : ("google/protobuf/compiler/plugin.proto", ["descriptor"]), - "descriptor" : ("google/protobuf/descriptor.proto", []), - "duration" : ("google/protobuf/duration.proto", []), - "empty" : ("google/protobuf/empty.proto", []), - "field_mask" : ("google/protobuf/field_mask.proto", []), - "source_context" : ("google/protobuf/source_context.proto", []), - "struct" : ("google/protobuf/struct.proto", []), - "timestamp" : ("google/protobuf/timestamp.proto", []), - "type" : ("google/protobuf/type.proto", ["any", "source_context"]), - "wrappers" : ("google/protobuf/wrappers.proto", []), -} - -RELATIVE_WELL_KNOWN_PROTOS = [proto[1][0] for proto in WELL_KNOWN_PROTO_MAP.items()] - -WELL_KNOWN_PROTOS = ["src/" + s for s in RELATIVE_WELL_KNOWN_PROTOS] - -filegroup( - name = "well_known_protos", - srcs = WELL_KNOWN_PROTOS, - visibility = ["//visibility:public"], -) - -cc_proto_library( - name = "cc_wkt_protos", - srcs = WELL_KNOWN_PROTOS, - include = "src", - default_runtime = ":protobuf", - internal_bootstrap_hack = 1, - protoc = ":protoc", - visibility = ["//visibility:public"], -) - -################################################################################ -# Well Known Types Proto Library Rules -# -# These proto_library rules can be used with one of the language specific proto -# library rules i.e. java_proto_library: -# -# java_proto_library( -# name = "any_java_proto", -# deps = ["@com_google_protobuf//:any_proto], -# ) -################################################################################ - -internal_copied_filegroup( - name = "_internal_wkt_protos", - srcs = WELL_KNOWN_PROTOS, - dest = "", - strip_prefix = "src", - visibility = ["//visibility:private"], -) - -[proto_library( - name = proto[0] + "_proto", - srcs = [proto[1][0]], - deps = [dep + "_proto" for dep in proto[1][1]], - visibility = ["//visibility:public"], - ) for proto in WELL_KNOWN_PROTO_MAP.items()] - -################################################################################ -# Protocol Buffers Compiler -################################################################################ - -cc_library( - name = "protoc_lib", - srcs = [ - # AUTOGEN(protoc_lib_srcs) - "src/google/protobuf/compiler/code_generator.cc", - "src/google/protobuf/compiler/command_line_interface.cc", - "src/google/protobuf/compiler/cpp/cpp_enum.cc", - "src/google/protobuf/compiler/cpp/cpp_enum_field.cc", - "src/google/protobuf/compiler/cpp/cpp_extension.cc", - "src/google/protobuf/compiler/cpp/cpp_field.cc", - "src/google/protobuf/compiler/cpp/cpp_file.cc", - "src/google/protobuf/compiler/cpp/cpp_generator.cc", - "src/google/protobuf/compiler/cpp/cpp_helpers.cc", - "src/google/protobuf/compiler/cpp/cpp_map_field.cc", - "src/google/protobuf/compiler/cpp/cpp_message.cc", - "src/google/protobuf/compiler/cpp/cpp_message_field.cc", - "src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc", - "src/google/protobuf/compiler/cpp/cpp_primitive_field.cc", - "src/google/protobuf/compiler/cpp/cpp_service.cc", - "src/google/protobuf/compiler/cpp/cpp_string_field.cc", - "src/google/protobuf/compiler/csharp/csharp_doc_comment.cc", - "src/google/protobuf/compiler/csharp/csharp_enum.cc", - "src/google/protobuf/compiler/csharp/csharp_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_field_base.cc", - "src/google/protobuf/compiler/csharp/csharp_generator.cc", - "src/google/protobuf/compiler/csharp/csharp_helpers.cc", - "src/google/protobuf/compiler/csharp/csharp_map_field.cc", - "src/google/protobuf/compiler/csharp/csharp_message.cc", - "src/google/protobuf/compiler/csharp/csharp_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_reflection_class.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc", - "src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc", - "src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc", - "src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc", - "src/google/protobuf/compiler/java/java_context.cc", - "src/google/protobuf/compiler/java/java_doc_comment.cc", - "src/google/protobuf/compiler/java/java_enum.cc", - "src/google/protobuf/compiler/java/java_enum_field.cc", - "src/google/protobuf/compiler/java/java_enum_field_lite.cc", - "src/google/protobuf/compiler/java/java_enum_lite.cc", - "src/google/protobuf/compiler/java/java_extension.cc", - "src/google/protobuf/compiler/java/java_extension_lite.cc", - "src/google/protobuf/compiler/java/java_field.cc", - "src/google/protobuf/compiler/java/java_file.cc", - "src/google/protobuf/compiler/java/java_generator.cc", - "src/google/protobuf/compiler/java/java_generator_factory.cc", - "src/google/protobuf/compiler/java/java_helpers.cc", - "src/google/protobuf/compiler/java/java_map_field.cc", - "src/google/protobuf/compiler/java/java_map_field_lite.cc", - "src/google/protobuf/compiler/java/java_message.cc", - "src/google/protobuf/compiler/java/java_message_builder.cc", - "src/google/protobuf/compiler/java/java_message_builder_lite.cc", - "src/google/protobuf/compiler/java/java_message_field.cc", - "src/google/protobuf/compiler/java/java_message_field_lite.cc", - "src/google/protobuf/compiler/java/java_message_lite.cc", - "src/google/protobuf/compiler/java/java_name_resolver.cc", - "src/google/protobuf/compiler/java/java_primitive_field.cc", - "src/google/protobuf/compiler/java/java_primitive_field_lite.cc", - "src/google/protobuf/compiler/java/java_service.cc", - "src/google/protobuf/compiler/java/java_shared_code_generator.cc", - "src/google/protobuf/compiler/java/java_string_field.cc", - "src/google/protobuf/compiler/java/java_string_field_lite.cc", - "src/google/protobuf/compiler/js/js_generator.cc", - "src/google/protobuf/compiler/js/well_known_types_embed.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum.cc", - "src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_extension.cc", - "src/google/protobuf/compiler/objectivec/objectivec_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_file.cc", - "src/google/protobuf/compiler/objectivec/objectivec_generator.cc", - "src/google/protobuf/compiler/objectivec/objectivec_helpers.cc", - "src/google/protobuf/compiler/objectivec/objectivec_map_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message.cc", - "src/google/protobuf/compiler/objectivec/objectivec_message_field.cc", - "src/google/protobuf/compiler/objectivec/objectivec_oneof.cc", - "src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc", - "src/google/protobuf/compiler/php/php_generator.cc", - "src/google/protobuf/compiler/plugin.cc", - "src/google/protobuf/compiler/plugin.pb.cc", - "src/google/protobuf/compiler/python/python_generator.cc", - "src/google/protobuf/compiler/ruby/ruby_generator.cc", - "src/google/protobuf/compiler/subprocess.cc", - "src/google/protobuf/compiler/zip_writer.cc", - ], - copts = COPTS, - includes = ["src/"], - linkopts = LINK_OPTS + select({ - ":msvc": [ - # Linking to setargv.obj makes the default command line argument - # parser expand wildcards, so the main method's argv will contain the - # expanded list instead of the wildcards. - # - # Adding dummy "-DEFAULTLIB:kernel32.lib", because: - # - Microsoft ships this object file next to default libraries - # - but this file is not a library, just a precompiled object - # - "-WHOLEARCHIVE" and "-DEFAULTLIB" only accept library, - # not precompiled object. - # - Bazel would assume linkopt that does not start with "-" or "$" - # as a label to a target, so we add a harmless "-DEFAULTLIB:kernel32.lib" - # before "setargv.obj". - # See https://msdn.microsoft.com/en-us/library/8bch7bkk.aspx - "-DEFAULTLIB:kernel32.lib setargv.obj", - ], - "//conditions:default": [], - }), - visibility = ["//visibility:public"], - deps = [":protobuf"], -) - -cc_binary( - name = "protoc", - srcs = ["src/google/protobuf/compiler/main.cc"], - linkopts = LINK_OPTS, - visibility = ["//visibility:public"], - deps = [":protoc_lib"], -) - -################################################################################ -# Tests -################################################################################ - -RELATIVE_LITE_TEST_PROTOS = [ - # AUTOGEN(lite_test_protos) - "google/protobuf/map_lite_unittest.proto", - "google/protobuf/unittest_import_lite.proto", - "google/protobuf/unittest_import_public_lite.proto", - "google/protobuf/unittest_lite.proto", - "google/protobuf/unittest_no_arena_lite.proto", -] - -LITE_TEST_PROTOS = ["src/" + s for s in RELATIVE_LITE_TEST_PROTOS] - -RELATIVE_TEST_PROTOS = [ - # AUTOGEN(test_protos) - "google/protobuf/any_test.proto", - "google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto", - "google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto", - "google/protobuf/map_proto2_unittest.proto", - "google/protobuf/map_unittest.proto", - "google/protobuf/unittest.proto", - "google/protobuf/unittest_arena.proto", - "google/protobuf/unittest_custom_options.proto", - "google/protobuf/unittest_drop_unknown_fields.proto", - "google/protobuf/unittest_embed_optimize_for.proto", - "google/protobuf/unittest_empty.proto", - "google/protobuf/unittest_enormous_descriptor.proto", - "google/protobuf/unittest_import.proto", - "google/protobuf/unittest_import_public.proto", - "google/protobuf/unittest_lazy_dependencies.proto", - "google/protobuf/unittest_lazy_dependencies_custom_option.proto", - "google/protobuf/unittest_lazy_dependencies_enum.proto", - "google/protobuf/unittest_lite_imports_nonlite.proto", - "google/protobuf/unittest_mset.proto", - "google/protobuf/unittest_mset_wire_format.proto", - "google/protobuf/unittest_no_arena.proto", - "google/protobuf/unittest_no_arena_import.proto", - "google/protobuf/unittest_no_field_presence.proto", - "google/protobuf/unittest_no_generic_services.proto", - "google/protobuf/unittest_optimize_for.proto", - "google/protobuf/unittest_preserve_unknown_enum.proto", - "google/protobuf/unittest_preserve_unknown_enum2.proto", - "google/protobuf/unittest_proto3.proto", - "google/protobuf/unittest_proto3_arena.proto", - "google/protobuf/unittest_proto3_arena_lite.proto", - "google/protobuf/unittest_proto3_lite.proto", - "google/protobuf/unittest_well_known_types.proto", - "google/protobuf/util/internal/testdata/anys.proto", - "google/protobuf/util/internal/testdata/books.proto", - "google/protobuf/util/internal/testdata/default_value.proto", - "google/protobuf/util/internal/testdata/default_value_test.proto", - "google/protobuf/util/internal/testdata/field_mask.proto", - "google/protobuf/util/internal/testdata/maps.proto", - "google/protobuf/util/internal/testdata/oneofs.proto", - "google/protobuf/util/internal/testdata/proto3.proto", - "google/protobuf/util/internal/testdata/struct.proto", - "google/protobuf/util/internal/testdata/timestamp_duration.proto", - "google/protobuf/util/internal/testdata/wrappers.proto", - "google/protobuf/util/json_format.proto", - "google/protobuf/util/json_format_proto3.proto", - "google/protobuf/util/message_differencer_unittest.proto", -] - -TEST_PROTOS = ["src/" + s for s in RELATIVE_TEST_PROTOS] - -cc_proto_library( - name = "cc_test_protos", - srcs = LITE_TEST_PROTOS + TEST_PROTOS, - include = "src", - default_runtime = ":protobuf", - protoc = ":protoc", - deps = [":cc_wkt_protos"], -) - -COMMON_TEST_SRCS = [ - # AUTOGEN(common_test_srcs) - "src/google/protobuf/arena_test_util.cc", - "src/google/protobuf/map_test_util.cc", - "src/google/protobuf/test_util.cc", - "src/google/protobuf/test_util.inc", - "src/google/protobuf/testing/file.cc", - "src/google/protobuf/testing/googletest.cc", -] - -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 = "win32_test", - srcs = ["src/google/protobuf/io/io_win32_unittest.cc"], - deps = [ - ":protobuf_lite", - "//external:gtest_main", - ], - tags = ["manual", "windows"], -) - -cc_test( - name = "protobuf_test", - srcs = 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/annotation_test_util.cc", - "src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc", - "src/google/protobuf/compiler/cpp/cpp_move_unittest.cc", - "src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc", - "src/google/protobuf/compiler/cpp/cpp_unittest.cc", - "src/google/protobuf/compiler/cpp/cpp_unittest.inc", - "src/google/protobuf/compiler/cpp/metadata_test.cc", - "src/google/protobuf/compiler/csharp/csharp_bootstrap_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/io_win32_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/message_unittest.inc", - "src/google/protobuf/no_field_presence_test.cc", - "src/google/protobuf/preserve_unknown_enum_test.cc", - "src/google/protobuf/proto3_arena_lite_unittest.cc", - "src/google/protobuf/proto3_arena_unittest.cc", - "src/google/protobuf/proto3_lite_unittest.cc", - "src/google/protobuf/proto3_lite_unittest.inc", - "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/int128_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/text_format_unittest.cc", - "src/google/protobuf/unknown_field_set_unittest.cc", - "src/google/protobuf/util/delimited_message_util_test.cc", - "src/google/protobuf/util/field_comparator_test.cc", - "src/google/protobuf/util/field_mask_util_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/message_differencer_unittest.cc", - "src/google/protobuf/util/time_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", - ] + select({ - "//conditions:default" : [ - # Doesn't pass on Windows with MSVC - "src/google/protobuf/compiler/command_line_interface_unittest.cc", - ], - ":msvc": [] - }), - copts = COPTS, - data = [ - ":test_plugin", - ] + glob([ - "src/google/protobuf/**/*", - # Files for csharp_bootstrap_unittest.cc. - "conformance/**/*", - "csharp/src/**/*", - ]), - includes = [ - "src/", - ], - linkopts = LINK_OPTS, - deps = [ - ":cc_test_protos", - ":protobuf", - ":protoc_lib", - "//external:gtest_main", - ] + PROTOBUF_DEPS, -) - -################################################################################ -# Java support -################################################################################ -internal_gen_well_known_protos_java( - srcs = WELL_KNOWN_PROTOS, -) - -java_library( - name = "protobuf_java", - srcs = glob([ - "java/core/src/main/java/com/google/protobuf/*.java", - ]) + [ - ":gen_well_known_protos_java", - ], - javacopts = select({ - "//:jdk9": ["--add-modules=jdk.unsupported"], - "//conditions:default": ["-source 7", "-target 7"], - }), - visibility = ["//visibility:public"], -) - -java_library( - name = "protobuf_javalite", - srcs = [ - # Keep in sync with java/lite/pom.xml - "java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java", - "java/core/src/main/java/com/google/protobuf/AbstractParser.java", - "java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java", - "java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java", - "java/core/src/main/java/com/google/protobuf/Android.java", - "java/core/src/main/java/com/google/protobuf/ArrayDecoders.java", - "java/core/src/main/java/com/google/protobuf/BinaryReader.java", - "java/core/src/main/java/com/google/protobuf/BinaryWriter.java", - "java/core/src/main/java/com/google/protobuf/BooleanArrayList.java", - "java/core/src/main/java/com/google/protobuf/BufferAllocator.java", - "java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java", - "java/core/src/main/java/com/google/protobuf/ByteOutput.java", - "java/core/src/main/java/com/google/protobuf/ByteString.java", - "java/core/src/main/java/com/google/protobuf/CodedInputStream.java", - "java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java", - "java/core/src/main/java/com/google/protobuf/CodedOutputStream.java", - "java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java", - "java/core/src/main/java/com/google/protobuf/DoubleArrayList.java", - "java/core/src/main/java/com/google/protobuf/ExperimentalApi.java", - "java/core/src/main/java/com/google/protobuf/ExtensionLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java", - "java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchema.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java", - "java/core/src/main/java/com/google/protobuf/FieldInfo.java", - "java/core/src/main/java/com/google/protobuf/FieldSet.java", - "java/core/src/main/java/com/google/protobuf/FieldType.java", - "java/core/src/main/java/com/google/protobuf/FloatArrayList.java", - "java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java", - "java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java", - "java/core/src/main/java/com/google/protobuf/IntArrayList.java", - "java/core/src/main/java/com/google/protobuf/Internal.java", - "java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java", - "java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java", - "java/core/src/main/java/com/google/protobuf/JavaType.java", - "java/core/src/main/java/com/google/protobuf/LazyField.java", - "java/core/src/main/java/com/google/protobuf/LazyFieldLite.java", - "java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java", - "java/core/src/main/java/com/google/protobuf/LazyStringList.java", - "java/core/src/main/java/com/google/protobuf/ListFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/LongArrayList.java", - "java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java", - "java/core/src/main/java/com/google/protobuf/MapEntryLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java", - "java/core/src/main/java/com/google/protobuf/MessageInfo.java", - "java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java", - "java/core/src/main/java/com/google/protobuf/MessageLite.java", - "java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java", - "java/core/src/main/java/com/google/protobuf/MessageLiteToString.java", - "java/core/src/main/java/com/google/protobuf/MessageSchema.java", - "java/core/src/main/java/com/google/protobuf/MessageSetSchema.java", - "java/core/src/main/java/com/google/protobuf/MutabilityOracle.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java", - "java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java", - "java/core/src/main/java/com/google/protobuf/NioByteString.java", - "java/core/src/main/java/com/google/protobuf/OneofInfo.java", - "java/core/src/main/java/com/google/protobuf/Parser.java", - "java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java", - "java/core/src/main/java/com/google/protobuf/ProtoSyntax.java", - "java/core/src/main/java/com/google/protobuf/Protobuf.java", - "java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java", - "java/core/src/main/java/com/google/protobuf/ProtobufLists.java", - "java/core/src/main/java/com/google/protobuf/ProtocolStringList.java", - "java/core/src/main/java/com/google/protobuf/RawMessageInfo.java", - "java/core/src/main/java/com/google/protobuf/Reader.java", - "java/core/src/main/java/com/google/protobuf/RopeByteString.java", - "java/core/src/main/java/com/google/protobuf/Schema.java", - "java/core/src/main/java/com/google/protobuf/SchemaFactory.java", - "java/core/src/main/java/com/google/protobuf/SchemaUtil.java", - "java/core/src/main/java/com/google/protobuf/SmallSortedMap.java", - "java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java", - "java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java", - "java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java", - "java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java", - "java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java", - "java/core/src/main/java/com/google/protobuf/UnsafeUtil.java", - "java/core/src/main/java/com/google/protobuf/Utf8.java", - "java/core/src/main/java/com/google/protobuf/WireFormat.java", - "java/core/src/main/java/com/google/protobuf/Writer.java", - ], - javacopts = select({ - "//:jdk9": ["--add-modules=jdk.unsupported"], - "//conditions:default": [ - "-source 7", - "-target 7", - ], - }), - visibility = ["//visibility:public"], -) - -java_library( - name = "protobuf_java_util", - srcs = glob([ - "java/util/src/main/java/com/google/protobuf/util/*.java", - ]), - javacopts = ["-source 7", "-target 7"], - visibility = ["//visibility:public"], - deps = [ - "protobuf_java", - "//external:error_prone_annotations", - "//external:gson", - "//external:guava", - ], -) - -################################################################################ -# Python support -################################################################################ - -py_library( - name = "python_srcs", - srcs = glob( - [ - "python/google/__init__.py", - "python/google/protobuf/*.py", - "python/google/protobuf/**/*.py", - ], - exclude = [ - "python/google/protobuf/__init__.py", - "python/google/protobuf/**/__init__.py", - "python/google/protobuf/internal/*_test.py", - "python/google/protobuf/internal/test_util.py", - ], - ), - imports = ["python"], - srcs_version = "PY2AND3", -) - -cc_binary( - name = "python/google/protobuf/internal/_api_implementation.so", - srcs = ["python/google/protobuf/internal/api_implementation.cc"], - copts = COPTS + [ - "-DPYTHON_PROTO2_CPP_IMPL_V2", - ], - linkshared = 1, - linkstatic = 1, - deps = select({ - "//conditions:default": [], - ":use_fast_cpp_protos": ["//external:python_headers"], - }), -) - -cc_binary( - name = "python/google/protobuf/pyext/_message.so", - srcs = glob([ - "python/google/protobuf/pyext/*.cc", - "python/google/protobuf/pyext/*.h", - ]), - copts = COPTS + [ - "-DGOOGLE_PROTOBUF_HAS_ONEOF=1", - ] + select({ - "//conditions:default": [], - ":allow_oversize_protos": ["-DPROTOBUF_PYTHON_ALLOW_OVERSIZE_PROTOS=1"], - }), - includes = [ - "python/", - "src/", - ], - linkshared = 1, - linkstatic = 1, - deps = [ - ":protobuf", - ":proto_api", - ] + select({ - "//conditions:default": [], - ":use_fast_cpp_protos": ["//external:python_headers"], - }), -) - -config_setting( - name = "use_fast_cpp_protos", - values = { - "define": "use_fast_cpp_protos=true", - }, -) - -config_setting( - name = "allow_oversize_protos", - values = { - "define": "allow_oversize_protos=true", - }, -) - -# Copy the builtin proto files from src/google/protobuf to -# python/google/protobuf. This way, the generated Python sources will be in the -# same directory as the Python runtime sources. This is necessary for the -# modules to be imported correctly since they are all part of the same Python -# package. -internal_copied_filegroup( - name = "protos_python", - srcs = WELL_KNOWN_PROTOS, - dest = "python", - strip_prefix = "src", -) - -# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in -# which case we can simply add :protos_python in srcs. -COPIED_WELL_KNOWN_PROTOS = ["python/" + s for s in RELATIVE_WELL_KNOWN_PROTOS] - -py_proto_library( - name = "protobuf_python", - srcs = COPIED_WELL_KNOWN_PROTOS, - include = "python", - data = select({ - "//conditions:default": [], - ":use_fast_cpp_protos": [ - ":python/google/protobuf/internal/_api_implementation.so", - ":python/google/protobuf/pyext/_message.so", - ], - }), - default_runtime = "", - protoc = ":protoc", - py_libs = [ - ":python_srcs", - "//external:six", - ], - py_extra_srcs = glob(["python/**/__init__.py"]), - srcs_version = "PY2AND3", - visibility = ["//visibility:public"], -) - -# Copy the test proto files from src/google/protobuf to -# python/google/protobuf. This way, the generated Python sources will be in the -# same directory as the Python runtime sources. This is necessary for the -# modules to be imported correctly by the tests since they are all part of the -# same Python package. -internal_copied_filegroup( - name = "protos_python_test", - srcs = LITE_TEST_PROTOS + TEST_PROTOS, - dest = "python", - strip_prefix = "src", -) - -# TODO(dzc): Remove this once py_proto_library can have labels in srcs, in -# which case we can simply add :protos_python_test in srcs. -COPIED_LITE_TEST_PROTOS = ["python/" + s for s in RELATIVE_LITE_TEST_PROTOS] - -COPIED_TEST_PROTOS = ["python/" + s for s in RELATIVE_TEST_PROTOS] - -py_proto_library( - name = "python_common_test_protos", - srcs = COPIED_LITE_TEST_PROTOS + COPIED_TEST_PROTOS, - include = "python", - default_runtime = "", - protoc = ":protoc", - srcs_version = "PY2AND3", - deps = [":protobuf_python"], -) - -py_proto_library( - name = "python_specific_test_protos", - srcs = glob([ - "python/google/protobuf/internal/*.proto", - "python/google/protobuf/internal/import_test_package/*.proto", - ]), - include = "python", - default_runtime = ":protobuf_python", - protoc = ":protoc", - srcs_version = "PY2AND3", - deps = [":python_common_test_protos"], -) - -py_library( - name = "python_tests", - srcs = glob( - [ - "python/google/protobuf/internal/*_test.py", - "python/google/protobuf/internal/test_util.py", - "python/google/protobuf/internal/import_test_package/__init__.py", - ], - ), - imports = ["python"], - srcs_version = "PY2AND3", - deps = [ - ":protobuf_python", - ":python_common_test_protos", - ":python_specific_test_protos", - ], -) - -internal_protobuf_py_tests( - name = "python_tests_batch", - data = glob([ - "src/google/protobuf/**/*", - ]), - modules = [ - "descriptor_database_test", - "descriptor_pool_test", - "descriptor_test", - "generator_test", - "json_format_test", - "message_factory_test", - "message_test", - "proto_builder_test", - "reflection_test", - "service_reflection_test", - "symbol_database_test", - "text_encoding_test", - "text_format_test", - "unknown_fields_test", - "wire_format_test", - ], - deps = [":python_tests"], -) - -cc_library( - name = "proto_api", - hdrs = ["python/google/protobuf/proto_api.h"], - deps = [ - "//external:python_headers", - ], - visibility = ["//visibility:public"], -) - -proto_lang_toolchain( - name = "cc_toolchain", - command_line = "--cpp_out=$(OUT)", - runtime = ":protobuf", - visibility = ["//visibility:public"], - blacklisted_protos = [":_internal_wkt_protos_genrule"], -) - -proto_lang_toolchain( - name = "java_toolchain", - command_line = "--java_out=$(OUT)", - runtime = ":protobuf_java", - visibility = ["//visibility:public"], -) - -alias( - name = "objectivec", - actual = ":protobuf_objc", - visibility = ["//visibility:public"], -) - -objc_library( - name = "protobuf_objc", - hdrs = [ - "objectivec/GPBArray.h", - "objectivec/GPBBootstrap.h", - "objectivec/GPBCodedInputStream.h", - "objectivec/GPBCodedOutputStream.h", - "objectivec/GPBDescriptor.h", - "objectivec/GPBDictionary.h", - "objectivec/GPBExtensionInternals.h", - "objectivec/GPBExtensionRegistry.h", - "objectivec/GPBMessage.h", - "objectivec/GPBProtocolBuffers.h", - "objectivec/GPBProtocolBuffers_RuntimeSupport.h", - "objectivec/GPBRootObject.h", - "objectivec/GPBRuntimeTypes.h", - "objectivec/GPBUnknownField.h", - "objectivec/GPBUnknownFieldSet.h", - "objectivec/GPBUtilities.h", - "objectivec/GPBWellKnownTypes.h", - "objectivec/GPBWireFormat.h", - "objectivec/google/protobuf/Any.pbobjc.h", - "objectivec/google/protobuf/Api.pbobjc.h", - "objectivec/google/protobuf/Duration.pbobjc.h", - "objectivec/google/protobuf/Empty.pbobjc.h", - "objectivec/google/protobuf/FieldMask.pbobjc.h", - "objectivec/google/protobuf/SourceContext.pbobjc.h", - "objectivec/google/protobuf/Struct.pbobjc.h", - "objectivec/google/protobuf/Timestamp.pbobjc.h", - "objectivec/google/protobuf/Type.pbobjc.h", - "objectivec/google/protobuf/Wrappers.pbobjc.h", - # Package private headers, but exposed because the generated sources - # need to use them. - "objectivec/GPBArray_PackagePrivate.h", - "objectivec/GPBCodedInputStream_PackagePrivate.h", - "objectivec/GPBCodedOutputStream_PackagePrivate.h", - "objectivec/GPBDescriptor_PackagePrivate.h", - "objectivec/GPBDictionary_PackagePrivate.h", - "objectivec/GPBMessage_PackagePrivate.h", - "objectivec/GPBRootObject_PackagePrivate.h", - "objectivec/GPBUnknownFieldSet_PackagePrivate.h", - "objectivec/GPBUnknownField_PackagePrivate.h", - "objectivec/GPBUtilities_PackagePrivate.h", - ], - copts = [ - "-Wno-vla", - ], - includes = [ - "objectivec", - ], - non_arc_srcs = [ - "objectivec/GPBArray.m", - "objectivec/GPBCodedInputStream.m", - "objectivec/GPBCodedOutputStream.m", - "objectivec/GPBDescriptor.m", - "objectivec/GPBDictionary.m", - "objectivec/GPBExtensionInternals.m", - "objectivec/GPBExtensionRegistry.m", - "objectivec/GPBMessage.m", - "objectivec/GPBRootObject.m", - "objectivec/GPBUnknownField.m", - "objectivec/GPBUnknownFieldSet.m", - "objectivec/GPBUtilities.m", - "objectivec/GPBWellKnownTypes.m", - "objectivec/GPBWireFormat.m", - "objectivec/google/protobuf/Any.pbobjc.m", - "objectivec/google/protobuf/Api.pbobjc.m", - "objectivec/google/protobuf/Duration.pbobjc.m", - "objectivec/google/protobuf/Empty.pbobjc.m", - "objectivec/google/protobuf/FieldMask.pbobjc.m", - "objectivec/google/protobuf/SourceContext.pbobjc.m", - "objectivec/google/protobuf/Struct.pbobjc.m", - "objectivec/google/protobuf/Timestamp.pbobjc.m", - "objectivec/google/protobuf/Type.pbobjc.m", - "objectivec/google/protobuf/Wrappers.pbobjc.m", - ], - visibility = ["//visibility:public"], -) - -################################################################################ -# Test generated proto support -################################################################################ - -genrule( - name = "generated_protos", - srcs = ["src/google/protobuf/unittest_import.proto"], - outs = ["unittest_gen.proto"], - cmd = "cat $(SRCS) | sed 's|google/|src/google/|' > $(OUTS)" -) - -proto_library( - name = "generated_protos_proto", - srcs = [ - "unittest_gen.proto", - "src/google/protobuf/unittest_import_public.proto", - ], -) - -py_proto_library( - name = "generated_protos_py", - srcs = [ - "unittest_gen.proto", - "src/google/protobuf/unittest_import_public.proto", - ], - default_runtime = "", - protoc = ":protoc", -) - -################################################################################ -# Conformance tests -################################################################################ - -proto_library( - name = "test_messages_proto2_proto", - srcs = ["src/google/protobuf/test_messages_proto2.proto"], - visibility = ["//visibility:public"], -) - -proto_library( - name = "test_messages_proto3_proto", - srcs = ["src/google/protobuf/test_messages_proto3.proto"], - deps = [ - ":any_proto", - ":duration_proto", - ":field_mask_proto", - ":struct_proto", - ":timestamp_proto", - ":wrappers_proto", - ], - visibility = ["//visibility:public"], -) - -cc_proto_library( - name = "test_messages_proto2_proto_cc", - srcs = ["src/google/protobuf/test_messages_proto2.proto"], -) - -cc_proto_library( - name = "test_messages_proto3_proto_cc", - srcs = ["src/google/protobuf/test_messages_proto3.proto"], - deps = [ - ":cc_wkt_protos", - ], -) - -proto_library( - name = "conformance_proto", - srcs = ["conformance/conformance.proto"], - visibility = ["//visibility:public"], -) - -cc_proto_library( - name = "conformance_proto_cc", - srcs = ["conformance/conformance.proto"], -) - -cc_library( - name = "jsoncpp", - hdrs = ["conformance/third_party/jsoncpp/json.h"], - srcs = ["conformance/third_party/jsoncpp/jsoncpp.cpp"], - includes = ["conformance"], -) - -cc_library( - name = "conformance_test", - srcs = [ - "conformance/conformance_test.cc", - "conformance/conformance_test_runner.cc", - ], - hdrs = [ - "conformance/conformance_test.h", - ], - deps = [":conformance_proto_cc"], - includes = ["conformance", "src"], -) - -cc_library( - name = "binary_json_conformance_suite", - srcs = ["conformance/binary_json_conformance_suite.cc"], - hdrs = ["conformance/binary_json_conformance_suite.h"], - deps = [ - ":conformance_test", - ":jsoncpp", - ":test_messages_proto2_proto_cc", - ":test_messages_proto3_proto_cc", - ], -) - -cc_library( - name = "text_format_conformance_suite", - srcs = ["conformance/text_format_conformance_suite.cc"], - hdrs = ["conformance/text_format_conformance_suite.h"], - deps = [ - ":conformance_test", - ":test_messages_proto2_proto_cc", - ":test_messages_proto3_proto_cc", - ], -) - -cc_binary( - name = "conformance_test_runner", - srcs = ["conformance/conformance_test_main.cc"], - deps = [ - ":binary_json_conformance_suite", - ":conformance_test", - ":text_format_conformance_suite", - ], - visibility = ["//visibility:public"], -) diff --git a/lib/protobuf/CHANGES.txt b/lib/protobuf/CHANGES.txt deleted file mode 100644 index d3cc7b8..0000000 --- a/lib/protobuf/CHANGES.txt +++ /dev/null @@ -1,2123 +0,0 @@ -2019-06-28 version 3.9.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - - C++ - * Optimize and simplify implementation of RepeatedPtrFieldBase - * Don't create unnecessary unknown field sets. - * Remove branch from accessors to repeated field element array. - * Added delimited parse and serialize util. - * Reduce size by not emitting constants for fieldnumbers - * Fix a bug when comparing finite and infinite field values with explicit tolerances. - * TextFormat::Parser should use a custom Finder to look up extensions by number if one is provided. - * Add MessageLite::Utf8DebugString() to make MessageLite more compatible with Message. - * Fail fast for better performance in DescriptorPool::FindExtensionByNumber() if descriptor has no defined extensions. - * Adding the file name to help debug colliding extensions - * Added FieldDescriptor::PrintableNameForExtension() and DescriptorPool::FindExtensionByPrintableName(). - The latter will replace Reflection::FindKnownExtensionByName(). - * Replace NULL with nullptr - * Created a new Add method in repeated field that allows adding a range of elements all at once. - * Enabled enum name-to-value mapping functions for C++ lite - * Avoid dynamic initialization in descriptor.proto generated code - * Move stream functions to MessageLite from Message. - * Move all zero_copy_stream functionality to io_lite. - * Do not create array of matched fields for simple repeated fields - * Enabling silent mode by default to reduce make compilation noise. (#6237) - - Java - * Expose TextFormat.Printer and make it configurable. Deprecate the static methods. - * Library for constructing google.protobuf.Struct and google.protobuf.Value - * Make OneofDescriptor extend GenericDescriptor. - * Expose streamingness of service methods from MethodDescriptor. - * Fix a bug where TextFormat fails to parse Any filed with > 1 embedded message sub-fields. - * Establish consistent JsonFormat behavior for nulls in oneofs, regardless of order. - * Update GSON version to 3.8.5. (#6268) - * Add `protobuf_java_lite` Bazel target. (#6177) - - Python - * Change implementation of Name() for enums that allow aliases in proto2 in Python - to be in line with claims in C++ implementation (to return first value). - * Explicitly say what field cannot be set when the new value fails a type check. - * Duplicate register in descriptor pool will raise errors - * Add __slots__ to all well_known_types classes, custom attributes are not allowed anymore. - * text_format only present 8 valid digits for float fields by default - - JavaScript - * Add Oneof enum to the list of goog.provide - - PHP - * Make php message class final to avoid mocking. (#6277) - * Rename get/setXXXValue to get/setXXXWrapper. (#6295) - - Ruby - * Remove to_hash methods. (#6166) - - -2019-04-29 version 3.8.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - - C++ - * Use std::atomic in case of myriad2 platform - * Always declare enums to be int-sized - * Added DebugString() and ShortDebugString() methods on MessageLite - * Specialized different parse loop control flows - * Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration. - * Move to an internal MACRO for parser validity checks. - * Improve map parsing performance. - * Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement - * Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection. - * Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2. - * Further improvements to cut binary size. - * Prepare to make MergePartialFromCodedStream non-virtual. - * A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag. - * Add a note of caution to the comments around skip in CodedOutputStream. - * Simplify end check. - * Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call. - * Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more. - * Improve the parser. - * [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class. - * Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage. - * Add a warning if a field name doesn't match the style guide. - * Fix TextFormat not round-trip correctly when float value is max float. - * Added locationed info for some errors at compiler - * Python reserved keywords are now working with getattr()/setattr() for most descriptors. - * Added AllowUnknownField() in text_format - * Append '_' to C++ reserved keywords for message, enum, extension - * Fix MSVC warning C4244 in protobuf's parse_context.h. - * Updating Iterators to be compatible with C++17 in MSVC. - * Use capability annotation in mutex.h - * Fix "UndefinedBehaviorSanitizer: cfi-bad-type" - * CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms. - * Removed vestigial wire_format_lite_inl.h - - C# - * Added System.Memory dependency. - - Java - * Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin. - * Change Extension getMessageDefaultInstance() to return Message instead of MessageLite. - * Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing. - * Release new Javalite runtime. - * Show warning in case potential file name conflict. - * Allow Java reserved keywords to be used in extensions. - * Added setAllowUnknownFields() in text format - * Add memoization to ExtensionRegistryLite.getEmptyRegistry() - * Improve performance of CodedOutputStream.writeUInt32NoTag - * Add an optimized mismatch-finding algorithm to UnsafeUtil. - * When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE. - * Minor optimization to RopeByteString.PieceIterator - - JavaScript - * Simplify generated toObject code when the default value is used. - - Python - * Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value). - * Added double_format option in text format printer. - * Added iter and __contains__ to extension dict - * Added allow_unknown_field option in python text format parser - * Fixed Timestamp.ToDatetime() loses precision issue - * Support unknown field in text format printer. - * Float field will be convert to inf if bigger than struct.unpack('f', b'\xff\xff\x7f\x7f')[0] which is about 3.4028234664e+38, - convert to -inf if smaller than -3.4028234664e+38 - * Allowed casting str->bytes in Message.__setstate__ - - Ruby - * Helper methods to get enum name for Ruby. - - -2019-01-24 version 3.7.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - - C++ - * Introduced new MOMI (maybe-outside-memory-interval) parser. - * Add an option to json_util to parse enum as case-insensitive. In the future, enum parsing in json_util will become case-sensitive. - * Added conformance test for enum aliases - * Added support for --cpp_out=speed:... - * Added use of C++ override keyword where appropriate - * Many other cleanups and fixes. - - Java - * Fix illegal reflective access warning in JDK 9+ - * Add BOM - - Python - * Added Python 3.7 compatibility. - * Modified ParseFromString to return bytes parsed . - * Introduce Proto C API. - * FindFileContainingSymbol in descriptor pool is now able to find field and enum values. - * reflection.MakeClass() and reflection.ParseMessage() are deprecated. - * Added DescriptorPool.FindMethodByName() method in pure python (c extension alreay has it) - * Flipped proto3 to preserve unknown fields by default. - * Added support for memoryview in python3 proto message parsing. - * Added MergeFrom for repeated scalar fields in c extension (pure python already has it) - * Surrogates are now rejected at setters in python3. - * Added public unknown field API. - * RecursionLimit is also set to max if allow_oversize_protos is enabled. - * Disallow duplicate scalars in proto3 text_format parse. - * Fix some segment faults for c extension map field. - - PHP - * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_php_c.txt. - * Supports php 7.3 - * Added helper methods to convert between enum values and names. - * Allow setting/getting wrapper message fields using primitive values. - * Various bug fixes. - - Ruby - * Ruby 2.6 support. - * Drops support for ruby < 2.3. - * Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_ruby.txt. - * Json parsing can specify an option to ignore unknown fields: msg.decode_json(data, {ignore_unknown_fields: true}). - * Added support for proto2 syntax (partially). - * Various bug fixes. - - Csharp - * More support for FieldMask include merge, intersect and more. - * Increasing the default recursion limit to 100. - * Support loading FileDescriptors dynamically. - * Provide access to comments from descriptors. - * Added Any.Is method. - * Compatible with C# 6 - * Added IComparable and comparison operators on Timestamp. - - Objective C - * Add ability to introspect list of enum values (#4678) - * Copy the value when setting message/data fields (#5215) - * Support suppressing the objc package prefix checks on a list of files (#5309) - * More complete keyword and NSObject method (via categories) checks for field names, can result in more fields being rename, but avoids the collisions at runtime (#5289) - * Small fixes to TextFormat generation for extensions (#5362) - * Provide more details/context in deprecation messages (#5412) - * Array/Dictionary enumeration blocks NS_NOESCAPE annotation for Swift (#5421) - * Properly annotate extensions for ARC when their names imply behaviors (#5427) - * Enum alias name collision improvements (#5480) - - -2018-07-27 version 3.6.1 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - - C++ - * Introduced workaround for Windows issue with std::atomic and std::once_flag - initialization (#4777, #4773). - - PHP - * Added compatibility with PHP 7.3 (#4898). - - Ruby - * Fixed Ruby crash involving Any encoding (#4718). - -2018-06-01 version 3.6.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - - C++ - * Starting from this release, we now require C++11. For those we cannot yet - upgrade to C++11, we will try to keep the 3.5.x branch updated with - critical bug fixes only. If you have any concerns about this, please - comment on issue #2780. - * Moved to C++11 types like std::atomic and std::unique_ptr and away from our - old custom-built equivalents. - * Added support for repeated message fields in lite protos using implicit - weak fields. This is an experimental feature that allows the linker to - strip out more unused messages than previously was possible. - * Fixed SourceCodeInfo for interpreted options and extension range options. - * Fixed always_print_enums_as_ints option for JSON serialization. - * Added support for ignoring unknown enum values when parsing JSON. - * Create std::string in Arena memory. - * Fixed ValidateDateTime to correctly check the day. - * Fixed bug in ZeroCopyStreamByteSink. - * Various other cleanups and fixes. - - Java - * Dropped support for Java 6. - * Added a UTF-8 decoder that uses Unsafe to directly decode a byte buffer. - * Added deprecation annotations to generated code for deprecated oneof - fields. - * Fixed map field serialization in DynamicMessage. - * Cleanup and documentation for Java Lite runtime. - * Various other fixes and cleanups - * Fixed unboxed arraylists to handle an edge case - * Improved performance for copying between unboxed arraylists - * Fixed lite protobuf to avoid Java compiler warnings - * Improved test coverage for lite runtime - * Performance improvements for lite runtime - - Python - * Fixed bytes/string map key incompatibility between C++ and pure-Python - implementations (issue #4029) - * Added __init__.py files to compiler and util subpackages - * Use /MT for all Windows versions - * Fixed an issue affecting the Python-C++ implementation when used with - Cython (issue #2896) - * Various text format fixes - * Various fixes to resolve behavior differences between the pure-Python and - Python-C++ implementations - - PHP - * Added php_metadata_namespace to control the file path of generated metadata - file. - * Changed generated classes of nested message/enum. E.g., Foo.Bar, which - previously generates Foo_Bar, now generates Foo/Bar - * Added array constructor. When creating a message, users can pass a php - array whose content is field name to value pairs into constructor. The - created message will be initialized according to the array. Note that - message field should use a message value instead of a sub-array. - * Various bug fixes. - - Objective-C - * We removed some helper class methods from GPBDictionary to shrink the size - of the library, the functionary is still there, but you may need to do some - specific +alloc / -init… methods instead. - * Minor improvements in the performance of object field getters/setters by - avoiding some memory management overhead. - * Fix a memory leak during the raising of some errors. - * Make header importing completely order independent. - * Small code improvements for things the undefined behaviors compiler option - was flagging. - - Ruby - * Added ruby_package file option to control the module of generated class. - * Various bug fixes. - - Javascript - * Allow setting string to int64 field. - - Csharp - * Unknown fields are now parsed and then sent back on the wire. They can be - discarded at parse time via a CodedInputStream option. - * Movement towards working with .NET 3.5 and Unity - * Expression trees are no longer used - * AOT generics issues in Unity/il2cpp have a workaround (see this commit for - details) - * Floating point values are now compared bitwise (affects NaN value - comparisons) - * The default size limit when parsing is now 2GB rather than 64MB - * MessageParser now supports parsing from a slice of a byte array - * JSON list parsing now accepts null values where the underlying proto - representation does - -2017-12-20 version 3.5.1 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - Planned Future Changes - * Make C++ implementation C++11 only: we plan to require C++11 to build - protobuf code starting from 3.6.0 release. Please join this github issue: - https://github.com/protocolbuffers/protobuf/issues/2780 to provide your feedback. - - protoc - * Fixed a bug introduced in 3.5.0 and protoc in Windows now accepts non-ascii - characters in paths again. - - C++ - * Removed several usages of C++11 features in the code base. - * Fixed some compiler warnings. - - PHP - * Fixed memory leak in C-extension implementation. - * Added discardUnknokwnFields API. - * Removed duplicatd typedef in C-extension headers. - * Avoided calling private php methods (timelib_update_ts). - * Fixed Any.php to use fully-qualified name for DescriptorPool. - - Ruby - * Added Google_Protobuf_discard_unknown for discarding unknown fields in - messages. - - C# - * Unknown fields are now preserved by default. - * Floating point values are now bitwise compared, affecting message equality - check and Contains() API in map and repeated fields. - - -2017-11-13 version 3.5.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - Planned Future Changes - * Make C++ implementation C++11 only: we plan to require C++11 to build - protobuf code starting from 3.6.0 release. Please join this github issue: - https://github.com/protocolbuffers/protobuf/issues/2780 to provide your feedback. - - General - * Unknown fields are now preserved in proto3 for most of the language - implementations for proto3 by default. See the per-language section for - details. - * reserve keyword are now supported in enums - - C++ - * Proto3 messages are now preserving unknown fields by default. If you rely on - unknowns fields being dropped. Please use DiscardUnknownFields() explicitly. - * Deprecated the unsafe_arena_release_* and unsafe_arena_add_allocated_* - methods for string fields. - * Added move constructor and move assignment to RepeatedField, - RepeatedPtrField and google::protobuf::Any. - * Added perfect forwarding in Arena::CreateMessage - * In-progress experimental support for implicit weak fields with lite protos. - This feature allows the linker to strip out more unused messages and reduce - binary size. - * Various performance optimizations. - - Java - * Proto3 messages are now preserving unknown fields by default. If you’d like - to drop unknown fields, please use the DiscardUnknownFieldsParser API. For - example: - Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser()); - Foo foo = parser.parseFrom(input); - * Added a new CodedInputStream decoder for Iterable with direct - ByteBuffers. - * TextFormat now prints unknown length-delimited fields as messages if - possible. - * FieldMaskUtil.merge() no longer creates unnecessary empty messages when a - message field is unset in both source message and destination message. - * Various performance optimizations. - - Python - * Proto3 messages are now preserving unknown fields by default. Use - message.DiscardUnknownFields() to drop unknown fields. - * Add FieldDescriptor.file in generated code. - * Add descriptor pool FindOneofByName in pure python. - * Change unknown enum values into unknown field set . - * Add more Python dict/list compatibility for Struct/ListValue. - * Add utf-8 support for text_format.Merge()/Parse(). - * Support numeric unknown enum values for proto3 JSON format. - * Add warning for Unexpected end-group tag in cpp extension. - - PHP - * Proto3 messages are now preserving unknown fields. - * Provide well known type messages in runtime. - * Add prefix ‘PB’ to generated class of reserved names. - * Fixed all conformance tests for encode/decode json in php runtime. C - extension needs more work. - - Objective-C - * Fixed some issues around copying of messages with unknown fields and then - mutating the unknown fields in the copy. - - C# - * Added unknown field support in JsonParser. - * Fixed oneof message field merge. - * Simplify parsing messages from array slices. - - Ruby - * Unknown fields are now preserved by default. - * Fixed several bugs for segment fault. - - Javascript - * Decoder can handle both paced and unpacked data no matter how the proto is - defined. - * Decoder now accept long varint for 32 bit integers. - - -2017-08-14 version 3.4.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - Planned Future Changes - * There are some changes that are not included in this release but are planned - for the near future - - Preserve unknown fields in proto3: We are going to bring unknown fields - back into proto3. In this release, some languages start to support - preserving unknown fields in proto3, controlled by flags/options. Some - languages also introduce explicit APIs to drop unknown fields for - migration. Please read the change log sections by languages for details. - For general timeline and plan: - - https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view - - For issues and discussions: - - https://github.com/protocolbuffers/protobuf/issues/272 - - - Make C++ implementation C++11 only: we plan to require C++11 to build - protobuf code starting from 3.5.0 or 3.6.0 release, after unknown fields - semantic changes are finished. Please join this - github issue: - - https://github.com/protocolbuffers/protobuf/issues/2780 - - to provide your feedback. - - General - * Extension ranges now accept options and are customizable. - * "reserve" keyword now supports “max” in field number ranges, - e.g. reserve 1000 to max; - - C++ - * Proto3 messages are now able to preserve unknown fields. The default - behavior is still to drop unknowns, which will be flipped in a future - release. If you rely on unknowns fields being dropped. Please use - Message::DiscardUnknownFields() explicitly. - * Packable proto3 fields are now packed by default in serialization. - * Following C++11 features are introduced when C++11 is available: - - move-constructor and move-assignment are introduced to messages - - Repeated fields constructor now takes std::initializer_list - - rvalue setters are introduced for string fields - * Experimental Table-Driven parsing and serialization available to test. To - enable it, pass in table_driven_parsing table_driven_serialization protoc - generator flags for C++ - - $ protoc --cpp_out=table_driven_parsing,table_driven_serialization:./ \ - test.proto - - * lite generator parameter supported by the generator. Once set, all generated - files, use lite runtime regardless of the optimizer_for setting in the - .proto file. - * Various optimizations to make C++ code more performant on PowerPC platform - * Fixed maps data corruption when the maps are modified by both reflection API - and generated API. - * Deterministic serialization on maps reflection now uses stable sort. - * file() accessors are introduced to various *Descriptor classes to make - writing template function easier. - * ByteSize() and SpaceUsed() are deprecated.Use ByteSizeLong() and - SpaceUsedLong() instead - * Consistent hash function is used for maps in DEBUG and NDEBUG build. - * "using namespace std" is removed from stubs/common.h - * Various performance optimizations and bug fixes - - Java - * Introduced new parser API DiscardUnknownFieldsParser in preparation of - proto3 unknown fields preservation change. Users who want to drop unknown - fields should migrate to use this new parser API. For example: - - Parser parser = DiscardUnknownFieldsParser.wrap(Foo.parser()); - Foo foo = parser.parseFrom(input); - - * Introduced new TextFormat API printUnicodeFieldValue() that prints field - value without escaping unicode characters. - * Added Durations.compare(Duration, Duration) and - Timestamps.compare(Timestamp, Timestamp). - * JsonFormat now accepts base64url encoded bytes fields. - * Optimized CodedInputStream to do less copies when parsing large bytes - fields. - * Optimized TextFormat to allocate less memory when printing. - - Python - * SerializeToString API is changed to SerializeToString(self, **kwargs), - deterministic parameter is accepted for deterministic serialization. - * Added sort_keys parameter in json format to make the output deterministic. - * Added indent parameter in json format. - * Added extension support in json format. - * Added __repr__ support for repeated field in cpp implementation. - * Added file in FieldDescriptor. - * Added pretty-print filter to text format. - * Services and method descriptors are always printed even if generic_service - option is turned off. - * Note: AppEngine 2.5 is deprecated on June 2017 that AppEngine 2.5 will - never update protobuf runtime. Users who depend on AppEngine 2.5 should use - old protoc. - - PHP - * Support PHP generic services. Specify file option php_generic_service=true - to enable generating service interface. - * Message, repeated and map fields setters take value instead of reference. - * Added map iterator in c extension. - * Support json  encode/decode. - * Added more type info in getter/setter phpdoc - * Fixed the problem that c extension and php implementation cannot be used - together. - * Added file option php_namespace to use custom php namespace instead of - package. - * Added fluent setter. - * Added descriptor API in runtime for custom encode/decode. - * Various bug fixes. - - Objective-C - * Fix for GPBExtensionRegistry copying and add tests. - * Optimize GPBDictionary.m codegen to reduce size of overall library by 46K - per architecture. - * Fix some cases of reading of 64bit map values. - * Properly error on a tag with field number zero. - * Preserve unknown fields in proto3 syntax files. - * Document the exceptions on some of the writing apis. - - C# - * Implemented IReadOnlyDictionary in MapField - * Added TryUnpack method for Any message in addition to Unpack. - * Converted C# projects to MSBuild (csproj) format. - - Ruby - * Several bug fixes. - - Javascript - * Added support of field option js_type. Now one can specify the JS type of a - 64-bit integer field to be string in the generated code by adding option - [jstype = JS_STRING] on the field. - -2017-04-05 version 3.3.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript) - Planned Future Changes - * There are some changes that are not included in this release but are - planned for the near future: - - Preserve unknown fields in proto3: please read this doc: - - https://docs.google.com/document/d/1KMRX-G91Aa-Y2FkEaHeeviLRRNblgIahbsk4wA14gRk/view - - for the timeline and follow up this github issue: - - https://github.com/protocolbuffers/protobuf/issues/272 - - for discussion. - - Make C++ implementation C++11 only: we plan to require C++11 to build - protobuf code starting from 3.4.0 or 3.5.0 release. Please join this - github issue: - - https://github.com/protocolbuffers/protobuf/issues/2780 - - to provide your feedback. - - C++ - * Fixed map fields serialization of DynamicMessage to correctly serialize - both key and value regardless of their presence. - * Parser now rejects field number 0 correctly. - * New API Message::SpaceUsedLong() that’s equivalent to - Message::SpaceUsed() but returns the value in size_t. - * JSON support - - New flag always_print_enums_as_ints in JsonPrintOptions. - - New flag preserve_proto_field_names in JsonPrintOptions. It will instruct - the JSON printer to use the original field name declared in the .proto - file instead of converting them to lowerCamelCase when printing JSON. - - JsonPrintOptions.always_print_primtive_fields now works for oneof message - fields. - - Fixed a bug that doesn’t allow different fields to set the same json_name - value. - - Fixed a performance bug that causes excessive memory copy when printing - large messages. - * Various performance optimizations. - - Java - * Map field setters eagerly validate inputs and throw NullPointerExceptions - as appropriate. - * Added ByteBuffer overloads to the generated parsing methods and the Parser - interface. - * proto3 enum's getNumber() method now throws on UNRECOGNIZED values. - * Output of JsonFormat is now locale independent. - - Python - * Added FindServiceByName() in the pure-Python DescriptorPool. This works only - for descriptors added with DescriptorPool.Add(). Generated descriptor_pool - does not support this yet. - * Added a descriptor_pool parameter for parsing Any in text_format.Parse(). - * descriptor_pool.FindFileContainingSymbol() now is able to find nested - extensions. - * Extending empty [] to repeated field now sets parent message presence. - - PHP - * Added file option php_class_prefix. The prefix will be prepended to all - generated classes defined in the file. - * When encoding, negative int32 values are sign-extended to int64. - * Repeated/Map field setter accepts a regular PHP array. Type checking is - done on the array elements. - * encode/decode are renamed to serializeToString/mergeFromString. - * Added mergeFrom, clear method on Message. - * Fixed a bug that oneof accessor didn’t return the field name that is - actually set. - * C extension now works with php7. - * This is the first GA release of PHP. We guarantee that old generated code - can always work with new runtime and new generated code. - - Objective-C - * Fixed help for GPBTimestamp for dates before the epoch that contain - fractional seconds. - * Added GPBMessageDropUnknownFieldsRecursively() to remove unknowns from a - message and any sub messages. - * Addressed a threading race in extension registration/lookup. - * Increased the max message parsing depth to 100 to match the other languages. - * Removed some use of dispatch_once in favor of atomic compare/set since it - needs to be heap based. - * Fixes for new Xcode 8.3 warnings. - - C# - * Fixed MapField.Values.CopyTo, which would throw an exception unnecessarily - if provided exactly the right size of array to copy to. - * Fixed enum JSON formatting when multiple names mapped to the same numeric - value. - * Added JSON formatting option to format enums as integers. - * Modified RepeatedField to implement IReadOnlyList. - * Introduced the start of custom option handling; it's not as pleasant as it - might be, but the information is at least present. We expect to extend code - generation to improve this in the future. - * Introduced ByteString.FromStream and ByteString.FromStreamAsync to - efficiently create a ByteString from a stream. - * Added whole-message deprecation, which decorates the class with [Obsolete]. - - Ruby - * Fixed Message#to_h for messages with map fields. - * Fixed memcpy() in binary gems to work for old glibc, without breaking the - build for non-glibc libc’s like musl. - - Javascript - * Added compatibility tests for version 3.0.0. - * Added conformance tests. - * Fixed serialization of extensions: we need to emit a value even if it is - falsy (like the number 0). - * Use closurebuilder.py in favor of calcdeps.py for compiling JavaScript. - -2017-01-23 version 3.2.0 (C++/Java/Python/PHP/Ruby/Objective-C/C#/JavaScript/Lite) - General - * Added protoc version number to protoc plugin protocol. It can be used by - protoc plugin to detect which version of protoc is used with the plugin and - mitigate known problems in certain version of protoc. - - C++ - * The default parsing byte size limit has been raised from 64MB to 2GB. - * Added rvalue setters for non-arena string fields. - * Enabled debug logging for Android. - * Fixed a double-free problem when using Reflection::SetAllocatedMessage() - with extension fields. - * Fixed several deterministic serialization bugs: - * MessageLite::SerializeAsString() now respects the global deterministic - serialization flag. - * Extension fields are serialized deterministically as well. Fixed protocol - compiler to correctly report importing-self as an error. - * Fixed FileDescriptor::DebugString() to print custom options correctly. - * Various performance/codesize optimizations and cleanups. - - Java - * The default parsing byte size limit has been raised from 64MB to 2GB. - * Added recursion limit when parsing JSON. - * Fixed a bug that enumType.getDescriptor().getOptions() doesn't have custom - options. - * Fixed generated code to support field numbers up to 2^29-1. - - Python - * You can now assign NumPy scalars/arrays (np.int32, np.int64) to protobuf - fields, and assigning other numeric types has been optimized for - performance. - * Pure-Python: message types are now garbage-collectable. - * Python/C++: a lot of internal cleanup/refactoring. - - PHP (Alpha) - * For 64-bit integers type (int64/uint64/sfixed64/fixed64/sint64), use PHP - integer on 64-bit environment and PHP string on 32-bit environment. - * PHP generated code also conforms to PSR-4 now. - * Fixed ZTS build for c extension. - * Fixed c extension build on Mac. - * Fixed c extension build on 32-bit linux. - * Fixed the bug that message without namespace is not found in the descriptor - pool. (#2240) - * Fixed the bug that repeated field is not iterable in c extension. - * Message names Empty will be converted to GPBEmpty in generated code. - * Added phpdoc in generated files. - * The released API is almost stable. Unless there is large problem, we won't - change it. See - https://developers.google.com/protocol-buffers/docs/reference/php-generated - for more details. - - Objective-C - * Added support for push/pop of the stream limit on CodedInputStream for - anyone doing manual parsing. - - C# - * No changes. - - Ruby - * Message objects now support #respond_to? for field getters/setters. - * You can now compare “message == non_message_object” and it will return false - instead of throwing an exception. - * JRuby: fixed #hashCode to properly reflect the values in the message. - - Javascript - * Deserialization of repeated fields no longer has quadratic performance - behavior. - * UTF-8 encoding/decoding now properly supports high codepoints. - * Added convenience methods for some well-known types: Any, Struct, and - Timestamp. These make it easier to convert data between native JavaScript - types and the well-known protobuf types. - -2016-09-23 version 3.1.0 (C++/Java/Python/PHP/Ruby/Objective-C/C#/JavaScript/Lite) - General - * Proto3 support in PHP (alpha). - * Various bug fixes. - - C++ - * Added MessageLite::ByteSizeLong() that’s equivalent to - MessageLite::ByteSize() but returns the value in size_t. Useful to check - whether a message is over the 2G size limit that protobuf can support. - * Moved default_instances to global variables. This allows default_instance - addresses to be known at compile time. - * Adding missing generic gcc 64-bit atomicops. - * Restore New*Callback into google::protobuf namespace since these are used - by the service stubs code - * JSON support. - * Fixed some conformance issues. - * Fixed a JSON serialization bug for bytes fields. - - Java - * Fixed a bug in TextFormat that doesn’t accept empty repeated fields (i.e., - “field: [ ]”). - * JSON support - * Fixed JsonFormat to do correct snake_case-to-camelCase conversion for - non-style-conforming field names. - * Fixed JsonFormat to parse empty Any message correctly. - * Added an option to JsonFormat.Parser to ignore unknown fields. - * Experimental API - * Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into - ByteString without copy. - - Python - * JSON support - * Fixed some conformance issues. - - PHP (Alpha) - * We have added the proto3 support for PHP via both a pure PHP package and a - native c extension. The pure PHP package is intended to provide usability - to wider range of PHP platforms, while the c extension is intended to - provide higher performance. Both implementations provide the same runtime - APIs and share the same generated code. Users don’t need to re-generate - code for the same proto definition when they want to switch the - implementation later. The pure PHP package is included in the php/src - directory, and the c extension is included in the php/ext directory. - - Both implementations provide idiomatic PHP APIs: - * All messages and enums are defined as PHP classes. - * All message fields can only be accessed via getter/setter. - * Both repeated field elements and map elements are stored in containers - that act like a normal PHP array. - - Unlike several existing third-party PHP implementations for protobuf, our - implementations are built on a "strongly-typed" philosophy: message fields - and array/map containers will throw exceptions eagerly when values of the - incorrect type (not including those that can be type converted, e.g., - double <-> integer <-> numeric string) are inserted. - - Currently, pure PHP runtime supports php5.5, 5.6 and 7 on linux. C - extension runtime supports php5.5 and 5.6 on linux. - - See php/README.md for more details about installment. See - https://developers.google.com/protocol-buffers/docs/phptutorial for more - details about APIs. - - Objective-C - * Helpers are now provided for working the Any well known type (see - GPBWellKnownTypes.h for the api additions). - * Some improvements in startup code (especially when extensions aren’t used). - - Javascript - * Fixed missing import of jspb.Map - * Fixed valueWriterFn variable name - - Ruby - * Fixed hash computation for JRuby's RubyMessage - * Make sure map parsing frames are GC-rooted. - * Added API support for well-known types. - - C# - * Removed check on dependency in the C# reflection API. - -2016-09-06 version 3.0.2 (C++/Java/Python/Ruby/Objective-C/C#/JavaScript/Lite) - General - * Various bug fixes. - - Objective C - * Fix for oneofs in proto3 syntax files where fields were set to the zero - value. - * Fix for embedded null character in strings. - * CocoaDocs support - - Ruby - * Fixed memory corruption bug in parsing that could occur under GC pressure. - - Javascript - * jspb.Map is now properly exported to CommonJS modules. - - C# - * Removed legacy_enum_values flag. - - -2016-07-27 version 3.0.0 (C++/Java/Python/Ruby/Objective-C/C#/JavaScript/Lite) - General - * This log only contains changes since the beta-4 release. Summarized change - log since the last stable release (v2.6.1) can be found in the github - release page. - - Compatibility Notice - * v3.0.0 is the first API stable release of the v3.x series. We do not expect - any future API breaking changes. - * For C++, Java Lite and Objective-C, source level compatibility is - guaranteed. Upgrading from v3.0.0 to newer minor version releases will be - source compatible. For example, if your code compiles against protobuf - v3.0.0, it will continue to compile after you upgrade protobuf library to - v3.1.0. - * For other languages, both source level compatibility and binary level - compatibility are guaranteed. For example, if you have a Java binary built - against protobuf v3.0.0. After switching the protobuf runtime binary to - v3.1.0, your built binary should continue to work. - * Compatibility is only guaranteed for documented API and documented - behaviors. If you are using undocumented API (e.g., use anything in the C++ - internal namespace), it can be broken by minor version releases in an - undetermined manner. - - Ruby - * When you assign a string field `a.string_field = "X"`, we now call - #encode(UTF-8) on the string and freeze the copy. This saves you from - needing to ensure the string is already encoded as UTF-8. It also prevents - you from mutating the string after it has been assigned (this is how we - ensure it stays valid UTF-8). - * The generated file for `foo.proto` is now `foo_pb.rb` instead of just - `foo.rb`. This makes it easier to see which imports/requires are from - protobuf generated code, and also prevents conflicts with any `foo.rb` file - you might have written directly in Ruby. It is a backward-incompatible - change: you will need to update all of your `require` statements. - * For package names like `foo_bar`, we now translate this to the Ruby module - `FooBar`. This is more idiomatic Ruby than what we used to do (`Foo_bar`). - - JavaScript - * Scalar fields like numbers and boolean now return defaults instead of - `undefined` or `null` when they are unset. You can test for presence - explicitly by calling `hasFoo()`, which we now generate for scalar fields. - - Java Lite - * Java Lite is now implemented as a separate plugin, maintained in the - `javalite` branch. Both lite runtime and protoc artifacts will be available - in Maven. - - C# - * Target platforms now .NET 4.5, selected portable subsets and .NET Core. - * legacy_enum_values option is no longer supported. - -2016-07-15 version 3.0.0-beta-4 (C++/Java/Python/Ruby/Objective-C/C#/JavaScript) - General - * Added a deterministic serialization API for C++. The deterministic - serialization guarantees that given a binary, equal messages will be - serialized to the same bytes. This allows applications like MapReduce to - group equal messages based on the serialized bytes. The deterministic - serialization is, however, NOT canonical across languages; it is also - unstable across different builds with schema changes due to unknown fields. - Users who need canonical serialization, e.g. persistent storage in a - canonical form, fingerprinting, etc, should define their own - canonicalization specification and implement the serializer using reflection - APIs rather than relying on this API. - * Added OneofOptions. You can now define custom options for oneof groups. - import "google/protobuf/descriptor.proto"; - extend google.protobuf.OneofOptions { - optional int32 my_oneof_extension = 12345; - } - message Foo { - oneof oneof_group { - (my_oneof_extension) = 54321; - ... - } - } - - C++ (beta) - * Introduced a deterministic serialization API in - CodedOutputStream::SetSerializationDeterministic(bool). See the notes about - deterministic serialization in the General section. - * Added google::protobuf::Map::swap() to swap two map fields. - * Fixed a memory leak when calling Reflection::ReleaseMessage() on a message - allocated on arena. - * Improved error reporting when parsing text format protos. - * JSON - - Added a new parser option to ignore unknown fields when parsing JSON. - - Added convenient methods for message to/from JSON conversion. - * Various performance optimizations. - - Java (beta) - * File option "java_generate_equals_and_hash" is now deprecated. equals() and - hashCode() methods are generated by default. - * Added a new JSON printer option "omittingInsignificantWhitespace" to produce - a more compact JSON output. The printer will pretty-print by default. - * Updated Java runtime to be compatible with 2.5.0/2.6.1 generated protos. - - Python (beta) - * Added support to pretty print Any messages in text format. - * Added a flag to ignore unknown fields when parsing JSON. - * Bugfix: "@type" field of a JSON Any message is now correctly put before - other fields. - - Objective-C (beta) - * Updated the code to support compiling with more compiler warnings - enabled. (Issue 1616) - * Exposing more detailed errors for parsing failures. (PR 1623) - * Small (breaking) change to the naming of some methods on the support classes - for map<>. There were collisions with the system provided KVO support, so - the names were changed to avoid those issues. (PR 1699) - * Fixed for proper Swift bridging of error handling during parsing. (PR 1712) - * Complete support for generating sources that will go into a Framework and - depend on generated sources from other Frameworks. (Issue 1457) - - C# (beta) - * RepeatedField optimizations. - * Support for .NET Core. - * Minor bug fixes. - * Ability to format a single value in JsonFormatter (advanced usage only). - * Modifications to attributes applied to generated code. - - Javascript (alpha) - * Maps now have a real map API instead of being treated as repeated fields. - * Well-known types are now provided in the google-protobuf package, and the - code generator knows to require() them from that package. - * Bugfix: non-canonical varints are correctly decoded. - - Ruby (alpha) - * Accessors for oneof fields now return default values instead of nil. - - Java Lite - * Java lite support is removed from protocol compiler. It will be supported - as a protocol compiler plugin in a separate code branch. - -2016-05-16 version 3.0.0-beta-3 (C++/Java/Python/Ruby/Nano/Objective-C/C#/JavaScript) - General - * Supported Proto3 lite-runtime in C++/Java for mobile platforms. - * Any type now supports APIs to specify prefixes other than - type.googleapis.com - * Removed javanano_use_deprecated_package option; Nano will always has its own - ".nano" package. - - C++ (Beta) - * Improved hash maps. - - Improved hash maps comments. In particular, please note that equal hash - maps will not necessarily have the same iteration order and - serialization. - - Added a new hash maps implementation that will become the default in a - later release. - * Arenas - - Several inlined methods in Arena were moved to out-of-line to improve - build performance and code size. - - Added SpaceAllocatedAndUsed() to report both space used and allocated - - Added convenient class UnsafeArenaAllocatedRepeatedPtrFieldBackInserter - * Any - - Allow custom type URL prefixes in Any packing. - - TextFormat now expand the Any type rather than printing bytes. - * Performance optimizations and various bug fixes. - - Java (Beta) - * Introduced an ExperimentalApi annotation. Annotated APIs are experimental - and are subject to change in a backward incompatible way in future releases. - * Introduced zero-copy serialization as an ExperimentalApi - - Introduction of the `ByteOutput` interface. This is similar to - `OutputStream` but provides semantics for lazy writing (i.e. no - immediate copy required) of fields that are considered to be immutable. - - `ByteString` now supports writing to a `ByteOutput`, which will directly - expose the internals of the `ByteString` (i.e. `byte[]` or `ByteBuffer`) - to the `ByteOutput` without copying. - - `CodedOutputStream` now supports writing to a `ByteOutput`. `ByteString` - instances that are too large to fit in the internal buffer will be - (lazily) written to the `ByteOutput` directly. - - This allows applications using large `ByteString` fields to avoid - duplication of these fields entirely. Such an application can supply a - `ByteOutput` that chains together the chunks received from - `CodedOutputStream` before forwarding them onto the IO system. - * Other related changes to `CodedOutputStream` - - Additional use of `sun.misc.Unsafe` where possible to perform fast - access to `byte[]` and `ByteBuffer` values and avoiding unnecessary - range checking. - - `ByteBuffer`-backed `CodedOutputStream` now writes directly to the - `ByteBuffer` rather than to an intermediate array. - * Improved lite-runtime. - - Lite protos now implement deep equals/hashCode/toString - - Significantly improved the performance of Builder#mergeFrom() and - Builder#mergeDelimitedFrom() - * Various bug fixes and small feature enhancement. - - Fixed stack overflow when in hashCode() for infinite recursive oneofs. - - Fixed the lazy field parsing in lite to merge rather than overwrite. - - TextFormat now supports reporting line/column numbers on errors. - - Updated to add appropriate @Override for better compiler errors. - - Python (Beta) - * Added JSON format for Any, Struct, Value and ListValue - * [ ] is now accepted for both repeated scalar fields and repeated message - fields in text format parser. - * Numerical field name is now supported in text format. - * Added DiscardUnknownFields API for python protobuf message. - - Objective-C (Beta) - * Proto comments now come over as HeaderDoc comments in the generated sources - so Xcode can pick them up and display them. - * The library headers have been updated to use HeaderDoc comments so Xcode can - pick them up and display them. - * The per message and per field overhead in both generated code and runtime - object sizes was reduced. - * Generated code now include deprecated annotations when the proto file - included them. - - C# (Beta) - In general: some changes are breaking, which require regenerating messages. - Most user-written code will not be impacted *except* for the renaming of enum - values. - - * Allow custom type URL prefixes in `Any` packing, and ignore them when - unpacking - * `protoc` is now in a separate NuGet package (Google.Protobuf.Tools) - * New option: `internal_access` to generate internal classes - * Enum values are now PascalCased, and if there's a prefix which matches the - name of the enum, that is removed (so an enum `COLOR` with a value - `COLOR_BLUE` would generate a value of just `Blue`). An option - (`legacy_enum_values`) is temporarily available to disable this, but the - option will be removed for GA. - * `json_name` option is now honored - * If group tags are encountered when parsing, they are validated more - thoroughly (although we don't support actual groups) - * NuGet dependencies are better specified - * Breaking: `Preconditions` is renamed to `ProtoPreconditions` - * Breaking: `GeneratedCodeInfo` is renamed to `GeneratedClrTypeInfo` - * `JsonFormatter` now allows writing to a `TextWriter` - * New interface, `ICustomDiagnosticMessage` to allow more compact - representations from `ToString` - * `CodedInputStream` and `CodedOutputStream` now implement `IDisposable`, - which simply disposes of the streams they were constructed with - * Map fields no longer support null values (in line with other languages) - * Improvements in JSON formatting and parsing - - Javascript (Alpha) - * Better support for "bytes" fields: bytes fields can be read as either a - base64 string or UInt8Array (in environments where TypedArray is supported). - * New support for CommonJS imports. This should make it easier to use the - JavaScript support in Node.js and tools like WebPack. See js/README.md for - more information. - * Some significant internal refactoring to simplify and modularize the code. - - Ruby (Alpha) - * JSON serialization now properly uses camelCased names, with a runtime option - that will preserve original names from .proto files instead. - * Well-known types are now included in the distribution. - * Release now includes binary gems for Windows, Mac, and Linux instead of just - source gems. - * Bugfix for serializing oneofs. - - C++/Java Lite (Alpha) - A new "lite" generator parameter was introduced in the protoc for C++ and - Java for Proto3 syntax messages. Example usage: - - ./protoc --cpp_out=lite:$OUTPUT_PATH foo.proto - - The protoc will treat the current input and all the transitive dependencies - as LITE. The same generator parameter must be used to generate the - dependencies. - - In Proto3 syntax files, "optimized_for=LITE_RUNTIME" is no longer supported. - - -2015-12-30 version 3.0.0-beta-2 (C++/Java/Python/Ruby/Nano/Objective-C/C#/JavaScript) - General - * Introduced a new language implementation: JavaScript. - * Added a new field option "json_name". By default proto field names are - converted to "lowerCamelCase" in proto3 JSON format. This option can be - used to override this behavior and specify a different JSON name for the - field. - * Added conformance tests to ensure implementations are following proto3 JSON - specification. - - C++ (Beta) - * Various bug fixes and improvements to the JSON support utility: - - Duplicate map keys in JSON are now rejected (i.e., translation will - fail). - - Fixed wire-format for google.protobuf.Value/ListValue. - - Fixed precision loss when converting google.protobuf.Timestamp. - - Fixed a bug when parsing invalid UTF-8 code points. - - Fixed a memory leak. - - Reduced call stack usage. - - Java (Beta) - * Cleaned up some unused methods on CodedOutputStream. - * Presized lists for packed fields during parsing in the lite runtime to - reduce allocations and improve performance. - * Improved the performance of unknown fields in the lite runtime. - * Introduced UnsafeByteStrings to support zero-copy ByteString creation. - * Various bug fixes and improvements to the JSON support utility: - - Fixed a thread-safety bug. - - Added a new option “preservingProtoFieldNames” to JsonFormat. - - Added a new option “includingDefaultValueFields” to JsonFormat. - - Updated the JSON utility to comply with proto3 JSON specification. - - Python (Beta) - * Added proto3 JSON format utility. It includes support for all field types - and a few well-known types except for Any and Struct. - * Added runtime support for Any, Timestamp, Duration and FieldMask. - * [ ] is now accepted for repeated scalar fields in text format parser. - * Map fields now have proper O(1) performance for lookup/insert/delete - when using the Python/C++ implementation. They were previously using O(n) - search-based algorithms because the C++ reflection interface didn't - support true map operations. - - Objective-C (Beta) - * Various bug-fixes and code tweaks to pass more strict compiler warnings. - * Now has conformance test coverage and is passing all tests. - - C# (Beta) - * Various bug-fixes. - * Code generation: Files generated in directories based on namespace. - * Code generation: Include comments from .proto files in XML doc - comments (naively) - * Code generation: Change organization/naming of "reflection class" (access - to file descriptor) - * Code generation and library: Add Parser property to MessageDescriptor, - and introduce a non-generic parser type. - * Library: Added TypeRegistry to support JSON parsing/formatting of Any. - * Library: Added Any.Pack/Unpack support. - * Library: Implemented JSON parsing. - - Javascript (Alpha) - * Added proto3 support for JavaScript. The runtime is written in pure - JavaScript and works in browsers and in Node.js. To generate JavaScript - code for your proto, invoke protoc with "--js_out". See js/README.md - for more build instructions. - -2015-08-26 version 3.0.0-beta-1 (C++/Java/Python/Ruby/Nano/Objective-C/C#) - About Beta - * This is the first beta release of protobuf v3.0.0. Not all languages - have reached beta stage. Languages not marked as beta are still in - alpha (i.e., be prepared for API breaking changes). - - General - * Proto3 JSON is supported in several languages (fully supported in C++ - and Java, partially supported in Ruby/C#). The JSON spec is defined in - the proto3 language guide: - - https://developers.google.com/protocol-buffers/docs/proto3#json - - We will publish a more detailed spec to define the exact behavior of - proto3-conformant JSON serializers and parsers. Until then, do not rely - on specific behaviors of the implementation if it’s not documented in - the above spec. More specifically, the behavior is not yet finalized for - the following: - - Parsing invalid JSON input (e.g., input with trailing commas). - - Non-camelCase names in JSON input. - - The same field appears multiple times in JSON input. - - JSON arrays contain “null” values. - - The message has unknown fields. - - * Proto3 now enforces strict UTF-8 checking. Parsing will fail if a string - field contains non UTF-8 data. - - C++ (Beta) - * Introduced new utility functions/classes in the google/protobuf/util - directory: - - MessageDifferencer: compare two proto messages and report their - differences. - - JsonUtil: support converting protobuf binary format to/from JSON. - - TimeUtil: utility functions to work with well-known types Timestamp - and Duration. - - FieldMaskUtil: utility functions to work with FieldMask. - - * Performance optimization of arena construction and destruction. - * Bug fixes for arena and maps support. - * Changed to use cmake for Windows Visual Studio builds. - * Added Bazel support. - - Java (Beta) - * Introduced a new util package that will be distributed as a separate - artifact in maven. It contains: - - JsonFormat: convert proto messages to/from JSON. - - TimeUtil: utility functions to work with Timestamp and Duration. - - FieldMaskUtil: utility functions to work with FieldMask. - - * The static PARSER in each generated message is deprecated, and it will - be removed in a future release. A static parser() getter is generated - for each message type instead. - * Performance optimizations for String fields serialization. - * Performance optimizations for Lite runtime on Android: - - Reduced allocations - - Reduced method overhead after ProGuarding - - Reduced code size after ProGuarding - - Python (Alpha) - * Removed legacy Python 2.5 support. - * Moved to a single Python 2.x/3.x-compatible codebase, instead of using 2to3. - * Fixed build/tests on Python 2.6, 2.7, 3.3, and 3.4. - - Pure-Python works on all four. - - Python/C++ implementation works on all but 3.4, due to changes in the - Python/C++ API in 3.4. - * Some preliminary work has been done to allow for multiple DescriptorPools - with Python/C++. - - Ruby (Alpha) - * Many bugfixes: - - fixed parsing/serialization of bytes, sint, sfixed types - - other parser bugfixes - - fixed memory leak affecting Ruby 2.2 - - JavaNano (Alpha) - * JavaNano generated code now will be put in a nano package by default to - avoid conflicts with Java generated code. - - Objective-C (Alpha) - * Added non-null markup to ObjC library. Requires SDK 8.4+ to build. - * Many bugfixes: - - Removed the class/enum filter. - - Renamed some internal types to avoid conflicts with the well-known types - protos. - - Added missing support for parsing repeated primitive fields in packed or - unpacked forms. - - Added *Count for repeated and map<> fields to avoid auto-create when - checking for them being set. - - C# (Alpha) - * Namespace changed to Google.Protobuf (and NuGet package will be named - correspondingly). - * Target platforms now .NET 4.5 and selected portable subsets only. - * Removed lite runtime. - * Reimplementation to use mutable message types. - * Null references used to represent "no value" for message type fields. - * Proto3 semantics supported; proto2 files are prohibited for C# codegen. - Most proto3 features supported: - - JSON formatting (a.k.a. serialization to JSON), including well-known - types (except for Any). - - Wrapper types mapped to nullable value types (or string/ByteString - allowing nullability). JSON parsing is not supported yet. - - maps - - oneof - - enum unknown value preservation - -2015-05-25 version 3.0.0-alpha-3 (Objective-C/C#): - General - * Introduced two new language implementations (Objective-C, C#) to proto3. - * Explicit "optional" keyword are disallowed in proto3 syntax, as fields are - optional by default. - * Group fields are no longer supported in proto3 syntax. - * Changed repeated primitive fields to use packed serialization by default in - proto3 (implemented for C++, Java, Python in this release). The user can - still disable packed serialization by setting packed to false for now. - * Added well-known type protos (any.proto, empty.proto, timestamp.proto, - duration.proto, etc.). Users can import and use these protos just like - regular proto files. Additional runtime support will be added for them in - future releases (in the form of utility helper functions, or having them - replaced by language specific types in generated code). - * Added a "reserved" keyword in both proto2 and proto3 syntax. User can use - this keyword to declare reserved field numbers and names to prevent them - from being reused by other fields in the same message. - - To reserve field numbers, add a reserved declaration in your message: - - message TestMessage { - reserved 2, 15, 9 to 11, 3; - } - - This reserves field numbers 2, 3, 9, 10, 11 and 15. If a user uses any of - these as field numbers, the protocol buffer compiler will report an error. - - Field names can also be reserved: - - message TestMessage { - reserved "foo", "bar"; - } - - * Various bug fixes since 3.0.0-alpha-2 - - Objective-C - Objective-C includes a code generator and a native objective-c runtime - library. By adding “--objc_out” to protoc, the code generator will generate - a header(*.pbobjc.h) and an implementation file(*.pbobjc.m) for each proto - file. - - In this first release, the generated interface provides: enums, messages, - field support(single, repeated, map, oneof), proto2 and proto3 syntax - support, parsing and serialization. It’s compatible with ARC and non-ARC - usage. Besides, user can also access it via the swift bridging header. - - See objectivec/README.md for details. - - C# - * C# protobufs are based on project - https://github.com/jskeet/protobuf-csharp-port. The original project was - frozen and all the new development will happen here. - * Codegen plugin for C# was completely rewritten to C++ and is now an - integral part of protoc. - * Some refactorings and cleanup has been applied to the C# runtime library. - * Only proto2 is supported in C# at the moment, proto3 support is in - progress and will likely bring significant breaking changes to the API. - - See csharp/README.md for details. - - C++ - * Added runtime support for Any type. To use Any in your proto file, first - import the definition of Any: - - // foo.proto - import "google/protobuf/any.proto"; - message Foo { - google.protobuf.Any any_field = 1; - } - message Bar { - int32 value = 1; - } - - Then in C++ you can access the Any field using PackFrom()/UnpackTo() - methods: - - Foo foo; - Bar bar = ...; - foo.mutable_any_field()->PackFrom(bar); - ... - if (foo.any_field().IsType()) { - foo.any_field().UnpackTo(&bar); - ... - } - * In text format, entries of a map field will be sorted by key. - - Java - * Continued optimizations on the lite runtime to improve performance for - Android. - - Python - * Added map support. - - maps now have a dict-like interface (msg.map_field[key] = value) - - existing code that modifies maps via the repeated field interface - will need to be updated. - - Ruby - * Improvements to RepeatedField's emulation of the Ruby Array API. - * Various speedups and internal cleanups. - -2015-02-26 version 3.0.0-alpha-2 (Python/Ruby/JavaNano): - General - * Introduced three new language implementations (Ruby, JavaNano, and - Python) to proto3. - * Various bug fixes since 3.0.0-alpha-1 - - Python: - Python has received several updates, most notably support for proto3 - semantics in any .proto file that declares syntax="proto3". - Messages declared in proto3 files no longer represent field presence - for scalar fields (number, enums, booleans, or strings). You can - no longer call HasField() for such fields, and they are serialized - based on whether they have a non-zero/empty/false value. - - One other notable change is in the C++-accelerated implementation. - Descriptor objects (which describe the protobuf schema and allow - reflection over it) are no longer duplicated between the Python - and C++ layers. The Python descriptors are now simple wrappers - around the C++ descriptors. This change should significantly - reduce the memory usage of programs that use a lot of message - types. - - Ruby: - We have added proto3 support for Ruby via a native C extension. - - The Ruby extension itself is included in the ruby/ directory, and details on - building and installing the extension are in ruby/README.md. The extension - will also be published as a Ruby gem. Code generator support is included as - part of `protoc` with the `--ruby_out` flag. - - The Ruby extension implements a user-friendly DSL to define message types - (also generated by the code generator from `.proto` files). Once a message - type is defined, the user may create instances of the message that behave in - ways idiomatic to Ruby. For example: - - - Message fields are present as ordinary Ruby properties (getter method - `foo` and setter method `foo=`). - - Repeated field elements are stored in a container that acts like a native - Ruby array, and map elements are stored in a container that acts like a - native Ruby hashmap. - - The usual well-known methods, such as `#to_s`, `#dup`, and the like, are - present. - - Unlike several existing third-party Ruby extensions for protobuf, this - extension is built on a "strongly-typed" philosophy: message fields and - array/map containers will throw exceptions eagerly when values of the - incorrect type are inserted. - - See ruby/README.md for details. - - JavaNano: - JavaNano is a special code generator and runtime library designed especially - for resource-restricted systems, like Android. It is very resource-friendly - in both the amount of code and the runtime overhead. Here is an an overview - of JavaNano features compared with the official Java protobuf: - - - No descriptors or message builders. - - All messages are mutable; fields are public Java fields. - - For optional fields only, encapsulation behind setter/getter/hazzer/ - clearer functions is opt-in, which provide proper 'has' state support. - - For proto2, if not opted in, has state (field presence) is not available. - Serialization outputs all fields not equal to their defaults. - The behavior is consistent with proto3 semantics. - - Required fields (proto2 only) are always serialized. - - Enum constants are integers; protection against invalid values only - when parsing from the wire. - - Enum constants can be generated into container interfaces bearing - the enum's name (so the referencing code is in Java style). - - CodedInputByteBufferNano can only take byte[] (not InputStream). - - Similarly CodedOutputByteBufferNano can only write to byte[]. - - Repeated fields are in arrays, not ArrayList or Vector. Null array - elements are allowed and silently ignored. - - Full support for serializing/deserializing repeated packed fields. - - Support extensions (in proto2). - - Unset messages/groups are null, not an immutable empty default - instance. - - toByteArray(...) and mergeFrom(...) are now static functions of - MessageNano. - - The 'bytes' type translates to the Java type byte[]. - - See javanano/README.txt for details. - -2014-12-01 version 3.0.0-alpha-1 (C++/Java): - - General - * Introduced Protocol Buffers language version 3 (aka proto3). - - When protobuf was initially opensourced it implemented Protocol Buffers - language version 2 (aka proto2), which is why the version number - started from v2.0.0. From v3.0.0, a new language version (proto3) is - introduced while the old version (proto2) will continue to be supported. - - The main intent of introducing proto3 is to clean up protobuf before - pushing the language as the foundation of Google's new API platform. - In proto3, the language is simplified, both for ease of use and to - make it available in a wider range of programming languages. At the - same time a few features are added to better support common idioms - found in APIs. - - The following are the main new features in language version 3: - - 1. Removal of field presence logic for primitive value fields, removal - of required fields, and removal of default values. This makes proto3 - significantly easier to implement with open struct representations, - as in languages like Android Java, Objective C, or Go. - 2. Removal of unknown fields. - 3. Removal of extensions, which are instead replaced by a new standard - type called Any. - 4. Fix semantics for unknown enum values. - 5. Addition of maps. - 6. Addition of a small set of standard types for representation of time, - dynamic data, etc. - 7. A well-defined encoding in JSON as an alternative to binary proto - encoding. - - This release (v3.0.0-alpha-1) includes partial proto3 support for C++ and - Java. Items 6 (well-known types) and 7 (JSON format) in the above feature - list are not implemented. - - A new notion "syntax" is introduced to specify whether a .proto file - uses proto2 or proto3: - - // foo.proto - syntax = "proto3"; - message Bar {...} - - If omitted, the protocol compiler will generate a warning and "proto2" will - be used as the default. This warning will be turned into an error in a - future release. - - We recommend that new Protocol Buffers users use proto3. However, we do not - generally recommend that existing users migrate from proto2 from proto3 due - to API incompatibility, and we will continue to support proto2 for a long - time. - - * Added support for map fields (implemented in C++/Java for both proto2 and - proto3). - - Map fields can be declared using the following syntax: - - message Foo { - map values = 1; - } - - Data of a map field will be stored in memory as an unordered map and it - can be accessed through generated accessors. - - C++ - * Added arena allocation support (for both proto2 and proto3). - - Profiling shows memory allocation and deallocation constitutes a significant - fraction of CPU-time spent in protobuf code and arena allocation is a - technique introduced to reduce this cost. With arena allocation, new - objects will be allocated from a large piece of preallocated memory and - deallocation of these objects is almost free. Early adoption shows 20% to - 50% improvement in some Google binaries. - - To enable arena support, add the following option to your .proto file: - - option cc_enable_arenas = true; - - Protocol compiler will generate additional code to make the generated - message classes work with arenas. This does not change the existing API - of protobuf messages and does not affect wire format. Your existing code - should continue to work after adding this option. In the future we will - make this option enabled by default. - - To actually take advantage of arena allocation, you need to use the arena - APIs when creating messages. A quick example of using the arena API: - - { - google::protobuf::Arena arena; - // Allocate a protobuf message in the arena. - MyMessage* message = Arena::CreateMessage(&arena); - // All submessages will be allocated in the same arena. - if (!message->ParseFromString(data)) { - // Deal with malformed input data. - } - // Must not delete the message here. It will be deleted automatically - // when the arena is destroyed. - } - - Currently arena does not work with map fields. Enabling arena in a .proto - file containing map fields will result in compile errors in the generated - code. This will be addressed in a future release. - -2014-10-20 version 2.6.1: - - C++ - * Added atomicops support for Solaris. - * Released memory allocated by InitializeDefaultRepeatedFields() and - GetEmptyString(). Some memory sanitizers reported them as memory leaks. - - Java - * Updated DynamicMessage.setField() to handle repeated enum values - correctly. - * Fixed a bug that caused NullPointerException to be thrown when - converting manually constructed FileDescriptorProto to - FileDescriptor. - - Python - * Fixed WhichOneof() to work with de-serialized protobuf messages. - * Fixed a missing file problem of Python C++ implementation. - -2014-08-15 version 2.6.0: - - General - * Added oneofs(unions) feature. Fields in the same oneof will share - memory and at most one field can be set at the same time. Use the - oneof keyword to define a oneof like: - message SampleMessage { - oneof test_oneof { - string name = 4; - YourMessage sub_message = 9; - } - } - * Files, services, enums, messages, methods and enum values can be marked - as deprecated now. - * Added Support for list values, including lists of messages, when - parsing text-formatted protos in C++ and Java. - For example: foo: [1, 2, 3] - - C++ - * Enhanced customization on TestFormat printing. - * Added SwapFields() in reflection API to swap a subset of fields. - Added SetAllocatedMessage() in reflection API. - * Repeated primitive extensions are now packable. The - [packed=true] option only affects serializers. Therefore, it is - possible to switch a repeated extension field to packed format - without breaking backwards-compatibility. - * Various speed optimizations. - - Java - * writeTo() method in ByteString can now write a substring to an - output stream. Added endWith() method for ByteString. - * ByteString and ByteBuffer are now supported in CodedInputStream - and CodedOutputStream. - * java_generate_equals_and_hash can now be used with the LITE_RUNTIME. - - Python - * A new C++-backed extension module (aka "cpp api v2") that replaces the - old ("cpp api v1") one. Much faster than the pure Python code. This one - resolves many bugs and is recommended for general use over the - pure Python when possible. - * Descriptors now have enum_types_by_name and extension_types_by_name dict - attributes. - * Support for Python 3. - -2013-02-27 version 2.5.0: - - General - * New notion "import public" that allows a proto file to forward the content - it imports to its importers. For example, - // foo.proto - import public "bar.proto"; - import "baz.proto"; - - // qux.proto - import "foo.proto"; - // Stuff defined in bar.proto may be used in this file, but stuff from - // baz.proto may NOT be used without importing it explicitly. - This is useful for moving proto files. To move a proto file, just leave - a single "import public" in the old proto file. - * New enum option "allow_alias" that specifies whether different symbols can - be assigned the same numeric value. Default value is "true". Setting it to - false causes the compiler to reject enum definitions where multiple symbols - have the same numeric value. - Note: We plan to flip the default value to "false" in a future release. - Projects using enum aliases should set the option to "true" in their .proto - files. - - C++ - * New generated method set_allocated_foo(Type* foo) for message and string - fields. This method allows you to set the field to a pre-allocated object - and the containing message takes the ownership of that object. - * Added SetAllocatedExtension() and ReleaseExtension() to extensions API. - * Custom options are now formatted correctly when descriptors are printed in - text format. - * Various speed optimizations. - - Java - * Comments in proto files are now collected and put into generated code as - comments for corresponding classes and data members. - * Added Parser to parse directly into messages without a Builder. For - example, - Foo foo = Foo.PARSER.ParseFrom(input); - Using Parser is ~25% faster than using Builder to parse messages. - * Added getters/setters to access the underlying ByteString of a string field - directly. - * ByteString now supports more operations: substring(), prepend(), and - append(). The implementation of ByteString uses a binary tree structure - to support these operations efficiently. - * New method findInitializationErrors() that lists all missing required - fields. - * Various code size and speed optimizations. - - Python - * Added support for dynamic message creation. DescriptorDatabase, - DescriptorPool, and MessageFactory work like their C++ counterparts to - simplify Descriptor construction from *DescriptorProtos, and MessageFactory - provides a message instance from a Descriptor. - * Added pickle support for protobuf messages. - * Unknown fields are now preserved after parsing. - * Fixed bug where custom options were not correctly populated. Custom - options can be accessed now. - * Added EnumTypeWrapper that provides better accessibility to enum types. - * Added ParseMessage(descriptor, bytes) to generate a new Message instance - from a descriptor and a byte string. - -2011-05-01 version 2.4.1: - - C++ - * Fixed the friendship problem for old compilers to make the library now gcc 3 - compatible again. - * Fixed vcprojects/extract_includes.bat to extract compiler/plugin.h. - - Java - * Removed usages of JDK 1.6 only features to make the library now JDK 1.5 - compatible again. - * Fixed a bug about negative enum values. - * serialVersionUID is now defined in generated messages for java serializing. - * Fixed protoc to use java.lang.Object, which makes "Object" now a valid - message name again. - - Python - * Experimental C++ implementation now requires C++ protobuf library installed. - See the README.txt in the python directory for details. - -2011-02-02 version 2.4.0: - - General - * The RPC (cc|java|py)_generic_services default value is now false instead of - true. - * Custom options can have aggregate types. For example, - message MyOption { - optional string comment = 1; - optional string author = 2; - } - extend google.protobuf.FieldOptions { - optional MyOption myoption = 12345; - } - This option can now be set as follows: - message SomeType { - optional int32 field = 1 [(myoption) = { comment:'x' author:'y' }]; - } - - C++ - * Various speed and code size optimizations. - * Added a release_foo() method on string and message fields. - * Fixed gzip_output_stream sub-stream handling. - - Java - * Builders now maintain sub-builders for sub-messages. Use getFooBuilder() to - get the builder for the sub-message "foo". This allows you to repeatedly - modify deeply-nested sub-messages without rebuilding them. - * Builder.build() no longer invalidates the Builder for generated messages - (You may continue to modify it and then build another message). - * Code generator will generate efficient equals() and hashCode() - implementations if new option java_generate_equals_and_hash is enabled. - (Otherwise, reflection-based implementations are used.) - * Generated messages now implement Serializable. - * Fields with [deprecated=true] will be marked with @Deprecated in Java. - * Added lazy conversion of UTF-8 encoded strings to String objects to improve - performance. - * Various optimizations. - * Enum value can be accessed directly, instead of calling getNumber() on the - enum member. - * For each enum value, an integer constant is also generated with the suffix - _VALUE. - - Python - * Added an experimental C++ implementation for Python messages via a Python - extension. Implementation type is controlled by an environment variable - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION (valid values: "cpp" and "python") - The default value is currently "python" but will be changed to "cpp" in - future release. - * Improved performance on message instantiation significantly. - Most of the work on message instantiation is done just once per message - class, instead of once per message instance. - * Improved performance on text message parsing. - * Allow add() to forward keyword arguments to the concrete class. - E.g. instead of - item = repeated_field.add() - item.foo = bar - item.baz = quux - You can do: - repeated_field.add(foo=bar, baz=quux) - * Added a sort() interface to the BaseContainer. - * Added an extend() method to repeated composite fields. - * Added UTF8 debug string support. - -2010-01-08 version 2.3.0: - - General - * Parsers for repeated numeric fields now always accept both packed and - unpacked input. The [packed=true] option only affects serializers. - Therefore, it is possible to switch a field to packed format without - breaking backwards-compatibility -- as long as all parties are using - protobuf 2.3.0 or above, at least. - * The generic RPC service code generated by the C++, Java, and Python - generators can be disabled via file options: - option cc_generic_services = false; - option java_generic_services = false; - option py_generic_services = false; - This allows plugins to generate alternative code, possibly specific to some - particular RPC implementation. - - protoc - * Now supports a plugin system for code generators. Plugins can generate - code for new languages or inject additional code into the output of other - code generators. Plugins are just binaries which accept a protocol buffer - on stdin and write a protocol buffer to stdout, so they may be written in - any language. See src/google/protobuf/compiler/plugin.proto. - **WARNING**: Plugins are experimental. The interface may change in a - future version. - * If the output location ends in .zip or .jar, protoc will write its output - to a zip/jar archive instead of a directory. For example: - protoc --java_out=myproto_srcs.jar --python_out=myproto.zip myproto.proto - Currently the archive contents are not compressed, though this could change - in the future. - * inf, -inf, and nan can now be used as default values for float and double - fields. - - C++ - * Various speed and code size optimizations. - * DynamicMessageFactory is now fully thread-safe. - * Message::Utf8DebugString() method is like DebugString() but avoids escaping - UTF-8 bytes. - * Compiled-in message types can now contain dynamic extensions, through use - of CodedInputStream::SetExtensionRegistry(). - * Now compiles shared libraries (DLLs) by default on Cygwin and MinGW, to - match other platforms. Use --disable-shared to avoid this. - - Java - * parseDelimitedFrom() and mergeDelimitedFrom() now detect EOF and return - false/null instead of throwing an exception. - * Fixed some initialization ordering bugs. - * Fixes for OpenJDK 7. - - Python - * 10-25 times faster than 2.2.0, still pure-Python. - * Calling a mutating method on a sub-message always instantiates the message - in its parent even if the mutating method doesn't actually mutate anything - (e.g. parsing from an empty string). - * Expanded descriptors a bit. - -2009-08-11 version 2.2.0: - - C++ - * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler - to generate code which only depends libprotobuf-lite, which is much smaller - than libprotobuf but lacks descriptors, reflection, and some other features. - * Fixed bug where Message.Swap(Message) was only implemented for - optimize_for_speed. Swap now properly implemented in both modes - (Issue 91). - * Added RemoveLast and SwapElements(index1, index2) to Reflection - interface for repeated elements. - * Added Swap(Message) to Reflection interface. - * Floating-point literals in generated code that are intended to be - single-precision now explicitly have 'f' suffix to avoid pedantic warnings - produced by some compilers. - * The [deprecated=true] option now causes the C++ code generator to generate - a GCC-style deprecation annotation (no-op on other compilers). - * google::protobuf::GetEnumDescriptor() returns the - EnumDescriptor for that type -- useful for templates which cannot call - SomeGeneratedEnumType_descriptor(). - * Various optimizations and obscure bug fixes. - - Java - * Lite mode: The "optimize_for = LITE_RUNTIME" option causes the compiler - to generate code which only depends libprotobuf-lite, which is much smaller - than libprotobuf but lacks descriptors, reflection, and some other features. - * Lots of style cleanups. - - Python - * Fixed endianness bug with floats and doubles. - * Text format parsing support. - * Fix bug with parsing packed repeated fields in embedded messages. - * Ability to initialize fields by passing keyword args to constructor. - * Support iterators in extend and __setslice__ for containers. - -2009-05-13 version 2.1.0: - - General - * Repeated fields of primitive types (types other that string, group, and - nested messages) may now use the option [packed = true] to get a more - efficient encoding. In the new encoding, the entire list is written - as a single byte blob using the "length-delimited" wire type. Within - this blob, the individual values are encoded the same way they would - be normally except without a tag before each value (thus, they are - tightly "packed"). - * For each field, the generated code contains an integer constant assigned - to the field number. For example, the .proto file: - message Foo { optional int bar_baz = 123; } - would generate the following constants, all with the integer value 123: - C++: Foo::kBarBazFieldNumber - Java: Foo.BAR_BAZ_FIELD_NUMBER - Python: Foo.BAR_BAZ_FIELD_NUMBER - Constants are also generated for extensions, with the same naming scheme. - These constants may be used as switch cases. - * Updated bundled Google Test to version 1.3.0. Google Test is now bundled - in its verbatim form as a nested autoconf package, so you can drop in any - other version of Google Test if needed. - * optimize_for = SPEED is now the default, by popular demand. Use - optimize_for = CODE_SIZE if code size is more important in your app. - * It is now an error to define a default value for a repeated field. - Previously, this was silently ignored (it had no effect on the generated - code). - * Fields can now be marked deprecated like: - optional int32 foo = 1 [deprecated = true]; - Currently this does not have any actual effect, but in the future the code - generators may generate deprecation annotations in each language. - * Cross-compiling should now be possible using the --with-protoc option to - configure. See README.txt for more info. - - protoc - * --error_format=msvs option causes errors to be printed in Visual Studio - format, which should allow them to be clicked on in the build log to go - directly to the error location. - * The type name resolver will no longer resolve type names to fields. For - example, this now works: - message Foo {} - message Bar { - optional int32 Foo = 1; - optional Foo baz = 2; - } - Previously, the type of "baz" would resolve to "Bar.Foo", and you'd get - an error because Bar.Foo is a field, not a type. Now the type of "baz" - resolves to the message type Foo. This change is unlikely to make a - difference to anyone who follows the Protocol Buffers style guide. - - C++ - * Several optimizations, including but not limited to: - - Serialization, especially to flat arrays, is 10%-50% faster, possibly - more for small objects. - - Several descriptor operations which previously required locking no longer - do. - - Descriptors are now constructed lazily on first use, rather than at - process startup time. This should save memory in programs which do not - use descriptors or reflection. - - UnknownFieldSet completely redesigned to be more efficient (especially in - terms of memory usage). - - Various optimizations to reduce code size (though the serialization speed - optimizations increased code size). - * Message interface has method ParseFromBoundedZeroCopyStream() which parses - a limited number of bytes from an input stream rather than parsing until - EOF. - * GzipInputStream and GzipOutputStream support reading/writing gzip- or - zlib-compressed streams if zlib is available. - (google/protobuf/io/gzip_stream.h) - * DescriptorPool::FindAllExtensions() and corresponding - DescriptorDatabase::FindAllExtensions() can be used to enumerate all - extensions of a given type. - * For each enum type Foo, protoc will generate functions: - const string& Foo_Name(Foo value); - bool Foo_Parse(const string& name, Foo* result); - The former returns the name of the enum constant corresponding to the given - value while the latter finds the value corresponding to a name. - * RepeatedField and RepeatedPtrField now have back-insertion iterators. - * String fields now have setters that take a char* and a size, in addition - to the existing ones that took char* or const string&. - * DescriptorPool::AllowUnknownDependencies() may be used to tell - DescriptorPool to create placeholder descriptors for unknown entities - referenced in a FileDescriptorProto. This can allow you to parse a .proto - file without having access to other .proto files that it imports, for - example. - * Updated gtest to latest version. The gtest package is now included as a - nested autoconf package, so it should be able to drop new versions into the - "gtest" subdirectory without modification. - - Java - * Fixed bug where Message.mergeFrom(Message) failed to merge extensions. - * Message interface has new method toBuilder() which is equivalent to - newBuilderForType().mergeFrom(this). - * All enums now implement the ProtocolMessageEnum interface. - * Setting a field to null now throws NullPointerException. - * Fixed tendency for TextFormat's parsing to overflow the stack when - parsing large string values. The underlying problem is with Java's - regex implementation (which unfortunately uses recursive backtracking - rather than building an NFA). Worked around by making use of possessive - quantifiers. - * Generated service classes now also generate pure interfaces. For a service - Foo, Foo.Interface is a pure interface containing all of the service's - defined methods. Foo.newReflectiveService() can be called to wrap an - instance of this interface in a class that implements the generic - RpcService interface, which provides reflection support that is usually - needed by RPC server implementations. - * RPC interfaces now support blocking operation in addition to non-blocking. - The protocol compiler generates separate blocking and non-blocking stubs - which operate against separate blocking and non-blocking RPC interfaces. - RPC implementations will have to implement the new interfaces in order to - support blocking mode. - * New I/O methods parseDelimitedFrom(), mergeDelimitedFrom(), and - writeDelimitedTo() read and write "delimited" messages from/to a stream, - meaning that the message size precedes the data. This way, you can write - multiple messages to a stream without having to worry about delimiting - them yourself. - * Throw a more descriptive exception when build() is double-called. - * Add a method to query whether CodedInputStream is at the end of the input - stream. - * Add a method to reset a CodedInputStream's size counter; useful when - reading many messages with the same stream. - * equals() and hashCode() now account for unknown fields. - - Python - * Added slicing support for repeated scalar fields. Added slice retrieval and - removal of repeated composite fields. - * Updated RPC interfaces to allow for blocking operation. A client may - now pass None for a callback when making an RPC, in which case the - call will block until the response is received, and the response - object will be returned directly to the caller. This interface change - cannot be used in practice until RPC implementations are updated to - implement it. - * Changes to input_stream.py should make protobuf compatible with appengine. - -2008-11-25 version 2.0.3: - - protoc - * Enum values may now have custom options, using syntax similar to field - options. - * Fixed bug where .proto files which use custom options but don't actually - define them (i.e. they import another .proto file defining the options) - had to explicitly import descriptor.proto. - * Adjacent string literals in .proto files will now be concatenated, like in - C. - * If an input file is a Windows absolute path (e.g. "C:\foo\bar.proto") and - the import path only contains "." (or contains "." but does not contain - the file), protoc incorrectly thought that the file was under ".", because - it thought that the path was relative (since it didn't start with a slash). - This has been fixed. - - C++ - * Generated message classes now have a Swap() method which efficiently swaps - the contents of two objects. - * All message classes now have a SpaceUsed() method which returns an estimate - of the number of bytes of allocated memory currently owned by the object. - This is particularly useful when you are reusing a single message object - to improve performance but want to make sure it doesn't bloat up too large. - * New method Message::SerializeAsString() returns a string containing the - serialized data. May be more convenient than calling - SerializeToString(string*). - * In debug mode, log error messages when string-type fields are found to - contain bytes that are not valid UTF-8. - * Fixed bug where a message with multiple extension ranges couldn't parse - extensions. - * Fixed bug where MergeFrom(const Message&) didn't do anything if invoked on - a message that contained no fields (but possibly contained extensions). - * Fixed ShortDebugString() to not be O(n^2). Durr. - * Fixed crash in TextFormat parsing if the first token in the input caused a - tokenization error. - * Fixed obscure bugs in zero_copy_stream_impl.cc. - * Added support for HP C++ on Tru64. - * Only build tests on "make check", not "make". - * Fixed alignment issue that caused crashes when using DynamicMessage on - 64-bit Sparc machines. - * Simplify template usage to work with MSVC 2003. - * Work around GCC 4.3.x x86_64 compiler bug that caused crashes on startup. - (This affected Fedora 9 in particular.) - * Now works on "Solaris 10 using recent Sun Studio". - - Java - * New overload of mergeFrom() which parses a slice of a byte array instead - of the whole thing. - * New method ByteString.asReadOnlyByteBuffer() does what it sounds like. - * Improved performance of isInitialized() when optimizing for code size. - - Python - * Corrected ListFields() signature in Message base class to match what - subclasses actually implement. - * Some minor refactoring. - * Don't pass self as first argument to superclass constructor (no longer - allowed in Python 2.6). - -2008-09-29 version 2.0.2: - - General - * License changed from Apache 2.0 to 3-Clause BSD. - * It is now possible to define custom "options", which are basically - annotations which may be placed on definitions in a .proto file. - For example, you might define a field option called "foo" like so: - import "google/protobuf/descriptor.proto" - extend google.protobuf.FieldOptions { - optional string foo = 12345; - } - Then you annotate a field using the "foo" option: - message MyMessage { - optional int32 some_field = 1 [(foo) = "bar"] - } - The value of this option is then visible via the message's - Descriptor: - const FieldDescriptor* field = - MyMessage::descriptor()->FindFieldByName("some_field"); - assert(field->options().GetExtension(foo) == "bar"); - This feature has been implemented and tested in C++ and Java. - Other languages may or may not need to do extra work to support - custom options, depending on how they construct descriptors. - - C++ - * Fixed some GCC warnings that only occur when using -pedantic. - * Improved static initialization code, making ordering more - predictable among other things. - * TextFormat will no longer accept messages which contain multiple - instances of a singular field. Previously, the latter instance - would overwrite the former. - * Now works on systems that don't have hash_map. - - Java - * Print @Override annotation in generated code where appropriate. - - Python - * Strings now use the "unicode" type rather than the "str" type. - String fields may still be assigned ASCII "str" values; they will - automatically be converted. - * Adding a property to an object representing a repeated field now - raises an exception. For example: - # No longer works (and never should have). - message.some_repeated_field.foo = 1 - - Windows - * We now build static libraries rather than DLLs by default on MSVC. - See vsprojects/readme.txt for more information. - -2008-08-15 version 2.0.1: - - protoc - * New flags --encode and --decode can be used to convert between protobuf text - format and binary format from the command-line. - * New flag --descriptor_set_out can be used to write FileDescriptorProtos for - all parsed files directly into a single output file. This is particularly - useful if you wish to parse .proto files from programs written in languages - other than C++: just run protoc as a background process and have it output - a FileDescriptorList, then parse that natively. - * Improved error message when an enum value's name conflicts with another - symbol defined in the enum type's scope, e.g. if two enum types declared - in the same scope have values with the same name. This is disallowed for - compatibility with C++, but this wasn't clear from the error. - * Fixed absolute output paths on Windows. - * Allow trailing slashes in --proto_path mappings. - - C++ - * Reflection objects are now per-class rather than per-instance. To make this - possible, the Reflection interface had to be changed such that all methods - take the Message instance as a parameter. This change improves performance - significantly in memory-bandwidth-limited use cases, since it makes the - message objects smaller. Note that source-incompatible interface changes - like this will not be made again after the library leaves beta. - * Heuristically detect sub-messages when printing unknown fields. - * Fix static initialization ordering bug that caused crashes at startup when - compiling on Mac with static linking. - * Fixed TokenizerTest when compiling with -DNDEBUG on Linux. - * Fixed incorrect definition of kint32min. - * Fix bytes type setter to work with byte sequences with embedded NULLs. - * Other irrelevant tweaks. - - Java - * Fixed UnknownFieldSet's parsing of varints larger than 32 bits. - * Fixed TextFormat's parsing of "inf" and "nan". - * Fixed TextFormat's parsing of comments. - * Added info to Java POM that will be required when we upload the - package to a Maven repo. - - Python - * MergeFrom(message) and CopyFrom(message) are now implemented. - * SerializeToString() raises an exception if the message is missing required - fields. - * Code organization improvements. - * Fixed doc comments for RpcController and RpcChannel, which had somehow been - swapped. - * Fixed text_format_test on Windows where floating-point exponents sometimes - contain extra zeros. - * Fix Python service CallMethod() implementation. - - Other - * Improved readmes. - * VIM syntax highlighting improvements. - -2008-07-07 version 2.0.0: - - * First public release. diff --git a/lib/protobuf/CONTRIBUTING.md b/lib/protobuf/CONTRIBUTING.md deleted file mode 100644 index db1ff31..0000000 --- a/lib/protobuf/CONTRIBUTING.md +++ /dev/null @@ -1,98 +0,0 @@ -# Contributing to Protocol Buffers - -We welcome your contributions to protocol buffers. This doc describes the -process to contribute patches to protobuf and the general guidelines we -expect contributors to follow. - -## Before You Start - -We accept patches in the form of github pull requests. If you are new to -github, please read [How to create github pull requests](https://help.github.com/articles/about-pull-requests/) -first. - -### Contributor License Agreements - -Contributions to this project must be accompanied by a Contributor License -Agreement. You (or your employer) retain the copyright to your contribution, -this simply gives us permission to use and redistribute your contributions -as part of the project. - -* If you are an individual writing original source code and you're sure you - own the intellectual property, then you'll need to sign an [individual CLA](https://cla.developers.google.com/about/google-individual?csw=1). -* If you work for a company that wants to allow you to contribute your work, - then you'll need to sign a [corporate CLA](https://cla.developers.google.com/about/google-corporate?csw=1). - -### Coding Style - -This project follows [Google’s Coding Style Guides](https://github.com/google/styleguide). -Before sending out your pull request, please familiarize yourself with the -corresponding style guides and make sure the proposed code change is style -conforming. - -## Contributing Process - -Most pull requests should go to the master branch and the change will be -included in the next major/minor version release (e.g., 3.6.0 release). If you -need to include a bug fix in a patch release (e.g., 3.5.2), make sure it’s -already merged to master, and then create a pull request cherry-picking the -commits from master branch to the release branch (e.g., branch 3.5.x). - -For each pull request, a protobuf team member will be assigned to review the -pull request. For minor cleanups, the pull request may be merged right away -after an initial review. For larger changes, you will likely receive multiple -rounds of comments and it may take some time to complete. We will try to keep -our response time within 7-days but if you don’t get any response in a few -days, feel free to comment on the threads to get our attention. We also expect -you to respond to our comments within a reasonable amount of time. If we don’t -hear from you for 2 weeks or longer, we may close the pull request. You can -still send the pull request again once you have time to work on it. - -Once a pull request is merged, we will take care of the rest and get it into -the final release. - -## Pull Request Guidelines - -* If you are a Googler, it is preferable to first create an internal CL and - have it reviewed and submitted. The code propagation process will deliver the - change to GitHub. -* Create small PRs that are narrowly focused on addressing a single concern. - We often receive PRs that are trying to fix several things at a time, but if - only one fix is considered acceptable, nothing gets merged and both author's - & review's time is wasted. Create more PRs to address different concerns and - everyone will be happy. -* For speculative changes, consider opening an issue and discussing it first. - If you are suggesting a behavioral or API change, make sure you get explicit - support from a protobuf team member before sending us the pull request. -* Provide a good PR description as a record of what change is being made and - why it was made. Link to a GitHub issue if it exists. -* Don't fix code style and formatting unless you are already changing that - line to address an issue. PRs with irrelevant changes won't be merged. If - you do want to fix formatting or style, do that in a separate PR. -* Unless your PR is trivial, you should expect there will be reviewer comments - that you'll need to address before merging. We expect you to be reasonably - responsive to those comments, otherwise the PR will be closed after 2-3 weeks - of inactivity. -* Maintain clean commit history and use meaningful commit messages. PRs with - messy commit history are difficult to review and won't be merged. Use rebase - -i upstream/master to curate your commit history and/or to bring in latest - changes from master (but avoid rebasing in the middle of a code review). -* Keep your PR up to date with upstream/master (if there are merge conflicts, - we can't really merge your change). -* All tests need to be passing before your change can be merged. We recommend - you run tests locally before creating your PR to catch breakages early on. - Ultimately, the green signal will be provided by our testing infrastructure. - The reviewer will help you if there are test failures that seem not related - to the change you are making. - -## Reviewer Guidelines - -* Make sure that all tests are passing before approval. -* Apply the "release notes: yes" label if the pull request's description should - be included in the next release (e.g., any new feature / bug fix). - Apply the "release notes: no" label if the pull request's description should - not be included in the next release (e.g., refactoring changes that does not - change behavior, integration from Google internal, updating tests, etc.). -* Apply the appropriate language label (e.g., C++, Java, Python, etc.) to the - pull request. This will make it easier to identify which languages the pull - request affects, allowing us to better identify appropriate reviewer, create - a better release note, and make it easier to identify issues in the future. diff --git a/lib/protobuf/CONTRIBUTORS.txt b/lib/protobuf/CONTRIBUTORS.txt deleted file mode 100644 index b8d97fc..0000000 --- a/lib/protobuf/CONTRIBUTORS.txt +++ /dev/null @@ -1,102 +0,0 @@ -This file contains a list of people who have made large contributions -to the public version of Protocol Buffers. - -Original Protocol Buffers design and implementation: - Sanjay Ghemawat - Jeff Dean - Daniel Dulitz - Craig Silverstein - Paul Haahr - Corey Anderson - (and many others) - -Proto2 C++ and Java primary author: - Kenton Varda - -Proto2 Python primary authors: - Will Robinson - Petar Petrov - -Java Nano primary authors: - Brian Duff - Tom Chao - Max Cai - Ulas Kirazci - -Large code contributions: - Jason Hsueh - Joseph Schorr - Wenbo Zhu - -Large quantity of code reviews: - Scott Bruce - Frank Yellin - Neal Norwitz - Jeffrey Yasskin - Ambrose Feinstein - -Documentation: - Lisa Carey - -Maven packaging: - Gregory Kick - -Patch contributors: - Kevin Ko - * Small patch to handle trailing slashes in --proto_path flag. - Johan Euphrosine - * Small patch to fix Python CallMethod(). - Ulrich Kunitz - * Small optimizations to Python serialization. - Leandro Lucarella - * VI syntax highlighting tweaks. - * Fix compiler to not make output executable. - Dilip Joseph - * Heuristic detection of sub-messages when printing unknown fields in - text format. - Brian Atkinson - * Added @Override annotation to generated Java code where appropriate. - Vincent Choinière - * Tru64 support. - Monty Taylor - * Solaris 10 + Sun Studio fixes. - Alek Storm - * Slicing support for repeated scalar fields for the Python API. - Oleg Smolsky - * MS Visual Studio error format option. - * Detect unordered_map in stl_hash.m4. - Brian Olson - * gzip/zlib I/O support. - Michael Poole - * Fixed warnings about generated constructors not explicitly initializing - all fields (only present with certain compiler settings). - * Added generation of field number constants. - Wink Saville - * Fixed initialization ordering problem in logging code. - Will Pierce - * Small patch improving performance of in Python serialization. - Alexandre Vassalotti - * Emacs mode for Protocol Buffers (editors/protobuf-mode.el). - Scott Stafford - * Added Swap(), SwapElements(), and RemoveLast() to Reflection interface. - Alexander Melnikov - * HPUX support. - Oliver Jowett - * Detect whether zlib is new enough in configure script. - * Fixes for Solaris 10 32/64-bit confusion. - Evan Jones - * Optimize Java serialization code when writing a small message to a stream. - * Optimize Java serialization of strings so that UTF-8 encoding happens only - once per string per serialization call. - * Clean up some Java warnings. - * Fix bug with permanent callbacks that delete themselves when run. - Michael Kucharski - * Added CodedInputStream.getTotalBytesRead(). - Kacper Kowalik - * Fixed m4/acx_pthread.m4 problem for some Linux distributions. - William Orr - * Fixed detection of sched_yield on Solaris. - * Added atomicops for Solaris - Andrew Paprocki - * Fixed minor IBM xlC compiler build issues - * Added atomicops for AIX (POWER) diff --git a/lib/protobuf/CleanSpec.mk b/lib/protobuf/CleanSpec.mk deleted file mode 100644 index b84e1b6..0000000 --- a/lib/protobuf/CleanSpec.mk +++ /dev/null @@ -1,49 +0,0 @@ -# Copyright (C) 2007 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# If you don't need to do a full clean build but would like to touch -# a file or delete some intermediate files, add a clean step to the end -# of the list. These steps will only be run once, if they haven't been -# run before. -# -# E.g.: -# $(call add-clean-step, touch -c external/sqlite/sqlite3.h) -# $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates) -# -# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with -# files that are missing or have been moved. -# -# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory. -# Use $(OUT_DIR) to refer to the "out" directory. -# -# If you need to re-do something that's already mentioned, just copy -# the command and add it to the bottom of the list. E.g., if a change -# that you made last week required touching a file and a change you -# made today requires touching the same file, just copy the old -# touch step and add it to the end of the list. -# -# ************************************************ -# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST -# ************************************************ - -# For example: -#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates) -#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates) -#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f) -#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*) - -# ************************************************ -# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST -# ************************************************ diff --git a/lib/protobuf/LICENSE b/lib/protobuf/LICENSE deleted file mode 100644 index 19b305b..0000000 --- a/lib/protobuf/LICENSE +++ /dev/null @@ -1,32 +0,0 @@ -Copyright 2008 Google Inc. All rights reserved. - -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. - -Code generated by the Protocol Buffer compiler is owned by the owner -of the input file used when generating it. This code is not -standalone and requires a support library to be linked with it. This -support library is itself covered by the above license. diff --git a/lib/protobuf/METADATA b/lib/protobuf/METADATA deleted file mode 100644 index 64306e4..0000000 --- a/lib/protobuf/METADATA +++ /dev/null @@ -1,18 +0,0 @@ -name: "protobuf" -description: - "Protocol Buffers - Google's data interchange format" - -third_party { - url { - type: HOMEPAGE - value: "https://developers.google.com/protocol-buffers/" - } - url { - type: GIT - value: "https://github.com/protocolbuffers/protobuf" - } - // Also update the suffix in Android.bp when updating the version. - version: "v3.9.1" - last_upgrade_date { year: 2019 month: 8 day: 23 } - license_type: PERMISSIVE -} diff --git a/lib/protobuf/MODULE_LICENSE_APACHE2 b/lib/protobuf/MODULE_LICENSE_APACHE2 deleted file mode 100644 index e69de29..0000000 diff --git a/lib/protobuf/Makefile.am b/lib/protobuf/Makefile.am deleted file mode 100644 index c03b45c..0000000 --- a/lib/protobuf/Makefile.am +++ /dev/null @@ -1,1262 +0,0 @@ -## Process this file with automake to produce Makefile.in - -ACLOCAL_AMFLAGS = -I m4 - -AUTOMAKE_OPTIONS = foreign - -# Build . before src so that our all-local and clean-local hooks kicks in at -# the right time. -SUBDIRS = . src - -# Always include third_party directories in distributions. -DIST_SUBDIRS = src conformance benchmarks third_party/googletest - -# Build gmock before we build protobuf tests. We don't add gmock to SUBDIRS -# because then "make check" would also build and run all of gmock's own tests, -# which takes a lot of time and is generally not useful to us. Also, we don't -# want "make install" to recurse into gmock since we don't want to overwrite -# the installed version of gmock if there is one. -check-local: - @echo "Making lib/libgmock.a lib/libgmock_main.a in gmock" - @cd third_party/googletest/googletest && $(MAKE) $(AM_MAKEFLAGS) lib/libgtest.la lib/libgtest_main.la - @cd third_party/googletest/googlemock && $(MAKE) $(AM_MAKEFLAGS) lib/libgmock.la lib/libgmock_main.la - -# We would like to clean gmock when "make clean" is invoked. But we have to -# be careful because clean-local is also invoked during "make distclean", but -# "make distclean" already recurses into gmock because it's listed among the -# DIST_SUBDIRS. distclean will delete gmock/Makefile, so if we then try to -# cd to the directory again and "make clean" it will fail. So, check that the -# Makefile exists before recursing. -clean-local: - @if test -e third_party/googletest/Makefile; then \ - echo "Making clean in googletest"; \ - cd third_party/googletest && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ - if test -e conformance/Makefile; then \ - echo "Making clean in conformance"; \ - cd conformance && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ - if test -e benchmarks/Makefile; then \ - echo "Making clean in benchmarks"; \ - cd benchmarks && $(MAKE) $(AM_MAKEFLAGS) clean; \ - fi; \ - if test -e objectivec/DevTools; then \ - echo "Cleaning any ObjC pyc files"; \ - rm -f objectivec/DevTools/*.pyc; \ - fi - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = protobuf.pc protobuf-lite.pc - -csharp_EXTRA_DIST= \ - global.json \ - csharp/.gitignore \ - csharp/CHANGES.txt \ - csharp/Google.Protobuf.Tools.targets \ - csharp/Google.Protobuf.Tools.nuspec \ - csharp/README.md \ - csharp/build_packages.bat \ - csharp/build_tools.sh \ - csharp/buildall.bat \ - csharp/buildall.sh \ - csharp/generate_protos.sh \ - csharp/install_dotnet_sdk.ps1 \ - csharp/keys/Google.Protobuf.public.snk \ - csharp/keys/Google.Protobuf.snk \ - csharp/keys/README.md \ - csharp/protos/README.md \ - csharp/protos/map_unittest_proto3.proto \ - csharp/protos/unittest_custom_options_proto3.proto \ - csharp/protos/unittest_import_public_proto3.proto \ - csharp/protos/unittest_import_proto3.proto \ - csharp/protos/unittest_issues.proto \ - csharp/protos/unittest_proto3.proto \ - csharp/src/AddressBook/AddPerson.cs \ - csharp/src/AddressBook/Addressbook.cs \ - csharp/src/AddressBook/AddressBook.csproj \ - csharp/src/AddressBook/ListPeople.cs \ - csharp/src/AddressBook/Program.cs \ - csharp/src/AddressBook/SampleUsage.cs \ - csharp/src/Google.Protobuf.Benchmarks/SerializationConfig.cs \ - csharp/src/Google.Protobuf.Benchmarks/SerializationBenchmark.cs \ - csharp/src/Google.Protobuf.Benchmarks/Program.cs \ - csharp/src/Google.Protobuf.Benchmarks/Google.Protobuf.Benchmarks.csproj \ - csharp/src/Google.Protobuf.Benchmarks/Benchmarks.cs \ - csharp/src/Google.Protobuf.Benchmarks/BenchmarkMessage1Proto3.cs \ - csharp/src/Google.Protobuf.Conformance/Conformance.cs \ - csharp/src/Google.Protobuf.Conformance/Google.Protobuf.Conformance.csproj \ - csharp/src/Google.Protobuf.Conformance/Program.cs \ - csharp/src/Google.Protobuf.JsonDump/Google.Protobuf.JsonDump.csproj \ - csharp/src/Google.Protobuf.JsonDump/Program.cs \ - csharp/src/Google.Protobuf.Test/ByteStringTest.cs \ - csharp/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs \ - csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs \ - csharp/src/Google.Protobuf.Test/CodedOutputStreamTest.cs \ - csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs \ - csharp/src/Google.Protobuf.Test/Collections/ProtobufEqualityComparersTest.cs \ - csharp/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs \ - csharp/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs \ - csharp/src/Google.Protobuf.Test/Compatibility/StreamExtensionsTest.cs \ - csharp/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs \ - csharp/src/Google.Protobuf.Test/DeprecatedMemberTest.cs \ - csharp/src/Google.Protobuf.Test/EqualityTester.cs \ - csharp/src/Google.Protobuf.Test/FieldCodecTest.cs \ - csharp/src/Google.Protobuf.Test/FieldMaskTreeTest.cs \ - csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs \ - csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj \ - csharp/src/Google.Protobuf.Test/IssuesTest.cs \ - csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs \ - csharp/src/Google.Protobuf.Test/JsonParserTest.cs \ - csharp/src/Google.Protobuf.Test/JsonTokenizerTest.cs \ - csharp/src/Google.Protobuf.Test/Reflection/CustomOptionsTest.cs \ - csharp/src/Google.Protobuf.Test/Reflection/DescriptorDeclarationTest.cs \ - csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs \ - csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs \ - csharp/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs \ - csharp/src/Google.Protobuf.Test/SampleEnum.cs \ - csharp/src/Google.Protobuf.Test/SampleMessages.cs \ - csharp/src/Google.Protobuf.Test/SampleNaNs.cs \ - csharp/src/Google.Protobuf.Test/TestCornerCases.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs \ - csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs \ - csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs \ - csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs \ - csharp/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs \ - csharp/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs \ - csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs \ - csharp/src/Google.Protobuf.Test/UnknownFieldSetTest.cs \ - csharp/src/Google.Protobuf.Test/testprotos.pb \ - csharp/src/Google.Protobuf.sln \ - csharp/src/Google.Protobuf/ByteArray.cs \ - csharp/src/Google.Protobuf/ByteString.cs \ - csharp/src/Google.Protobuf/CodedInputStream.cs \ - csharp/src/Google.Protobuf/CodedOutputStream.ComputeSize.cs \ - csharp/src/Google.Protobuf/CodedOutputStream.cs \ - csharp/src/Google.Protobuf/Collections/Lists.cs \ - csharp/src/Google.Protobuf/Collections/MapField.cs \ - csharp/src/Google.Protobuf/Collections/ProtobufEqualityComparers.cs \ - csharp/src/Google.Protobuf/Collections/ReadOnlyDictionary.cs \ - csharp/src/Google.Protobuf/Collections/RepeatedField.cs \ - csharp/src/Google.Protobuf/Compatibility/MethodInfoExtensions.cs \ - csharp/src/Google.Protobuf/Compatibility/PropertyInfoExtensions.cs \ - csharp/src/Google.Protobuf/Compatibility/StreamExtensions.cs \ - csharp/src/Google.Protobuf/Compatibility/TypeExtensions.cs \ - csharp/src/Google.Protobuf/Extension.cs \ - csharp/src/Google.Protobuf/ExtensionRegistry.cs \ - csharp/src/Google.Protobuf/ExtensionSet.cs \ - csharp/src/Google.Protobuf/ExtensionValue.cs \ - csharp/src/Google.Protobuf/FieldCodec.cs \ - csharp/src/Google.Protobuf/FieldMaskTree.cs \ - csharp/src/Google.Protobuf/FrameworkPortability.cs \ - csharp/src/Google.Protobuf/Google.Protobuf.csproj \ - csharp/src/Google.Protobuf/ICustomDiagnosticMessage.cs \ - csharp/src/Google.Protobuf/IDeepCloneable.cs \ - csharp/src/Google.Protobuf/IExtendableMessage.cs \ - csharp/src/Google.Protobuf/IMessage.cs \ - csharp/src/Google.Protobuf/InvalidJsonException.cs \ - csharp/src/Google.Protobuf/InvalidProtocolBufferException.cs \ - csharp/src/Google.Protobuf/JsonFormatter.cs \ - csharp/src/Google.Protobuf/JsonParser.cs \ - csharp/src/Google.Protobuf/JsonToken.cs \ - csharp/src/Google.Protobuf/JsonTokenizer.cs \ - csharp/src/Google.Protobuf/LimitedInputStream.cs \ - csharp/src/Google.Protobuf/MessageExtensions.cs \ - csharp/src/Google.Protobuf/MessageParser.cs \ - csharp/src/Google.Protobuf/ObjectIntPair.cs \ - csharp/src/Google.Protobuf/ProtoPreconditions.cs \ - csharp/src/Google.Protobuf/Properties/AssemblyInfo.cs \ - csharp/src/Google.Protobuf/Reflection/CustomOptions.cs \ - csharp/src/Google.Protobuf/Reflection/Descriptor.cs \ - csharp/src/Google.Protobuf/Reflection/DescriptorBase.cs \ - csharp/src/Google.Protobuf/Reflection/DescriptorDeclaration.cs \ - csharp/src/Google.Protobuf/Reflection/DescriptorPool.cs \ - csharp/src/Google.Protobuf/Reflection/DescriptorUtil.cs \ - csharp/src/Google.Protobuf/Reflection/DescriptorValidationException.cs \ - csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/ExtensionAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs \ - csharp/src/Google.Protobuf/Reflection/FieldAccessorBase.cs \ - csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/FieldType.cs \ - csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/GeneratedClrTypeInfo.cs \ - csharp/src/Google.Protobuf/Reflection/IDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/MapFieldAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs \ - csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs \ - csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs \ - csharp/src/Google.Protobuf/Reflection/SingleFieldAccessor.cs \ - csharp/src/Google.Protobuf/Reflection/TypeRegistry.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Any.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/AnyPartial.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Api.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/DurationPartial.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/FieldMaskPartial.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/TimeExtensions.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/TimestampPartial.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Type.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/ValuePartial.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/Wrappers.cs \ - csharp/src/Google.Protobuf/WellKnownTypes/WrappersPartial.cs \ - csharp/src/Google.Protobuf/WireFormat.cs \ - csharp/src/Google.Protobuf/UnknownField.cs \ - csharp/src/Google.Protobuf/UnknownFieldSet.cs - -java_EXTRA_DIST= \ - java/README.md \ - java/bom/pom.xml \ - java/core/generate-sources-build.xml \ - java/core/generate-test-sources-build.xml \ - java/core/pom.xml \ - java/core/src/main/java/com/google/protobuf/AbstractMessage.java \ - java/core/src/main/java/com/google/protobuf/AbstractMessageLite.java \ - java/core/src/main/java/com/google/protobuf/AbstractParser.java \ - java/core/src/main/java/com/google/protobuf/AbstractProtobufList.java \ - java/core/src/main/java/com/google/protobuf/AllocatedBuffer.java \ - java/core/src/main/java/com/google/protobuf/Android.java \ - java/core/src/main/java/com/google/protobuf/ArrayDecoders.java \ - java/core/src/main/java/com/google/protobuf/BinaryReader.java \ - java/core/src/main/java/com/google/protobuf/BinaryWriter.java \ - java/core/src/main/java/com/google/protobuf/BlockingRpcChannel.java \ - java/core/src/main/java/com/google/protobuf/BlockingService.java \ - java/core/src/main/java/com/google/protobuf/BooleanArrayList.java \ - java/core/src/main/java/com/google/protobuf/BufferAllocator.java \ - java/core/src/main/java/com/google/protobuf/ByteBufferWriter.java \ - java/core/src/main/java/com/google/protobuf/ByteOutput.java \ - java/core/src/main/java/com/google/protobuf/ByteString.java \ - java/core/src/main/java/com/google/protobuf/CodedInputStream.java \ - java/core/src/main/java/com/google/protobuf/CodedInputStreamReader.java \ - java/core/src/main/java/com/google/protobuf/CodedOutputStream.java \ - java/core/src/main/java/com/google/protobuf/CodedOutputStreamWriter.java \ - java/core/src/main/java/com/google/protobuf/DescriptorMessageInfoFactory.java \ - java/core/src/main/java/com/google/protobuf/Descriptors.java \ - java/core/src/main/java/com/google/protobuf/DiscardUnknownFieldsParser.java \ - java/core/src/main/java/com/google/protobuf/DoubleArrayList.java \ - java/core/src/main/java/com/google/protobuf/DynamicMessage.java \ - java/core/src/main/java/com/google/protobuf/ExperimentalApi.java \ - java/core/src/main/java/com/google/protobuf/Extension.java \ - java/core/src/main/java/com/google/protobuf/ExtensionLite.java \ - java/core/src/main/java/com/google/protobuf/ExtensionRegistry.java \ - java/core/src/main/java/com/google/protobuf/ExtensionRegistryFactory.java \ - java/core/src/main/java/com/google/protobuf/ExtensionRegistryLite.java \ - java/core/src/main/java/com/google/protobuf/ExtensionSchema.java \ - java/core/src/main/java/com/google/protobuf/ExtensionSchemaFull.java \ - java/core/src/main/java/com/google/protobuf/ExtensionSchemaLite.java \ - java/core/src/main/java/com/google/protobuf/ExtensionSchemas.java \ - java/core/src/main/java/com/google/protobuf/FieldInfo.java \ - java/core/src/main/java/com/google/protobuf/FieldSet.java \ - java/core/src/main/java/com/google/protobuf/FieldType.java \ - java/core/src/main/java/com/google/protobuf/FloatArrayList.java \ - java/core/src/main/java/com/google/protobuf/GeneratedMessage.java \ - java/core/src/main/java/com/google/protobuf/GeneratedMessageInfoFactory.java \ - java/core/src/main/java/com/google/protobuf/GeneratedMessageLite.java \ - java/core/src/main/java/com/google/protobuf/GeneratedMessageV3.java \ - java/core/src/main/java/com/google/protobuf/IntArrayList.java \ - java/core/src/main/java/com/google/protobuf/Internal.java \ - java/core/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java \ - java/core/src/main/java/com/google/protobuf/IterableByteBufferInputStream.java \ - java/core/src/main/java/com/google/protobuf/JavaType.java \ - java/core/src/main/java/com/google/protobuf/LazyField.java \ - java/core/src/main/java/com/google/protobuf/LazyFieldLite.java \ - java/core/src/main/java/com/google/protobuf/LazyStringArrayList.java \ - java/core/src/main/java/com/google/protobuf/LazyStringList.java \ - java/core/src/main/java/com/google/protobuf/ListFieldSchema.java \ - java/core/src/main/java/com/google/protobuf/LongArrayList.java \ - java/core/src/main/java/com/google/protobuf/ManifestSchemaFactory.java \ - java/core/src/main/java/com/google/protobuf/MapEntry.java \ - java/core/src/main/java/com/google/protobuf/MapEntryLite.java \ - java/core/src/main/java/com/google/protobuf/MapField.java \ - java/core/src/main/java/com/google/protobuf/MapFieldLite.java \ - java/core/src/main/java/com/google/protobuf/MapFieldSchema.java \ - java/core/src/main/java/com/google/protobuf/MapFieldSchemaFull.java \ - java/core/src/main/java/com/google/protobuf/MapFieldSchemaLite.java \ - java/core/src/main/java/com/google/protobuf/MapFieldSchemas.java \ - java/core/src/main/java/com/google/protobuf/Message.java \ - java/core/src/main/java/com/google/protobuf/MessageInfo.java \ - java/core/src/main/java/com/google/protobuf/MessageInfoFactory.java \ - java/core/src/main/java/com/google/protobuf/MessageLite.java \ - java/core/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java \ - java/core/src/main/java/com/google/protobuf/MessageLiteToString.java \ - java/core/src/main/java/com/google/protobuf/MessageOrBuilder.java \ - java/core/src/main/java/com/google/protobuf/MessageReflection.java \ - java/core/src/main/java/com/google/protobuf/MessageSchema.java \ - java/core/src/main/java/com/google/protobuf/MessageSetSchema.java \ - java/core/src/main/java/com/google/protobuf/MutabilityOracle.java \ - java/core/src/main/java/com/google/protobuf/NewInstanceSchema.java \ - java/core/src/main/java/com/google/protobuf/NewInstanceSchemaFull.java \ - java/core/src/main/java/com/google/protobuf/NewInstanceSchemaLite.java \ - java/core/src/main/java/com/google/protobuf/NewInstanceSchemas.java \ - java/core/src/main/java/com/google/protobuf/NioByteString.java \ - java/core/src/main/java/com/google/protobuf/OneofInfo.java \ - java/core/src/main/java/com/google/protobuf/Parser.java \ - java/core/src/main/java/com/google/protobuf/PrimitiveNonBoxingCollection.java \ - java/core/src/main/java/com/google/protobuf/ProtoSyntax.java \ - java/core/src/main/java/com/google/protobuf/Protobuf.java \ - java/core/src/main/java/com/google/protobuf/ProtobufArrayList.java \ - java/core/src/main/java/com/google/protobuf/ProtobufLists.java \ - java/core/src/main/java/com/google/protobuf/ProtocolMessageEnum.java \ - java/core/src/main/java/com/google/protobuf/ProtocolStringList.java \ - java/core/src/main/java/com/google/protobuf/RawMessageInfo.java \ - java/core/src/main/java/com/google/protobuf/Reader.java \ - java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java \ - java/core/src/main/java/com/google/protobuf/RepeatedFieldBuilderV3.java \ - java/core/src/main/java/com/google/protobuf/RopeByteString.java \ - java/core/src/main/java/com/google/protobuf/RpcCallback.java \ - java/core/src/main/java/com/google/protobuf/RpcChannel.java \ - java/core/src/main/java/com/google/protobuf/RpcController.java \ - java/core/src/main/java/com/google/protobuf/RpcUtil.java \ - java/core/src/main/java/com/google/protobuf/Schema.java \ - java/core/src/main/java/com/google/protobuf/SchemaFactory.java \ - java/core/src/main/java/com/google/protobuf/SchemaUtil.java \ - java/core/src/main/java/com/google/protobuf/Service.java \ - java/core/src/main/java/com/google/protobuf/ServiceException.java \ - java/core/src/main/java/com/google/protobuf/SingleFieldBuilder.java \ - java/core/src/main/java/com/google/protobuf/SingleFieldBuilderV3.java \ - java/core/src/main/java/com/google/protobuf/SmallSortedMap.java \ - java/core/src/main/java/com/google/protobuf/StructuralMessageInfo.java \ - java/core/src/main/java/com/google/protobuf/TextFormat.java \ - java/core/src/main/java/com/google/protobuf/TextFormatEscaper.java \ - java/core/src/main/java/com/google/protobuf/TextFormatParseInfoTree.java \ - java/core/src/main/java/com/google/protobuf/TextFormatParseLocation.java \ - java/core/src/main/java/com/google/protobuf/UninitializedMessageException.java \ - java/core/src/main/java/com/google/protobuf/UnknownFieldSchema.java \ - java/core/src/main/java/com/google/protobuf/UnknownFieldSet.java \ - java/core/src/main/java/com/google/protobuf/UnknownFieldSetLite.java \ - java/core/src/main/java/com/google/protobuf/UnknownFieldSetLiteSchema.java \ - java/core/src/main/java/com/google/protobuf/UnknownFieldSetSchema.java \ - java/core/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java \ - java/core/src/main/java/com/google/protobuf/UnsafeByteOperations.java \ - java/core/src/main/java/com/google/protobuf/UnsafeUtil.java \ - java/core/src/main/java/com/google/protobuf/Utf8.java \ - java/core/src/main/java/com/google/protobuf/WireFormat.java \ - java/core/src/main/java/com/google/protobuf/Writer.java \ - java/core/src/test/java/com/google/protobuf/AbstractMessageTest.java \ - java/core/src/test/java/com/google/protobuf/AbstractProto2LiteSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/AbstractProto2SchemaTest.java \ - java/core/src/test/java/com/google/protobuf/AbstractProto3LiteSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/AbstractProto3SchemaTest.java \ - java/core/src/test/java/com/google/protobuf/AbstractSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/AnyTest.java \ - java/core/src/test/java/com/google/protobuf/ArrayDecodersTest.java \ - java/core/src/test/java/com/google/protobuf/BinaryProtocolTest.java \ - java/core/src/test/java/com/google/protobuf/BooleanArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/BoundedByteStringTest.java \ - java/core/src/test/java/com/google/protobuf/ByteBufferWriterTest.java \ - java/core/src/test/java/com/google/protobuf/ByteStringTest.java \ - java/core/src/test/java/com/google/protobuf/CachedFieldSizeTest.java \ - java/core/src/test/java/com/google/protobuf/CheckUtf8Test.java \ - java/core/src/test/java/com/google/protobuf/CodedAdapterTest.java \ - java/core/src/test/java/com/google/protobuf/CodedInputStreamTest.java \ - java/core/src/test/java/com/google/protobuf/CodedOutputStreamTest.java \ - java/core/src/test/java/com/google/protobuf/DecodeUtf8Test.java \ - java/core/src/test/java/com/google/protobuf/DeprecatedFieldTest.java \ - java/core/src/test/java/com/google/protobuf/DescriptorsTest.java \ - java/core/src/test/java/com/google/protobuf/DiscardUnknownFieldsTest.java \ - java/core/src/test/java/com/google/protobuf/DoubleArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/DynamicMessageTest.java \ - java/core/src/test/java/com/google/protobuf/EnumTest.java \ - java/core/src/test/java/com/google/protobuf/ExperimentalMessageFactory.java \ - java/core/src/test/java/com/google/protobuf/ExperimentalSerializationUtil.java \ - java/core/src/test/java/com/google/protobuf/ExperimentalTestDataProvider.java \ - java/core/src/test/java/com/google/protobuf/ExtensionRegistryFactoryTest.java \ - java/core/src/test/java/com/google/protobuf/FieldPresenceTest.java \ - java/core/src/test/java/com/google/protobuf/FloatArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java \ - java/core/src/test/java/com/google/protobuf/GeneratedMessageTest.java \ - java/core/src/test/java/com/google/protobuf/IntArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/IsValidUtf8Test.java \ - java/core/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java \ - java/core/src/test/java/com/google/protobuf/LazyFieldLiteTest.java \ - java/core/src/test/java/com/google/protobuf/LazyFieldTest.java \ - java/core/src/test/java/com/google/protobuf/LazyMessageLiteTest.java \ - java/core/src/test/java/com/google/protobuf/LazyStringArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java \ - java/core/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java \ - java/core/src/test/java/com/google/protobuf/LiteralByteStringTest.java \ - java/core/src/test/java/com/google/protobuf/LongArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/MapForProto2LiteTest.java \ - java/core/src/test/java/com/google/protobuf/MapForProto2Test.java \ - java/core/src/test/java/com/google/protobuf/MapLiteTest.java \ - java/core/src/test/java/com/google/protobuf/MapTest.java \ - java/core/src/test/java/com/google/protobuf/MessageTest.java \ - java/core/src/test/java/com/google/protobuf/NestedBuildersTest.java \ - java/core/src/test/java/com/google/protobuf/NioByteStringTest.java \ - java/core/src/test/java/com/google/protobuf/PackedFieldTest.java \ - java/core/src/test/java/com/google/protobuf/ParseExceptionsTest.java \ - java/core/src/test/java/com/google/protobuf/ParserLiteTest.java \ - java/core/src/test/java/com/google/protobuf/ParserTest.java \ - java/core/src/test/java/com/google/protobuf/Proto2ExtensionLookupSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/Proto2LiteSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/Proto2MessageFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto2MessageInfoFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto2MessageLiteFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto2SchemaTest.java \ - java/core/src/test/java/com/google/protobuf/Proto2UnknownEnumValueTest.java \ - java/core/src/test/java/com/google/protobuf/Proto3LiteSchemaTest.java \ - java/core/src/test/java/com/google/protobuf/Proto3MessageFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto3MessageInfoFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto3MessageLiteFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto3MessageLiteInfoFactory.java \ - java/core/src/test/java/com/google/protobuf/Proto3SchemaTest.java \ - java/core/src/test/java/com/google/protobuf/ProtobufArrayListTest.java \ - java/core/src/test/java/com/google/protobuf/RepeatedFieldBuilderV3Test.java \ - java/core/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java \ - java/core/src/test/java/com/google/protobuf/RopeByteStringTest.java \ - java/core/src/test/java/com/google/protobuf/ServiceTest.java \ - java/core/src/test/java/com/google/protobuf/SingleFieldBuilderV3Test.java \ - java/core/src/test/java/com/google/protobuf/SmallSortedMapTest.java \ - java/core/src/test/java/com/google/protobuf/TestBadIdentifiers.java \ - java/core/src/test/java/com/google/protobuf/TestBadIdentifiersLite.java \ - java/core/src/test/java/com/google/protobuf/TestSchemas.java \ - java/core/src/test/java/com/google/protobuf/TestSchemasLite.java \ - java/core/src/test/java/com/google/protobuf/TestUtil.java \ - java/core/src/test/java/com/google/protobuf/TestUtilLite.java \ - java/core/src/test/java/com/google/protobuf/TextFormatParseInfoTreeTest.java \ - java/core/src/test/java/com/google/protobuf/TextFormatParseLocationTest.java \ - java/core/src/test/java/com/google/protobuf/TextFormatTest.java \ - java/core/src/test/java/com/google/protobuf/UnknownEnumValueTest.java \ - java/core/src/test/java/com/google/protobuf/UnknownFieldSetTest.java \ - java/core/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java \ - java/core/src/test/java/com/google/protobuf/Utf8Test.java \ - java/core/src/test/java/com/google/protobuf/Utf8Utils.java \ - java/core/src/test/java/com/google/protobuf/WellKnownTypesTest.java \ - java/core/src/test/java/com/google/protobuf/WireFormatLiteTest.java \ - java/core/src/test/java/com/google/protobuf/WireFormatTest.java \ - java/core/src/test/java/com/google/protobuf/WrappersLiteOfMethodTest.java \ - java/core/src/test/java/com/google/protobuf/WrappersOfMethodTest.java \ - java/core/src/test/proto/com/google/protobuf/any_test.proto \ - java/core/src/test/proto/com/google/protobuf/cached_field_size_test.proto \ - java/core/src/test/proto/com/google/protobuf/deprecated_file.proto \ - java/core/src/test/proto/com/google/protobuf/field_presence_test.proto \ - java/core/src/test/proto/com/google/protobuf/lazy_fields_lite.proto \ - java/core/src/test/proto/com/google/protobuf/lite_equals_and_hash.proto \ - java/core/src/test/proto/com/google/protobuf/map_for_proto2_lite_test.proto \ - java/core/src/test/proto/com/google/protobuf/map_for_proto2_test.proto \ - java/core/src/test/proto/com/google/protobuf/map_initialization_order_test.proto \ - java/core/src/test/proto/com/google/protobuf/map_lite_test.proto \ - java/core/src/test/proto/com/google/protobuf/map_test.proto \ - java/core/src/test/proto/com/google/protobuf/message_lite_extension_util_test.proto\ - java/core/src/test/proto/com/google/protobuf/multiple_files_test.proto \ - java/core/src/test/proto/com/google/protobuf/nested_builders_test.proto \ - java/core/src/test/proto/com/google/protobuf/nested_extension.proto \ - java/core/src/test/proto/com/google/protobuf/nested_extension_lite.proto \ - java/core/src/test/proto/com/google/protobuf/non_nested_extension.proto \ - java/core/src/test/proto/com/google/protobuf/non_nested_extension_lite.proto \ - java/core/src/test/proto/com/google/protobuf/outer_class_name_test.proto \ - java/core/src/test/proto/com/google/protobuf/outer_class_name_test2.proto \ - java/core/src/test/proto/com/google/protobuf/outer_class_name_test3.proto \ - java/core/src/test/proto/com/google/protobuf/packed_field_test.proto \ - java/core/src/test/proto/com/google/protobuf/proto2_message.proto \ - java/core/src/test/proto/com/google/protobuf/proto2_message_lite.proto \ - java/core/src/test/proto/com/google/protobuf/proto2_unknown_enum_values.proto \ - java/core/src/test/proto/com/google/protobuf/proto3_message.proto \ - java/core/src/test/proto/com/google/protobuf/proto3_message_lite.proto \ - java/core/src/test/proto/com/google/protobuf/test_bad_identifiers.proto \ - java/core/src/test/proto/com/google/protobuf/test_check_utf8.proto \ - java/core/src/test/proto/com/google/protobuf/test_check_utf8_size.proto \ - java/core/src/test/proto/com/google/protobuf/test_custom_options.proto \ - java/core/src/test/proto/com/google/protobuf/test_extra_interfaces.proto \ - java/core/src/test/proto/com/google/protobuf/wrappers_test.proto \ - java/lite.md \ - java/lite/generate-sources-build.xml \ - java/lite/generate-test-sources-build.xml \ - java/lite/lite.awk \ - java/lite/pom.xml \ - java/lite/process-lite-sources-build.xml \ - java/lite/src/test/java/com/google/protobuf/LiteTest.java \ - java/lite/src/test/java/com/google/protobuf/Proto2MessageLiteInfoFactory.java \ - java/pom.xml \ - java/util/pom.xml \ - java/util/src/main/java/com/google/protobuf/util/Durations.java \ - java/util/src/main/java/com/google/protobuf/util/FieldMaskTree.java \ - java/util/src/main/java/com/google/protobuf/util/FieldMaskUtil.java \ - java/util/src/main/java/com/google/protobuf/util/JsonFormat.java \ - java/util/src/main/java/com/google/protobuf/util/TimeUtil.java \ - java/util/src/main/java/com/google/protobuf/util/Structs.java \ - java/util/src/main/java/com/google/protobuf/util/Timestamps.java \ - java/util/src/main/java/com/google/protobuf/util/Values.java \ - java/util/src/test/java/com/google/protobuf/util/FieldMaskTreeTest.java \ - java/util/src/test/java/com/google/protobuf/util/FieldMaskUtilTest.java \ - java/util/src/test/java/com/google/protobuf/util/JsonFormatTest.java \ - java/util/src/test/java/com/google/protobuf/util/StructsTest.java \ - java/util/src/test/java/com/google/protobuf/util/TimeUtilTest.java \ - java/util/src/test/java/com/google/protobuf/util/ValuesTest.java \ - java/util/src/test/proto/com/google/protobuf/util/json_test.proto - -objectivec_EXTRA_DIST= \ - objectivec/DevTools/check_version_stamps.sh \ - objectivec/DevTools/compile_testing_protos.sh \ - objectivec/DevTools/full_mac_build.sh \ - objectivec/DevTools/pddm.py \ - objectivec/DevTools/pddm_tests.py \ - objectivec/generate_well_known_types.sh \ - objectivec/google/protobuf/Any.pbobjc.h \ - objectivec/google/protobuf/Any.pbobjc.m \ - objectivec/google/protobuf/Api.pbobjc.h \ - objectivec/google/protobuf/Api.pbobjc.m \ - objectivec/google/protobuf/Duration.pbobjc.h \ - objectivec/google/protobuf/Duration.pbobjc.m \ - objectivec/google/protobuf/Empty.pbobjc.h \ - objectivec/google/protobuf/Empty.pbobjc.m \ - objectivec/google/protobuf/FieldMask.pbobjc.h \ - objectivec/google/protobuf/FieldMask.pbobjc.m \ - objectivec/google/protobuf/SourceContext.pbobjc.h \ - objectivec/google/protobuf/SourceContext.pbobjc.m \ - objectivec/google/protobuf/Struct.pbobjc.h \ - objectivec/google/protobuf/Struct.pbobjc.m \ - objectivec/google/protobuf/Timestamp.pbobjc.h \ - objectivec/google/protobuf/Timestamp.pbobjc.m \ - objectivec/google/protobuf/Type.pbobjc.h \ - objectivec/google/protobuf/Type.pbobjc.m \ - objectivec/google/protobuf/Wrappers.pbobjc.h \ - objectivec/google/protobuf/Wrappers.pbobjc.m \ - objectivec/GPBArray.h \ - objectivec/GPBArray.m \ - objectivec/GPBArray_PackagePrivate.h \ - objectivec/GPBBootstrap.h \ - objectivec/GPBCodedInputStream.h \ - objectivec/GPBCodedInputStream.m \ - objectivec/GPBCodedInputStream_PackagePrivate.h \ - objectivec/GPBCodedOutputStream.h \ - objectivec/GPBCodedOutputStream.m \ - objectivec/GPBCodedOutputStream_PackagePrivate.h \ - objectivec/GPBDescriptor.h \ - objectivec/GPBDescriptor.m \ - objectivec/GPBDescriptor_PackagePrivate.h \ - objectivec/GPBDictionary.h \ - objectivec/GPBDictionary.m \ - objectivec/GPBDictionary_PackagePrivate.h \ - objectivec/GPBExtensionInternals.h \ - objectivec/GPBExtensionInternals.m \ - objectivec/GPBExtensionRegistry.h \ - objectivec/GPBExtensionRegistry.m \ - objectivec/GPBMessage.h \ - objectivec/GPBMessage.m \ - objectivec/GPBMessage_PackagePrivate.h \ - objectivec/GPBProtocolBuffers.h \ - objectivec/GPBProtocolBuffers.m \ - objectivec/GPBProtocolBuffers_RuntimeSupport.h \ - objectivec/GPBRootObject.h \ - objectivec/GPBRootObject.m \ - objectivec/GPBRootObject_PackagePrivate.h \ - objectivec/GPBRuntimeTypes.h \ - objectivec/GPBUnknownField.h \ - objectivec/GPBUnknownField.m \ - objectivec/GPBUnknownField_PackagePrivate.h \ - objectivec/GPBUnknownFieldSet.h \ - objectivec/GPBUnknownFieldSet.m \ - objectivec/GPBUnknownFieldSet_PackagePrivate.h \ - objectivec/GPBUtilities.h \ - objectivec/GPBUtilities.m \ - objectivec/GPBUtilities_PackagePrivate.h \ - objectivec/GPBWellKnownTypes.h \ - objectivec/GPBWellKnownTypes.m \ - objectivec/GPBWireFormat.h \ - objectivec/GPBWireFormat.m \ - objectivec/ProtocolBuffers_iOS.xcodeproj/project.pbxproj \ - objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata \ - objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist \ - objectivec/ProtocolBuffers_iOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings \ - objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme \ - objectivec/ProtocolBuffers_iOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme \ - objectivec/ProtocolBuffers_OSX.xcodeproj/project.pbxproj \ - objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/contents.xcworkspacedata \ - objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist \ - objectivec/ProtocolBuffers_OSX.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings \ - objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme \ - objectivec/ProtocolBuffers_OSX.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/project.pbxproj \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/contents.xcworkspacedata \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/xcshareddata/xcschemes/PerformanceTests.xcscheme \ - objectivec/ProtocolBuffers_tvOS.xcodeproj/xcshareddata/xcschemes/ProtocolBuffers.xcscheme \ - objectivec/README.md \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/project.pbxproj \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester.xcodeproj/xcshareddata/xcschemes/OSXCocoaPodsTester.xcscheme \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/AppDelegate.h \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/AppDelegate.m \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Assets.xcassets/AppIcon.appiconset/Contents.json \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Base.lproj/MainMenu.xib \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/Info.plist \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/OSXCocoaPodsTester/main.m \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/Podfile-framework \ - objectivec/Tests/CocoaPods/OSXCocoaPodsTester/Podfile-static \ - objectivec/Tests/CocoaPods/README.md \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/Podfile-framework \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/Podfile-static \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/project.pbxproj \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/project.xcworkspace/contents.xcworkspacedata \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester.xcodeproj/xcshareddata/xcschemes/iOSCocoaPodsTester.xcscheme \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/AppDelegate.h \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/AppDelegate.m \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Assets.xcassets/AppIcon.appiconset/Contents.json \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Base.lproj/LaunchScreen.storyboard \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Base.lproj/Main.storyboard \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/Info.plist \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/ViewController.h \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/ViewController.m \ - objectivec/Tests/CocoaPods/iOSCocoaPodsTester/iOSCocoaPodsTester/main.m \ - objectivec/Tests/CocoaPods/run_tests.sh \ - objectivec/Tests/golden_message \ - objectivec/Tests/golden_packed_fields_message \ - objectivec/Tests/GPBARCUnittestProtos.m \ - objectivec/Tests/GPBArrayTests.m \ - objectivec/Tests/GPBCodedInputStreamTests.m \ - objectivec/Tests/GPBCodedOuputStreamTests.m \ - objectivec/Tests/GPBCompileTest01.m \ - objectivec/Tests/GPBCompileTest02.m \ - objectivec/Tests/GPBCompileTest03.m \ - objectivec/Tests/GPBCompileTest04.m \ - objectivec/Tests/GPBCompileTest05.m \ - objectivec/Tests/GPBCompileTest06.m \ - objectivec/Tests/GPBCompileTest07.m \ - objectivec/Tests/GPBCompileTest08.m \ - objectivec/Tests/GPBCompileTest09.m \ - objectivec/Tests/GPBCompileTest10.m \ - objectivec/Tests/GPBCompileTest11.m \ - objectivec/Tests/GPBCompileTest12.m \ - objectivec/Tests/GPBCompileTest13.m \ - objectivec/Tests/GPBCompileTest14.m \ - objectivec/Tests/GPBCompileTest15.m \ - objectivec/Tests/GPBCompileTest16.m \ - objectivec/Tests/GPBCompileTest17.m \ - objectivec/Tests/GPBCompileTest18.m \ - objectivec/Tests/GPBCompileTest19.m \ - objectivec/Tests/GPBCompileTest20.m \ - objectivec/Tests/GPBCompileTest21.m \ - objectivec/Tests/GPBCompileTest22.m \ - objectivec/Tests/GPBCompileTest23.m \ - objectivec/Tests/GPBCompileTest24.m \ - objectivec/Tests/GPBCompileTest25.m \ - objectivec/Tests/GPBConcurrencyTests.m \ - objectivec/Tests/GPBDescriptorTests.m \ - objectivec/Tests/GPBDictionaryTests+Bool.m \ - objectivec/Tests/GPBDictionaryTests+Int32.m \ - objectivec/Tests/GPBDictionaryTests+Int64.m \ - objectivec/Tests/GPBDictionaryTests+String.m \ - objectivec/Tests/GPBDictionaryTests+UInt32.m \ - objectivec/Tests/GPBDictionaryTests+UInt64.m \ - objectivec/Tests/GPBDictionaryTests.m \ - objectivec/Tests/GPBDictionaryTests.pddm \ - objectivec/Tests/GPBExtensionRegistryTest.m \ - objectivec/Tests/GPBMessageTests+Merge.m \ - objectivec/Tests/GPBMessageTests+Runtime.m \ - objectivec/Tests/GPBMessageTests+Serialization.m \ - objectivec/Tests/GPBMessageTests.m \ - objectivec/Tests/GPBObjectiveCPlusPlusTest.mm \ - objectivec/Tests/GPBPerfTests.m \ - objectivec/Tests/GPBSwiftTests.swift \ - objectivec/Tests/GPBTestUtilities.h \ - objectivec/Tests/GPBTestUtilities.m \ - objectivec/Tests/GPBUnittestProtos.m \ - objectivec/Tests/GPBUnittestProtos2.m \ - objectivec/Tests/GPBUnknownFieldSetTest.m \ - objectivec/Tests/GPBUtilitiesTests.m \ - objectivec/Tests/GPBWellKnownTypesTest.m \ - objectivec/Tests/GPBWireFormatTests.m \ - objectivec/Tests/text_format_extensions_unittest_data.txt \ - objectivec/Tests/text_format_map_unittest_data.txt \ - objectivec/Tests/text_format_unittest_data.txt \ - objectivec/Tests/unittest_cycle.proto \ - objectivec/Tests/unittest_deprecated.proto \ - objectivec/Tests/unittest_deprecated_file.proto \ - objectivec/Tests/unittest_extension_chain_a.proto \ - objectivec/Tests/unittest_extension_chain_b.proto \ - objectivec/Tests/unittest_extension_chain_c.proto \ - objectivec/Tests/unittest_extension_chain_d.proto \ - objectivec/Tests/unittest_extension_chain_e.proto \ - objectivec/Tests/unittest_extension_chain_f.proto \ - objectivec/Tests/unittest_extension_chain_g.proto \ - objectivec/Tests/unittest_objc.proto \ - objectivec/Tests/unittest_objc_options.proto \ - objectivec/Tests/unittest_objc_startup.proto \ - objectivec/Tests/unittest_runtime_proto2.proto \ - objectivec/Tests/unittest_runtime_proto3.proto \ - objectivec/Tests/UnitTests-Bridging-Header.h \ - objectivec/Tests/UnitTests-Info.plist \ - Protobuf.podspec - -php_EXTRA_DIST= \ - composer.json \ - php/README.md \ - php/composer.json \ - php/ext/google/protobuf/array.c \ - php/ext/google/protobuf/builtin_descriptors.inc \ - php/ext/google/protobuf/config.m4 \ - php/ext/google/protobuf/def.c \ - php/ext/google/protobuf/encode_decode.c \ - php/ext/google/protobuf/map.c \ - php/ext/google/protobuf/message.c \ - php/ext/google/protobuf/package.xml \ - php/ext/google/protobuf/protobuf.c \ - php/ext/google/protobuf/protobuf.h \ - php/ext/google/protobuf/storage.c \ - php/ext/google/protobuf/type_check.c \ - php/ext/google/protobuf/upb.c \ - php/ext/google/protobuf/upb.h \ - php/ext/google/protobuf/utf8.c \ - php/ext/google/protobuf/utf8.h \ - php/generate_descriptor_protos.sh \ - php/phpunit.xml \ - php/release.sh \ - php/src/GPBMetadata/Google/Protobuf/Any.php \ - php/src/GPBMetadata/Google/Protobuf/Api.php \ - php/src/GPBMetadata/Google/Protobuf/Duration.php \ - php/src/GPBMetadata/Google/Protobuf/FieldMask.php \ - php/src/GPBMetadata/Google/Protobuf/GPBEmpty.php \ - php/src/GPBMetadata/Google/Protobuf/Internal/Descriptor.php \ - php/src/GPBMetadata/Google/Protobuf/SourceContext.php \ - php/src/GPBMetadata/Google/Protobuf/Struct.php \ - php/src/GPBMetadata/Google/Protobuf/Timestamp.php \ - php/src/GPBMetadata/Google/Protobuf/Type.php \ - php/src/GPBMetadata/Google/Protobuf/Wrappers.php \ - php/src/Google/Protobuf/Any.php \ - php/src/Google/Protobuf/Api.php \ - php/src/Google/Protobuf/BoolValue.php \ - php/src/Google/Protobuf/BytesValue.php \ - php/src/Google/Protobuf/Descriptor.php \ - php/src/Google/Protobuf/DescriptorPool.php \ - php/src/Google/Protobuf/DoubleValue.php \ - php/src/Google/Protobuf/Duration.php \ - php/src/Google/Protobuf/Enum.php \ - php/src/Google/Protobuf/EnumDescriptor.php \ - php/src/Google/Protobuf/EnumValue.php \ - php/src/Google/Protobuf/EnumValueDescriptor.php \ - php/src/Google/Protobuf/Field.php \ - php/src/Google/Protobuf/FieldDescriptor.php \ - php/src/Google/Protobuf/FieldMask.php \ - php/src/Google/Protobuf/Field/Cardinality.php \ - php/src/Google/Protobuf/Field_Cardinality.php \ - php/src/Google/Protobuf/Field/Kind.php \ - php/src/Google/Protobuf/Field_Kind.php \ - php/src/Google/Protobuf/FloatValue.php \ - php/src/Google/Protobuf/GPBEmpty.php \ - php/src/Google/Protobuf/Int32Value.php \ - php/src/Google/Protobuf/Int64Value.php \ - php/src/Google/Protobuf/Internal/CodedInputStream.php \ - php/src/Google/Protobuf/Internal/CodedOutputStream.php \ - php/src/Google/Protobuf/Internal/Descriptor.php \ - php/src/Google/Protobuf/Internal/DescriptorPool.php \ - php/src/Google/Protobuf/Internal/DescriptorProto.php \ - php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php \ - php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php \ - php/src/Google/Protobuf/Internal/EnumBuilderContext.php \ - php/src/Google/Protobuf/Internal/EnumDescriptor.php \ - php/src/Google/Protobuf/Internal/EnumDescriptorProto.php \ - php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php \ - php/src/Google/Protobuf/Internal/EnumOptions.php \ - php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php \ - php/src/Google/Protobuf/Internal/EnumValueOptions.php \ - php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto.php \ - php/src/Google/Protobuf/Internal/FieldDescriptor.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto/Label.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto/Type.php \ - php/src/Google/Protobuf/Internal/FieldOptions.php \ - php/src/Google/Protobuf/Internal/FieldOptions/CType.php \ - php/src/Google/Protobuf/Internal/FieldOptions/JSType.php \ - php/src/Google/Protobuf/Internal/FileDescriptor.php \ - php/src/Google/Protobuf/Internal/FileDescriptorProto.php \ - php/src/Google/Protobuf/Internal/FileDescriptorSet.php \ - php/src/Google/Protobuf/Internal/FileOptions.php \ - php/src/Google/Protobuf/Internal/FileOptions/OptimizeMode.php \ - php/src/Google/Protobuf/Internal/GPBDecodeException.php \ - php/src/Google/Protobuf/Internal/GPBJsonWire.php \ - php/src/Google/Protobuf/Internal/GPBLabel.php \ - php/src/Google/Protobuf/Internal/GPBType.php \ - php/src/Google/Protobuf/Internal/GPBUtil.php \ - php/src/Google/Protobuf/Internal/GPBWire.php \ - php/src/Google/Protobuf/Internal/GPBWireType.php \ - php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php \ - php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php \ - php/src/Google/Protobuf/Internal/GetPublicDescriptorTrait.php \ - php/src/Google/Protobuf/Internal/HasPublicDescriptorTrait.php \ - php/src/Google/Protobuf/Internal/MapEntry.php \ - php/src/Google/Protobuf/Internal/MapField.php \ - php/src/Google/Protobuf/Internal/MapFieldIter.php \ - php/src/Google/Protobuf/Internal/Message.php \ - php/src/Google/Protobuf/Internal/MessageBuilderContext.php \ - php/src/Google/Protobuf/Internal/MessageOptions.php \ - php/src/Google/Protobuf/Internal/MethodDescriptorProto.php \ - php/src/Google/Protobuf/Internal/MethodOptions.php \ - php/src/Google/Protobuf/Internal/MethodOptions/IdempotencyLevel.php \ - php/src/Google/Protobuf/Internal/OneofDescriptor.php \ - php/src/Google/Protobuf/Internal/OneofDescriptorProto.php \ - php/src/Google/Protobuf/Internal/OneofField.php \ - php/src/Google/Protobuf/Internal/OneofOptions.php \ - php/src/Google/Protobuf/Internal/RawInputStream.php \ - php/src/Google/Protobuf/Internal/RepeatedField.php \ - php/src/Google/Protobuf/Internal/RepeatedFieldIter.php \ - php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php \ - php/src/Google/Protobuf/Internal/ServiceOptions.php \ - php/src/Google/Protobuf/Internal/SourceCodeInfo.php \ - php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php \ - php/src/Google/Protobuf/Internal/UninterpretedOption.php \ - php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php \ - php/src/Google/Protobuf/Internal/DescriptorProto_ExtensionRange.php \ - php/src/Google/Protobuf/Internal/DescriptorProto_ReservedRange.php \ - php/src/Google/Protobuf/Internal/EnumDescriptorProto_EnumReservedRange.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto_Label.php \ - php/src/Google/Protobuf/Internal/FieldDescriptorProto_Type.php \ - php/src/Google/Protobuf/Internal/FieldOptions_CType.php \ - php/src/Google/Protobuf/Internal/FieldOptions_JSType.php \ - php/src/Google/Protobuf/Internal/FileOptions_OptimizeMode.php \ - php/src/Google/Protobuf/Internal/GeneratedCodeInfo_Annotation.php \ - php/src/Google/Protobuf/Internal/MethodOptions_IdempotencyLevel.php \ - php/src/Google/Protobuf/Internal/SourceCodeInfo_Location.php \ - php/src/Google/Protobuf/Internal/UninterpretedOption_NamePart.php \ - php/src/Google/Protobuf/ListValue.php \ - php/src/Google/Protobuf/Method.php \ - php/src/Google/Protobuf/Mixin.php \ - php/src/Google/Protobuf/NullValue.php \ - php/src/Google/Protobuf/OneofDescriptor.php \ - php/src/Google/Protobuf/Option.php \ - php/src/Google/Protobuf/SourceContext.php \ - php/src/Google/Protobuf/StringValue.php \ - php/src/Google/Protobuf/Struct.php \ - php/src/Google/Protobuf/Syntax.php \ - php/src/Google/Protobuf/Timestamp.php \ - php/src/Google/Protobuf/Type.php \ - php/src/Google/Protobuf/UInt32Value.php \ - php/src/Google/Protobuf/UInt64Value.php \ - php/src/Google/Protobuf/Value.php \ - php/src/phpdoc.dist.xml \ - php/tests/array_test.php \ - php/tests/autoload.php \ - php/tests/bootstrap_phpunit.php \ - php/tests/compatibility_test.sh \ - php/tests/compile_extension.sh \ - php/tests/descriptors_test.php \ - php/tests/encode_decode_test.php \ - php/tests/gdb_test.sh \ - php/tests/generated_class_test.php \ - php/tests/generated_phpdoc_test.php \ - php/tests/generated_service_test.php \ - php/tests/map_field_test.php \ - php/tests/memory_leak_test.php \ - php/tests/php_implementation_test.php \ - php/tests/proto/empty/echo.proto \ - php/tests/proto/test.proto \ - php/tests/proto/test_descriptors.proto \ - php/tests/proto/test_empty_php_namespace.proto \ - php/tests/proto/test_import_descriptor_proto.proto \ - php/tests/proto/test_include.proto \ - php/tests/proto/test_no_namespace.proto \ - php/tests/proto/test_php_namespace.proto \ - php/tests/proto/test_prefix.proto \ - php/tests/proto/test_reserved_enum_lower.proto \ - php/tests/proto/test_reserved_enum_upper.proto \ - php/tests/proto/test_reserved_enum_value_lower.proto \ - php/tests/proto/test_reserved_enum_value_upper.proto \ - php/tests/proto/test_reserved_message_lower.proto \ - php/tests/proto/test_reserved_message_upper.proto \ - php/tests/proto/test_service.proto \ - php/tests/proto/test_service_namespace.proto \ - php/tests/proto/test_wrapper_type_setters.proto \ - php/tests/test.sh \ - php/tests/test_base.php \ - php/tests/test_util.php \ - php/tests/undefined_test.php \ - php/tests/well_known_test.php \ - php/tests/wrapper_type_setters_test.php - -python_EXTRA_DIST= \ - python/MANIFEST.in \ - python/google/__init__.py \ - python/google/protobuf/__init__.py \ - python/google/protobuf/compiler/__init__.py \ - python/google/protobuf/descriptor.py \ - python/google/protobuf/descriptor_database.py \ - python/google/protobuf/descriptor_pool.py \ - python/google/protobuf/internal/__init__.py \ - python/google/protobuf/internal/_parameterized.py \ - python/google/protobuf/internal/any_test.proto \ - python/google/protobuf/internal/any_test.proto \ - python/google/protobuf/internal/api_implementation.cc \ - python/google/protobuf/internal/api_implementation.py \ - python/google/protobuf/internal/containers.py \ - python/google/protobuf/internal/decoder.py \ - python/google/protobuf/internal/descriptor_database_test.py \ - python/google/protobuf/internal/descriptor_pool_test.py \ - python/google/protobuf/internal/descriptor_pool_test1.proto \ - python/google/protobuf/internal/descriptor_pool_test2.proto \ - python/google/protobuf/internal/descriptor_test.py \ - python/google/protobuf/internal/encoder.py \ - python/google/protobuf/internal/enum_type_wrapper.py \ - python/google/protobuf/internal/extension_dict.py \ - python/google/protobuf/internal/factory_test1.proto \ - python/google/protobuf/internal/factory_test2.proto \ - python/google/protobuf/internal/file_options_test.proto \ - python/google/protobuf/internal/generator_test.py \ - python/google/protobuf/internal/import_test_package/__init__.py \ - python/google/protobuf/internal/import_test_package/inner.proto \ - python/google/protobuf/internal/import_test_package/outer.proto \ - python/google/protobuf/internal/json_format_test.py \ - python/google/protobuf/internal/keywords_test.py \ - python/google/protobuf/internal/message_factory_test.py \ - python/google/protobuf/internal/message_listener.py \ - python/google/protobuf/internal/message_set_extensions.proto \ - python/google/protobuf/internal/message_test.py \ - python/google/protobuf/internal/missing_enum_values.proto \ - python/google/protobuf/internal/more_extensions.proto \ - python/google/protobuf/internal/more_extensions_dynamic.proto \ - python/google/protobuf/internal/more_messages.proto \ - python/google/protobuf/internal/no_package.proto \ - python/google/protobuf/internal/packed_field_test.proto \ - python/google/protobuf/internal/proto_builder_test.py \ - python/google/protobuf/internal/python_message.py \ - python/google/protobuf/internal/python_protobuf.cc \ - python/google/protobuf/internal/reflection_test.py \ - python/google/protobuf/internal/service_reflection_test.py \ - python/google/protobuf/internal/symbol_database_test.py \ - python/google/protobuf/internal/test_bad_identifiers.proto \ - python/google/protobuf/internal/test_util.py \ - python/google/protobuf/internal/testing_refleaks.py \ - python/google/protobuf/internal/text_encoding_test.py \ - python/google/protobuf/internal/text_format_test.py \ - python/google/protobuf/internal/type_checkers.py \ - python/google/protobuf/internal/unknown_fields_test.py \ - python/google/protobuf/internal/well_known_types.py \ - python/google/protobuf/internal/well_known_types.py \ - python/google/protobuf/internal/well_known_types_test.py \ - python/google/protobuf/internal/well_known_types_test.py \ - python/google/protobuf/internal/wire_format.py \ - python/google/protobuf/internal/wire_format_test.py \ - python/google/protobuf/json_format.py \ - python/google/protobuf/message.py \ - python/google/protobuf/message_factory.py \ - python/google/protobuf/python_protobuf.h \ - python/google/protobuf/proto_api.h \ - python/google/protobuf/proto_builder.py \ - python/google/protobuf/pyext/README \ - python/google/protobuf/pyext/__init__.py \ - python/google/protobuf/pyext/cpp_message.py \ - python/google/protobuf/pyext/descriptor.cc \ - python/google/protobuf/pyext/descriptor.h \ - python/google/protobuf/pyext/descriptor_containers.cc \ - python/google/protobuf/pyext/descriptor_containers.h \ - python/google/protobuf/pyext/descriptor_database.cc \ - python/google/protobuf/pyext/descriptor_database.h \ - python/google/protobuf/pyext/descriptor_pool.cc \ - python/google/protobuf/pyext/descriptor_pool.h \ - python/google/protobuf/pyext/extension_dict.cc \ - python/google/protobuf/pyext/extension_dict.h \ - python/google/protobuf/pyext/map_container.cc \ - python/google/protobuf/pyext/map_container.h \ - python/google/protobuf/pyext/message.cc \ - python/google/protobuf/pyext/message.h \ - python/google/protobuf/pyext/field.cc \ - python/google/protobuf/pyext/field.h \ - python/google/protobuf/pyext/unknown_fields.cc \ - python/google/protobuf/pyext/unknown_fields.h \ - python/google/protobuf/pyext/message_factory.cc \ - python/google/protobuf/pyext/message_factory.h \ - python/google/protobuf/pyext/message_module.cc \ - python/google/protobuf/pyext/proto2_api_test.proto \ - python/google/protobuf/pyext/python.proto \ - python/google/protobuf/pyext/repeated_composite_container.cc \ - python/google/protobuf/pyext/repeated_composite_container.h \ - python/google/protobuf/pyext/repeated_scalar_container.cc \ - python/google/protobuf/pyext/repeated_scalar_container.h \ - python/google/protobuf/pyext/safe_numerics.h \ - python/google/protobuf/pyext/scoped_pyobject_ptr.h \ - python/google/protobuf/reflection.py \ - python/google/protobuf/service.py \ - python/google/protobuf/service_reflection.py \ - python/google/protobuf/symbol_database.py \ - python/google/protobuf/text_encoding.py \ - python/google/protobuf/text_format.py \ - python/google/protobuf/util/__init__.py \ - python/release.sh \ - python/mox.py \ - python/setup.cfg \ - python/setup.py \ - python/stubout.py \ - python/tox.ini \ - python/README.md - -ruby_EXTRA_DIST= \ - ruby/Gemfile \ - ruby/.gitignore \ - ruby/README.md \ - ruby/Rakefile \ - ruby/compatibility_tests/v3.0.0/tests/test_import.proto \ - ruby/compatibility_tests/v3.0.0/tests/stress.rb \ - ruby/compatibility_tests/v3.0.0/tests/repeated_field_test.rb \ - ruby/compatibility_tests/v3.0.0/tests/generated_code_test.rb \ - ruby/compatibility_tests/v3.0.0/tests/generated_code.proto \ - ruby/compatibility_tests/v3.0.0/tests/basic.rb \ - ruby/compatibility_tests/v3.0.0/test.sh \ - ruby/compatibility_tests/v3.0.0/Rakefile \ - ruby/compatibility_tests/v3.0.0/README.md \ - ruby/ext/google/protobuf_c/defs.c \ - ruby/ext/google/protobuf_c/encode_decode.c \ - ruby/ext/google/protobuf_c/extconf.rb \ - ruby/ext/google/protobuf_c/map.c \ - ruby/ext/google/protobuf_c/message.c \ - ruby/ext/google/protobuf_c/protobuf.c \ - ruby/ext/google/protobuf_c/protobuf.h \ - ruby/ext/google/protobuf_c/repeated_field.c \ - ruby/ext/google/protobuf_c/storage.c \ - ruby/ext/google/protobuf_c/upb.c \ - ruby/ext/google/protobuf_c/upb.h \ - ruby/ext/google/protobuf_c/wrap_memcpy.c \ - ruby/google-protobuf.gemspec \ - ruby/lib/google/protobuf/message_exts.rb \ - ruby/lib/google/protobuf/repeated_field.rb \ - ruby/lib/google/protobuf/well_known_types.rb \ - ruby/lib/google/protobuf.rb \ - ruby/pom.xml \ - ruby/src/main/java/com/google/protobuf/jruby/RubyBuilder.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyDescriptor.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyDescriptorPool.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyEnumBuilderContext.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyEnumDescriptor.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyEnum.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyFieldDescriptor.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyMap.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyMessageBuilderContext.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyMessage.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyOneofBuilderContext.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyOneofDescriptor.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyProtobuf.java \ - ruby/src/main/java/com/google/protobuf/jruby/RubyRepeatedField.java \ - ruby/src/main/java/com/google/protobuf/jruby/SentinelOuterClass.java \ - ruby/src/main/java/com/google/protobuf/jruby/Utils.java \ - ruby/src/main/java/google/ProtobufJavaService.java \ - ruby/src/main/sentinel.proto \ - ruby/tests/basic_proto2.rb \ - ruby/tests/basic_test_proto2.proto \ - ruby/tests/basic_test.proto \ - ruby/tests/basic.rb \ - ruby/tests/common_tests.rb \ - ruby/tests/encode_decode_test.rb \ - ruby/tests/gc_test.rb \ - ruby/tests/repeated_field_test.rb \ - ruby/tests/stress.rb \ - ruby/tests/generated_code_proto2_test.rb \ - ruby/tests/generated_code_proto2.proto \ - ruby/tests/generated_code.proto \ - ruby/tests/test_import_proto2.proto \ - ruby/tests/test_import.proto \ - ruby/tests/test_ruby_package_proto2.proto \ - ruby/tests/test_ruby_package.proto \ - ruby/tests/generated_code_test.rb \ - ruby/tests/well_known_types_test.rb \ - ruby/tests/type_errors.rb \ - ruby/travis-test.sh - -js_EXTRA_DIST= \ - js/README.md \ - js/binary/arith.js \ - js/binary/arith_test.js \ - js/binary/constants.js \ - js/binary/decoder.js \ - js/binary/decoder_test.js \ - js/binary/encoder.js \ - js/binary/message_test.js \ - js/binary/proto_test.js \ - js/binary/reader.js \ - js/binary/reader_test.js \ - js/binary/utils.js \ - js/binary/utils_test.js \ - js/binary/writer.js \ - js/binary/writer_test.js \ - js/commonjs/export.js \ - js/commonjs/export_asserts.js \ - js/commonjs/export_testdeps.js \ - js/commonjs/import_test.js \ - js/commonjs/jasmine.json \ - js/commonjs/rewrite_tests_for_commonjs.js \ - js/commonjs/strict_test.js \ - js/commonjs/test6/test6.proto \ - js/commonjs/test7/test7.proto \ - js/compatibility_tests/v3.0.0/binary/arith_test.js \ - js/compatibility_tests/v3.0.0/binary/decoder_test.js \ - js/compatibility_tests/v3.0.0/binary/proto_test.js \ - js/compatibility_tests/v3.0.0/binary/reader_test.js \ - js/compatibility_tests/v3.0.0/binary/utils_test.js \ - js/compatibility_tests/v3.0.0/binary/writer_test.js \ - js/compatibility_tests/v3.0.0/commonjs/export_asserts.js \ - js/compatibility_tests/v3.0.0/commonjs/export_testdeps.js \ - js/compatibility_tests/v3.0.0/commonjs/import_test.js \ - js/compatibility_tests/v3.0.0/commonjs/jasmine.json \ - js/compatibility_tests/v3.0.0/commonjs/rewrite_tests_for_commonjs.js \ - js/compatibility_tests/v3.0.0/commonjs/test6/test6.proto \ - js/compatibility_tests/v3.0.0/commonjs/test7/test7.proto \ - js/compatibility_tests/v3.0.0/data.proto \ - js/compatibility_tests/v3.0.0/debug_test.js \ - js/compatibility_tests/v3.0.0/jasmine1.json \ - js/compatibility_tests/v3.0.0/jasmine2.json \ - js/compatibility_tests/v3.0.0/jasmine3.json \ - js/compatibility_tests/v3.0.0/message_test.js \ - js/compatibility_tests/v3.0.0/proto3_test.js \ - js/compatibility_tests/v3.0.0/proto3_test.proto \ - js/compatibility_tests/v3.0.0/test2.proto \ - js/compatibility_tests/v3.0.0/test3.proto \ - js/compatibility_tests/v3.0.0/test4.proto \ - js/compatibility_tests/v3.0.0/test5.proto \ - js/compatibility_tests/v3.0.0/testbinary.proto \ - js/compatibility_tests/v3.0.0/testempty.proto \ - js/compatibility_tests/v3.0.0/test.proto \ - js/compatibility_tests/v3.0.0/test.sh \ - js/compatibility_tests/v3.1.0/testempty.proto \ - js/compatibility_tests/v3.1.0/testbinary.proto \ - js/compatibility_tests/v3.1.0/test5.proto \ - js/compatibility_tests/v3.1.0/test4.proto \ - js/compatibility_tests/v3.1.0/test3.proto \ - js/compatibility_tests/v3.1.0/test2.proto \ - js/compatibility_tests/v3.1.0/test.proto \ - js/compatibility_tests/v3.1.0/proto3_test.proto \ - js/compatibility_tests/v3.1.0/proto3_test.js \ - js/compatibility_tests/v3.1.0/message_test.js \ - js/compatibility_tests/v3.1.0/maps_test.js \ - js/compatibility_tests/v3.1.0/debug_test.js \ - js/compatibility_tests/v3.1.0/data.proto \ - js/compatibility_tests/v3.1.0/commonjs/test7/test7.proto \ - js/compatibility_tests/v3.1.0/commonjs/test6/test6.proto \ - js/compatibility_tests/v3.1.0/binary/writer_test.js \ - js/compatibility_tests/v3.1.0/binary/utils_test.js \ - js/compatibility_tests/v3.1.0/binary/reader_test.js \ - js/compatibility_tests/v3.1.0/binary/proto_test.js \ - js/compatibility_tests/v3.1.0/binary/decoder_test.js \ - js/compatibility_tests/v3.1.0/binary/arith_test.js \ - js/data.proto \ - js/debug.js \ - js/debug_test.js \ - js/gulpfile.js \ - js/jasmine.json \ - js/map.js \ - js/maps_test.js \ - js/message.js \ - js/message_test.js \ - js/node_loader.js \ - js/package.json \ - js/proto3_test.js \ - js/proto3_test.proto \ - js/test.proto \ - js/test2.proto \ - js/test3.proto \ - js/test4.proto \ - js/test5.proto \ - js/test8.proto \ - js/test9.proto \ - js/test10.proto \ - js/test11.proto \ - js/test12.proto \ - js/test13.proto \ - js/test14.proto \ - js/test15.proto \ - js/test_bootstrap.js \ - js/testbinary.proto \ - js/testempty.proto - -all_EXTRA_DIST=$(csharp_EXTRA_DIST) $(java_EXTRA_DIST) $(objectivec_EXTRA_DIST) $(php_EXTRA_DIST) $(python_EXTRA_DIST) $(ruby_EXTRA_DIST) $(js_EXTRA_DIST) - -EXTRA_DIST = $(@DIST_LANG@_EXTRA_DIST) \ - autogen.sh \ - generate_descriptor_proto.sh \ - README.md \ - LICENSE \ - CONTRIBUTORS.txt \ - CHANGES.txt \ - update_file_lists.sh \ - BUILD \ - WORKSPACE \ - cmake/CMakeLists.txt \ - cmake/README.md \ - cmake/conformance.cmake \ - cmake/examples.cmake \ - cmake/extract_includes.bat.in \ - cmake/install.cmake \ - cmake/libprotobuf.cmake \ - cmake/libprotobuf-lite.cmake \ - cmake/libprotoc.cmake \ - cmake/protobuf-config-version.cmake.in \ - cmake/protobuf-config.cmake.in \ - cmake/protobuf-lite.pc.cmake \ - cmake/protobuf-module.cmake.in \ - cmake/protobuf-options.cmake \ - cmake/protobuf.pc.cmake \ - cmake/protoc.cmake \ - cmake/tests.cmake \ - cmake/version.rc.in \ - compiler_config_setting.bzl \ - editors/README.txt \ - editors/proto.vim \ - editors/protobuf-mode.el \ - examples/AddPerson.java \ - examples/BUILD \ - examples/CMakeLists.txt \ - examples/ListPeople.java \ - examples/Makefile \ - examples/README.md \ - examples/WORKSPACE \ - examples/add_person.cc \ - examples/add_person.dart \ - examples/add_person.go \ - examples/add_person.py \ - examples/add_person_test.go \ - examples/addressbook.proto \ - examples/list_people.cc \ - examples/list_people.dart \ - examples/list_people.go \ - examples/list_people.py \ - examples/list_people_test.go \ - examples/pubspec.yaml \ - examples/third_party/zlib.BUILD \ - protobuf.bzl \ - protobuf_deps.bzl \ - python/release/wheel/build_wheel_manylinux.sh \ - python/release/wheel/Dockerfile \ - python/release/wheel/protobuf_optimized_pip.sh \ - python/release/wheel/README.md \ - six.BUILD \ - third_party/zlib.BUILD \ - util/python/BUILD - - -# Deletes all the files generated by autogen.sh. -MAINTAINERCLEANFILES = \ - aclocal.m4 \ - ar-lib \ - config.guess \ - config.sub \ - configure \ - depcomp \ - install-sh \ - ltmain.sh \ - Makefile.in \ - missing \ - mkinstalldirs \ - config.h.in \ - stamp.h.in \ - m4/ltsugar.m4 \ - m4/libtool.m4 \ - m4/ltversion.m4 \ - m4/lt~obsolete.m4 \ - m4/ltoptions.m4 diff --git a/lib/protobuf/NOTICE b/lib/protobuf/NOTICE deleted file mode 120000 index 7a694c9..0000000 --- a/lib/protobuf/NOTICE +++ /dev/null @@ -1 +0,0 @@ -LICENSE \ No newline at end of file diff --git a/lib/protobuf/OWNERS b/lib/protobuf/OWNERS deleted file mode 100644 index 7c51a12..0000000 --- a/lib/protobuf/OWNERS +++ /dev/null @@ -1,4 +0,0 @@ -# Default code reviewers picked from top 3 or more developers. -# Please update this list if you find better candidates. -ccross@google.com -joeo@google.com diff --git a/lib/protobuf/Protobuf.podspec b/lib/protobuf/Protobuf.podspec deleted file mode 100644 index f37de25..0000000 --- a/lib/protobuf/Protobuf.podspec +++ /dev/null @@ -1,42 +0,0 @@ -# This file describes to Cocoapods how to integrate the Objective-C runtime into a dependent -# project. -# Despite this file being specific to Objective-C, it needs to be on the root of the repository. -# Otherwise, Cocoapods gives trouble like not picking up the license file correctly, or not letting -# dependent projects use the :git notation to refer to the library. -Pod::Spec.new do |s| - s.name = 'Protobuf' - s.version = '3.9.1' - s.summary = 'Protocol Buffers v.3 runtime library for Objective-C.' - s.homepage = 'https://github.com/protocolbuffers/protobuf' - s.license = '3-Clause BSD License' - s.authors = { 'The Protocol Buffers contributors' => 'protobuf@googlegroups.com' } - s.cocoapods_version = '>= 1.0' - - s.source = { :git => 'https://github.com/protocolbuffers/protobuf.git', - :tag => "v#{s.version}" } - - s.source_files = 'objectivec/*.{h,m}', - 'objectivec/google/protobuf/Any.pbobjc.{h,m}', - 'objectivec/google/protobuf/Api.pbobjc.{h,m}', - 'objectivec/google/protobuf/Duration.pbobjc.{h,m}', - '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,m}', - 'objectivec/google/protobuf/Type.pbobjc.{h,m}', - 'objectivec/google/protobuf/Wrappers.pbobjc.{h,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' - - # Set a CPP symbol so the code knows to use framework imports. - s.user_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1' } - s.pod_target_xcconfig = { 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS=1' } - - s.ios.deployment_target = '7.0' - s.osx.deployment_target = '10.9' - s.tvos.deployment_target = '9.0' - s.watchos.deployment_target = '2.0' - s.requires_arc = false -end diff --git a/lib/protobuf/README.android b/lib/protobuf/README.android deleted file mode 100644 index f1e97d9..0000000 --- a/lib/protobuf/README.android +++ /dev/null @@ -1,30 +0,0 @@ -URL: http://code.google.com/p/protobuf/downloads/list -Version: v3.0.0-beta3 -License: Google BSD like -Description: "Protobuf: The Google protobuf compiler and runtimes for various languages" - -Local changes: - -Local Modifications: - - Initial changes include support for the micro protobuf compiler and the - assoicated runtime. - - https://github.com/google/protobuf/pull/2732: const FieldDescriptorCompare - -Protocol Buffers are a way of encoding structured data in an efficient -yet extensible format. Google uses Protocol Buffers for almost all -of its internal RPC protocols and file formats. - -Initially the protoc compiler is not integrated into the Android build system -and the Android.mk will simply build the javamicro runtime static library. - -To build the compiler follow the instructions in README.txt for -compiling and installing. - -The Android.mk file creates the a static library which can be added -to any Android application by Adding to LOCAL_STATIC_JAVA_LIBRARIES -com.google.protobuf.micro: - - LOCAL_STATIC_JAVA_LIBRARIES += com.google.protobuf.micro - -Follow the instructions in Micro section of java/README.txt for -details on compiling .proto files for the micro runtine. diff --git a/lib/protobuf/README.md b/lib/protobuf/README.md deleted file mode 100644 index 049b8cc..0000000 --- a/lib/protobuf/README.md +++ /dev/null @@ -1,85 +0,0 @@ -Protocol Buffers - Google's data interchange format -=================================================== - -Copyright 2008 Google Inc. - -https://developers.google.com/protocol-buffers/ - -Overview --------- - -Protocol Buffers (a.k.a., protobuf) are Google's language-neutral, -platform-neutral, extensible mechanism for serializing structured data. You -can find [protobuf's documentation on the Google Developers site](https://developers.google.com/protocol-buffers/). - -This README file contains protobuf installation instructions. To install -protobuf, you need to install the protocol compiler (used to compile .proto -files) and the protobuf runtime for your chosen programming language. - -Protocol Compiler Installation ------------------------------- - -The protocol compiler is written in C++. If you are using C++, please follow -the [C++ Installation Instructions](src/README.md) to install protoc along -with the C++ runtime. - -For non-C++ users, the simplest way to install the protocol compiler is to -download a pre-built binary from our release page: - - [https://github.com/protocolbuffers/protobuf/releases](https://github.com/protocolbuffers/protobuf/releases) - -In the downloads section of each release, you can find pre-built binaries in -zip packages: protoc-$VERSION-$PLATFORM.zip. It contains the protoc binary -as well as a set of standard .proto files distributed along with protobuf. - -If you are looking for an old version that is not available in the release -page, check out the maven repo here: - - [https://repo1.maven.org/maven2/com/google/protobuf/protoc/](https://repo1.maven.org/maven2/com/google/protobuf/protoc/) - -These pre-built binaries are only provided for released versions. If you want -to use the github master version at HEAD, or you need to modify protobuf code, -or you are using C++, it's recommended to build your own protoc binary from -source. - -If you would like to build protoc binary from source, see the [C++ Installation -Instructions](src/README.md). - -Protobuf Runtime Installation ------------------------------ - -Protobuf supports several different programming languages. For each programming -language, you can find instructions in the corresponding source directory about -how to install protobuf runtime for that specific language: - -| Language | Source | Ubuntu | MacOS | Windows | -|--------------------------------------|-------------------------------------------------------------|--------|-------|---------| -| C++ (include C++ runtime and protoc) | [src](src) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-cpp_distcheck.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fcpp_distcheck%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-bazel.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fbazel%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-dist_install.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fdist_install%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fcpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-cpp_distcheck.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fcpp_distcheck%2Fcontinuous) | [![Build status](https://ci.appveyor.com/api/projects/status/73ctee6ua4w2ruin?svg=true)](https://ci.appveyor.com/project/protobuf/protobuf) | -| Java | [java](java) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_compatibility.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_compatibility%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_jdk7.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_jdk7%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-java_oracle7.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjava_oracle7%2Fcontinuous) | | | -| Python | [python](python) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python33.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython33%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python34.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython34%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python_compatibility.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_compatibility%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python27_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython27_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python33_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython33_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python34_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython34_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python35_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython35_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python36_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython36_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python37_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython37_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python_cpp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_cpp%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fpython_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/windows-python-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fwindows%2Fpython_release%2Fcontinuous) | -| Objective-C | [objectivec](objectivec) | | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_cocoapods_integration.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_cocoapods_integration%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_ios_debug.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_ios_debug%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_ios_release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_ios_release%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-objectivec_osx.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fobjectivec_osx%2Fcontinuous) | | -| C# | [csharp](csharp) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-csharp.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fcsharp%2Fcontinuous) | | [![Build status](https://ci.appveyor.com/api/projects/status/73ctee6ua4w2ruin?svg=true)](https://ci.appveyor.com/project/protobuf/protobuf)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/windows-csharp-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fwindows%2Fcsharp_release%2Fcontinuous) | -| JavaScript | [js](js) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-javascript.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fjavascript%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-javascript.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fjavascript%2Fcontinuous) | | -| Ruby | [ruby](ruby) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-ruby23.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fruby23%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-ruby24.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fruby24%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-ruby25.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fruby25%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-ruby26.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fruby26%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-ruby-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fruby_release%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-ruby23.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fruby23%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-ruby24.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fruby24%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-ruby25.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fruby25%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-ruby26.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fruby26%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-ruby-release.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fruby_release%2Fcontinuous) | | -| Go | [golang/protobuf](https://github.com/golang/protobuf) | | | | -| PHP | [php](php) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-php_all.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2Fphp_all%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/linux-32-bit.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fubuntu%2F32-bit%2Fcontinuous) | [![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-php5.6_mac.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fphp5.6_mac%2Fcontinuous)
[![Build status](https://storage.googleapis.com/protobuf-kokoro-results/status-badge/macos-php7.0_mac.png)](https://fusion.corp.google.com/projectanalysis/current/KOKORO/prod:protobuf%2Fgithub%2Fmaster%2Fmacos%2Fphp7.0_mac%2Fcontinuous) | | -| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) | [![Build Status](https://travis-ci.org/dart-lang/protobuf.svg?branch=master)](https://travis-ci.org/dart-lang/protobuf) | | | - -Quick Start ------------ - -The best way to learn how to use protobuf is to follow the tutorials in our -developer guide: - -https://developers.google.com/protocol-buffers/docs/tutorials - -If you want to learn from code examples, take a look at the examples in the -[examples](examples) directory. - -Documentation -------------- - -The complete documentation for Protocol Buffers is available via the -web at: - -https://developers.google.com/protocol-buffers/ diff --git a/lib/protobuf/TEST_MAPPING b/lib/protobuf/TEST_MAPPING deleted file mode 100644 index 21a5334..0000000 --- a/lib/protobuf/TEST_MAPPING +++ /dev/null @@ -1,7 +0,0 @@ -{ - "presubmit": [ - { - "name": "libprotobuf_vendor_suffix_test" - } - ] -} diff --git a/lib/protobuf/WORKSPACE b/lib/protobuf/WORKSPACE deleted file mode 100644 index 3687680..0000000 --- a/lib/protobuf/WORKSPACE +++ /dev/null @@ -1,77 +0,0 @@ -workspace(name = "com_google_protobuf") - -load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") -load("//:protobuf_deps.bzl", "protobuf_deps") - -# Load common dependencies. -protobuf_deps() - -new_local_repository( - name = "submodule_gmock", - build_file = "@//:third_party/googletest/BUILD.bazel", - path = "third_party/googletest", -) - -http_archive( - name = "six_archive", - build_file = "@//:six.BUILD", - sha256 = "105f8d68616f8248e24bf0e9372ef04d3cc10104f1980f54d57b2ce73a5ad56a", - urls = ["https://pypi.python.org/packages/source/s/six/six-1.10.0.tar.gz#md5=34eed507548117b2ab523ab14b2f8b55"], -) - -http_archive( - name = "bazel_skylib", - sha256 = "bbccf674aa441c266df9894182d80de104cabd19be98be002f6d478aaa31574d", - strip_prefix = "bazel-skylib-2169ae1c374aab4a09aa90e65efe1a3aad4e279b", - urls = ["https://github.com/bazelbuild/bazel-skylib/archive/2169ae1c374aab4a09aa90e65efe1a3aad4e279b.tar.gz"], -) - -bind( - name = "python_headers", - actual = "//util/python:python_headers", -) - -bind( - name = "gtest", - actual = "@submodule_gmock//:gtest", -) - -bind( - name = "gtest_main", - actual = "@submodule_gmock//:gtest_main", -) - -bind( - name = "six", - actual = "@six_archive//:six", -) - -maven_jar( - name = "guava_maven", - artifact = "com.google.guava:guava:18.0", -) - -bind( - name = "guava", - actual = "@guava_maven//jar", -) - -maven_jar( - name = "gson_maven", - artifact = "com.google.code.gson:gson:2.7", -) - -bind( - name = "gson", - actual = "@gson_maven//jar", -) - -maven_jar( - name = "error_prone_annotations_maven", - artifact = "com.google.errorprone:error_prone_annotations:2.3.2", -) - -bind( - name = "error_prone_annotations", - actual = "@error_prone_annotations_maven//jar", -) diff --git a/lib/protobuf/android/config.h b/lib/protobuf/android/config.h deleted file mode 100644 index 79219e4..0000000 --- a/lib/protobuf/android/config.h +++ /dev/null @@ -1,155 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* the name of */ -#define HASH_MAP_CLASS unordered_map - -/* the location of or */ -#define HASH_MAP_H - -/* the namespace of hash_map/hash_set */ -#define HASH_NAMESPACE std - -/* the name of */ -#define HASH_SET_CLASS unordered_set - -/* the location of or */ -#define HASH_SET_H - -/* define if the compiler supports basic C++11 syntax */ -#define HAVE_CXX11 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `ftruncate' function. */ -#define HAVE_FTRUNCATE 1 - -/* define if the compiler has hash_map */ -#define HAVE_HASH_MAP 1 - -/* define if the compiler has hash_set */ -#define HAVE_HASH_SET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `memset' function. */ -#define HAVE_MEMSET 1 - -/* Define to 1 if you have the `mkdir' function. */ -#define HAVE_MKDIR 1 - -/* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 - -/* Have PTHREAD_PRIO_INHERIT. */ -#define HAVE_PTHREAD_PRIO_INHERIT 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strchr' function. */ -#define HAVE_STRCHR 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strtol' function. */ -#define HAVE_STRTOL 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Enable classes using zlib compression. */ -#define HAVE_ZLIB 1 - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#define LT_OBJDIR ".libs/" - -/* Name of package */ -#define PACKAGE "protobuf" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "Protocol Buffers" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "Protocol Buffers 3.9.1" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "protobuf" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "3.9.1" - -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef PTHREAD_CREATE_JOINABLE */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif - - -/* Version number of package */ -#define VERSION "3.9.1" - -/* Define to 1 if on MINIX. */ -/* #undef _MINIX */ - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -/* #undef _POSIX_1_SOURCE */ - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -/* #undef _POSIX_SOURCE */ diff --git a/lib/protobuf/appveyor.bat b/lib/protobuf/appveyor.bat deleted file mode 100644 index 7a35ceb..0000000 --- a/lib/protobuf/appveyor.bat +++ /dev/null @@ -1,48 +0,0 @@ -setlocal - -IF %platform%==MinGW GOTO build_mingw -IF %language%==cpp GOTO build_cpp -IF %language%==csharp GOTO build_csharp - -echo Unsupported language %language% and platform %platform%. Exiting. -goto :error - -:build_mingw -echo Building MinGW -set PATH=C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH:C:\Program Files\Git\usr\bin;=% -mkdir build_mingw -cd build_mingw -cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% -Dprotobuf_BUILD_TESTS=0 ../cmake -mingw32-make -j8 all || goto error -rem cd %configuration% -rem tests.exe || goto error -goto :EOF - -:build_cpp -echo Building C++ -mkdir build_msvc -cd build_msvc -cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% ../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 -REM The platform environment variable is implicitly used by msbuild; -REM we don't want it. -set platform= -dotnet restore -dotnet build -c %configuration% || goto error - -echo Testing C# -dotnet test -c %configuration% -f netcoreapp2.1 Google.Protobuf.Test\Google.Protobuf.Test.csproj || goto error -dotnet test -c %configuration% -f net451 Google.Protobuf.Test\Google.Protobuf.Test.csproj || goto error - -goto :EOF - -:error -echo Failed! -EXIT /b %ERRORLEVEL% diff --git a/lib/protobuf/appveyor.yml b/lib/protobuf/appveyor.yml deleted file mode 100644 index 91f737a..0000000 --- a/lib/protobuf/appveyor.yml +++ /dev/null @@ -1,47 +0,0 @@ -configuration: - - Debug - -environment: - matrix: - # Only test few combinations: "Visual Studio 2015 (14) + Win64/MinGW + Debug + DLL". We can - # test more combinations but AppVeyor just takes too long to finish (each - # combination takes ~15mins). - - platform: MinGW - language: cpp - image: Visual Studio 2015 - - - platform: Win64 - language: cpp - image: Visual Studio 2015 - BUILD_DLL: ON - UNICODE: ON - - - platform: Win64 - language: cpp - image: Visual Studio 2017 - BUILD_DLL: OFF - UNICODE: ON - - - platform: Win64 - language: csharp - image: Visual Studio 2017 - -# Our build scripts run tests automatically; we don't want AppVeyor -# to try to detect them itself. -test: off - -install: - - git submodule update --init --recursive - -before_build: - - if %platform%==MinGW set generator=MinGW Makefiles - - if %platform%==Win32 set generator=Visual Studio 14 - - if %platform%==Win64 set generator=Visual Studio 14 Win64 - - if %platform%==Win32 set vcplatform=Win32 - - if %platform%==Win64 set vcplatform=x64 - -build_script: - - CALL appveyor.bat - -skip_commits: - message: /.*\[skip appveyor\].*/ diff --git a/lib/protobuf/autogen.sh b/lib/protobuf/autogen.sh deleted file mode 100755 index d00d217..0000000 --- a/lib/protobuf/autogen.sh +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/sh - -# Run this script to generate the configure script and other files that will -# be included in the distribution. These files are not checked in because they -# are automatically generated. - -set -e - -if [ ! -z "$@" ]; then - for argument in "$@"; do - case $argument in - # make curl silent - "-s") - curlopts="-s" - ;; - esac - done -fi - -# Check that we're being run from the right directory. -if test ! -f src/google/protobuf/stubs/common.h; then - cat >&2 << __EOF__ -Could not find source code. Make sure you are running this script from the -root of the distribution tree. -__EOF__ - exit 1 -fi - -set -ex - -# The absence of a m4 directory in googletest causes autoreconf to fail when -# building under the CentOS docker image. It's a warning in regular build on -# Ubuntu/gLinux as well. -mkdir -p third_party/googletest/m4 - -# TODO(kenton): Remove the ",no-obsolete" part and fix the resulting warnings. -autoreconf -f -i -Wall,no-obsolete - -rm -rf autom4te.cache config.h.in~ -exit 0 diff --git a/lib/protobuf/benchmarks/Makefile.am b/lib/protobuf/benchmarks/Makefile.am deleted file mode 100644 index 4233497..0000000 --- a/lib/protobuf/benchmarks/Makefile.am +++ /dev/null @@ -1,658 +0,0 @@ -benchmarks_protoc_inputs_benchmark_wrapper = \ - benchmarks.proto - -benchmarks_protoc_inputs = \ - datasets/google_message1/proto3/benchmark_message1_proto3.proto - -benchmarks_protoc_inputs_proto2 = \ - datasets/google_message1/proto2/benchmark_message1_proto2.proto \ - datasets/google_message2/benchmark_message2.proto \ - datasets/google_message3/benchmark_message3.proto \ - datasets/google_message3/benchmark_message3_1.proto \ - datasets/google_message3/benchmark_message3_2.proto \ - datasets/google_message3/benchmark_message3_3.proto \ - datasets/google_message3/benchmark_message3_4.proto \ - datasets/google_message3/benchmark_message3_5.proto \ - datasets/google_message3/benchmark_message3_6.proto \ - datasets/google_message3/benchmark_message3_7.proto \ - datasets/google_message3/benchmark_message3_8.proto \ - datasets/google_message4/benchmark_message4.proto \ - datasets/google_message4/benchmark_message4_1.proto \ - datasets/google_message4/benchmark_message4_2.proto \ - datasets/google_message4/benchmark_message4_3.proto - -make_tmp_dir: - mkdir -p 'tmp/java/src/main/java' - touch make_tmp_dir - - -# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is -# relative to srcdir, which may not be the same as the current directory when -# building out-of-tree. -protoc_middleman: make_tmp_dir $(top_srcdir)/src/protoc$(EXEEXT) $(benchmarks_protoc_inputs) $(well_known_type_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd/cpp --java_out=$$oldpwd/tmp/java/src/main/java --python_out=$$oldpwd/tmp $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) ) - touch protoc_middleman - -protoc_middleman2: make_tmp_dir $(top_srcdir)/src/protoc$(EXEEXT) $(benchmarks_protoc_inputs_proto2) $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd/cpp --java_out=$$oldpwd/tmp/java/src/main/java --python_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2) ) - touch protoc_middleman2 - -all_data = $$(find $$(cd $(srcdir) && pwd) -type f -name "dataset.*.pb" -not -path "$$(cd $(srcdir) && pwd)/tmp/*") - -############# CPP RULES ############## - -benchmarks_protoc_outputs = \ - cpp/benchmarks.pb.cc \ - cpp/datasets/google_message1/proto3/benchmark_message1_proto3.pb.cc - -benchmarks_protoc_outputs_header = \ - cpp/benchmarks.pb.h \ - cpp/datasets/google_message1/proto3/benchmark_message1_proto3.pb.h - -benchmarks_protoc_outputs_proto2_header = \ - cpp/datasets/google_message1/proto2/benchmark_message1_proto2.pb.h \ - cpp/datasets/google_message2/benchmark_message2.pb.h \ - cpp/datasets/google_message3/benchmark_message3.pb.h \ - cpp/datasets/google_message3/benchmark_message3_1.pb.h \ - cpp/datasets/google_message3/benchmark_message3_2.pb.h \ - cpp/datasets/google_message3/benchmark_message3_3.pb.h \ - cpp/datasets/google_message3/benchmark_message3_4.pb.h \ - cpp/datasets/google_message3/benchmark_message3_5.pb.h \ - cpp/datasets/google_message3/benchmark_message3_6.pb.h \ - cpp/datasets/google_message3/benchmark_message3_7.pb.h \ - cpp/datasets/google_message3/benchmark_message3_8.pb.h \ - cpp/datasets/google_message4/benchmark_message4.pb.h \ - cpp/datasets/google_message4/benchmark_message4_1.pb.h \ - cpp/datasets/google_message4/benchmark_message4_2.pb.h \ - cpp/datasets/google_message4/benchmark_message4_3.pb.h - -benchmarks_protoc_outputs_proto2 = \ - cpp/datasets/google_message1/proto2/benchmark_message1_proto2.pb.cc \ - cpp/datasets/google_message2/benchmark_message2.pb.cc \ - cpp/datasets/google_message3/benchmark_message3.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_1.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_2.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_3.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_4.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_5.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_6.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_7.pb.cc \ - cpp/datasets/google_message3/benchmark_message3_8.pb.cc \ - cpp/datasets/google_message4/benchmark_message4.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_1.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_2.pb.cc \ - cpp/datasets/google_message4/benchmark_message4_3.pb.cc - - -$(benchmarks_protoc_outputs): protoc_middleman -$(benchmarks_protoc_outputs_header): protoc_middleman -$(benchmarks_protoc_outputs_proto2): protoc_middleman2 -$(benchmarks_protoc_outputs_proto2_header): protoc_middleman2 - -initialize_submodule: - oldpwd=`pwd` - cd $(top_srcdir) && git submodule update --init -r third_party/benchmark && \ - cd third_party/benchmark && cmake -DCMAKE_BUILD_TYPE=Release && make - cd $$oldpwd - touch initialize_submodule - -$(top_srcdir)/third_party/benchmark/src/libbenchmark.a: initialize_submodule - -AM_CXXFLAGS = $(NO_OPT_CXXFLAGS) $(PROTOBUF_OPT_FLAG) -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare - -bin_PROGRAMS = cpp-benchmark - -cpp_benchmark_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -cpp_benchmark_SOURCES = cpp/cpp_benchmark.cc -cpp_benchmark_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(top_srcdir)/third_party/benchmark/include -# Explicit deps because BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_cpp" could fail if parallel enough. -# See: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html#Recording-Dependencies-manually -cpp/cpp_benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -cpp/benchmark-cpp_benchmark.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -nodist_cpp_benchmark_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - -cpp: protoc_middleman protoc_middleman2 cpp-benchmark initialize_submodule - ./cpp-benchmark $(all_data) - -############ CPP RULES END ############ - -############# JAVA RULES ############## - -java_benchmark_testing_files = \ - java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java - -javac_middleman: $(java_benchmark_testing_files) protoc_middleman protoc_middleman2 - cp -r $(srcdir)/java tmp - mkdir -p tmp/java/lib - cp $(top_srcdir)/java/core/target/*.jar tmp/java/lib/protobuf-java.jar - cd tmp/java && mvn clean compile assembly:single -Dprotobuf.version=$(PACKAGE_VERSION) && cd ../.. - @touch javac_middleman - -java-benchmark: javac_middleman - @echo "Writing shortcut script java-benchmark..." - @echo '#! /bin/bash' > java-benchmark - @echo 'all_data=""' >> java-benchmark - @echo 'conf=()' >> java-benchmark - @echo 'data_files=""' >> java-benchmark - @echo 'for arg in $$@; do if [[ $${arg:0:1} == "-" ]]; then conf+=($$arg); else data_files+="$$arg,"; fi; done' >> java-benchmark - @echo 'java -cp '\"tmp/java/target/*:$(top_srcdir)/java/core/target/*:$(top_srcdir)/java/util/target/*\"" \\" >>java-benchmark - @echo ' com.google.caliper.runner.CaliperMain com.google.protobuf.ProtoCaliperBenchmark -i runtime '"\\" >> java-benchmark - @echo ' -b serializeToByteArray,serializeToMemoryStream,deserializeFromByteArray,deserializeFromMemoryStream '"\\" >> java-benchmark - @echo ' -DdataFile=$${data_files:0:-1} $${conf[*]}' >> java-benchmark - @chmod +x java-benchmark - -java: protoc_middleman protoc_middleman2 java-benchmark - ./java-benchmark $(all_data) - -############# JAVA RULES END ############## - - -############# PYTHON RULES ############## - -python_add_init: protoc_middleman protoc_middleman2 - all_file=`find tmp -type f -regex '.*\.py'` && \ - for file in $${all_file[@]}; do \ - path="$${file%/*}"; \ - while true; do \ - touch "$$path/__init__.py" && chmod +x "$$path/__init__.py"; \ - if [[ $$path != *"/"* ]]; then break; fi; \ - path=$${path%/*}; \ - done \ - done - -python_cpp_pkg_flags = `pkg-config --cflags --libs python` - -lib_LTLIBRARIES = libbenchmark_messages.la -libbenchmark_messages_la_SOURCES = python/python_benchmark_messages.cc -libbenchmark_messages_la_LIBADD = $(top_srcdir)/src/.libs/libprotobuf.la -libbenchmark_messages_la_LDFLAGS = -version-info 1:0:0 -export-dynamic -libbenchmark_messages_la_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp $(python_cpp_pkg_flags) -libbenchmark_messages_la-python_benchmark_messages.$(OBJEXT): $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) -nodist_libbenchmark_messages_la_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - -python-pure-python-benchmark: python_add_init - @echo "Writing shortcut script python-pure-python-benchmark..." - @echo '#! /bin/bash' > python-pure-python-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-pure-python-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-pure-python-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'python\' >> python-pure-python-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-pure-python-benchmark - @echo python tmp/py_benchmark.py '$$@' >> python-pure-python-benchmark - @chmod +x python-pure-python-benchmark - -python-cpp-reflection-benchmark: python_add_init - @echo "Writing shortcut script python-cpp-reflection-benchmark..." - @echo '#! /bin/bash' > python-cpp-reflection-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-reflection-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-reflection-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'cpp\' >> python-cpp-reflection-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-cpp-reflection-benchmark - @echo python tmp/py_benchmark.py '$$@' >> python-cpp-reflection-benchmark - @chmod +x python-cpp-reflection-benchmark - -python-cpp-generated-code-benchmark: python_add_init libbenchmark_messages.la - @echo "Writing shortcut script python-cpp-generated-code-benchmark..." - @echo '#! /bin/bash' > python-cpp-generated-code-benchmark - @echo export LD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-generated-code-benchmark - @echo export DYLD_LIBRARY_PATH=$(top_srcdir)/src/.libs >> python-cpp-generated-code-benchmark - @echo export PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=\'cpp\' >> python-cpp-generated-code-benchmark - @echo cp $(srcdir)/python/py_benchmark.py tmp >> python-cpp-generated-code-benchmark - @echo python tmp/py_benchmark.py --cpp_generated '$$@' >> python-cpp-generated-code-benchmark - @chmod +x python-cpp-generated-code-benchmark - -python-pure-python: python-pure-python-benchmark - ./python-pure-python-benchmark $(all_data) - -python-cpp-reflection: python-cpp-reflection-benchmark - ./python-cpp-reflection-benchmark $(all_data) - -python-cpp-generated-code: python-cpp-generated-code-benchmark - ./python-cpp-generated-code-benchmark $(all_data) - -############# PYTHON RULES END ############## - -############# GO RULES BEGIN ############## - -benchmarks_protoc_inputs_proto2_message1 = \ - datasets/google_message1/proto2/benchmark_message1_proto2.proto - -benchmarks_protoc_inputs_proto2_message2 = \ - datasets/google_message2/benchmark_message2.proto - -benchmarks_protoc_inputs_proto2_message3 = \ - datasets/google_message3/benchmark_message3.proto \ - datasets/google_message3/benchmark_message3_1.proto \ - datasets/google_message3/benchmark_message3_2.proto \ - datasets/google_message3/benchmark_message3_3.proto \ - datasets/google_message3/benchmark_message3_4.proto \ - datasets/google_message3/benchmark_message3_5.proto \ - datasets/google_message3/benchmark_message3_6.proto \ - datasets/google_message3/benchmark_message3_7.proto \ - datasets/google_message3/benchmark_message3_8.proto - -benchmarks_protoc_inputs_proto2_message4 = \ - datasets/google_message4/benchmark_message4.proto \ - datasets/google_message4/benchmark_message4_1.proto \ - datasets/google_message4/benchmark_message4_2.proto \ - datasets/google_message4/benchmark_message4_3.proto - -go_protoc_middleman: make_tmp_dir $(top_srcdir)/src/protoc$(EXEEXT) $(benchmarks_protoc_inputs) $(well_known_type_protoc_inputs) $(benchmarks_protoc_inputs_proto2_message1) $(benchmarks_protoc_inputs_proto2_message2) $(benchmarks_protoc_inputs_proto2_message3) $(benchmarks_protoc_inputs_proto2_message4) $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --go_out=$$oldpwd/tmp $(benchmarks_protoc_inputs_proto2_message4) ) - touch go_protoc_middleman - -go-benchmark: go_protoc_middleman - @echo "Writing shortcut script go-benchmark..." - @echo '#! /bin/bash' > go-benchmark - @echo 'cd $(srcdir)/go' >> go-benchmark - @echo 'all_data=""' >> go-benchmark - @echo 'conf=()' >> go-benchmark - @echo 'data_files=()' >> go-benchmark - @echo 'for arg in $$@; do if [[ $${arg:0:1} == "-" ]]; then conf+=($$arg); else data_files+=("$$arg"); fi; done' >> go-benchmark - @echo 'go test -bench=. $${conf[*]} -- $${data_files[*]}' >> go-benchmark - @echo 'cd ..' >> go-benchmark - @chmod +x go-benchmark - -go: go_protoc_middleman go-benchmark - ./go-benchmark $(all_data) - -############# GO RULES END ############## - -############# GOGO RULES BEGIN ############ - -cpp_no_group_benchmarks_protoc_outputs_header = \ - gogo/cpp_no_group/benchmarks.pb.h \ - gogo/cpp_no_group/datasets/google_message1/proto3/benchmark_message1_proto3.pb.h - -cpp_no_group_benchmarks_protoc_outputs = \ - gogo/cpp_no_group/benchmarks.pb.cc \ - gogo/cpp_no_group/datasets/google_message1/proto3/benchmark_message1_proto3.pb.cc - -cpp_no_group_benchmarks_protoc_outputs_proto2_header = \ - gogo/cpp_no_group/datasets/google_message1/proto2/benchmark_message1_proto2.pb.h \ - gogo/cpp_no_group/datasets/google_message2/benchmark_message2.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_1.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_2.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_3.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_4.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_5.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_6.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_7.pb.h \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_8.pb.h \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4.pb.h \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_1.pb.h \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_2.pb.h \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_3.pb.h - -cpp_no_group_benchmarks_protoc_outputs_proto2 = \ - gogo/cpp_no_group/datasets/google_message1/proto2/benchmark_message1_proto2.pb.cc \ - gogo/cpp_no_group/datasets/google_message2/benchmark_message2.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_1.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_2.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_3.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_4.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_5.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_6.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_7.pb.cc \ - gogo/cpp_no_group/datasets/google_message3/benchmark_message3_8.pb.cc \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4.pb.cc \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_1.pb.cc \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_2.pb.cc \ - gogo/cpp_no_group/datasets/google_message4/benchmark_message4_3.pb.cc - -$(cpp_no_group_benchmarks_protoc_outputs): cpp_no_group_protoc_middleman -$(cpp_no_group_benchmarks_protoc_outputs_header): cpp_no_group_protoc_middleman -$(cpp_no_group_benchmarks_protoc_outputs_proto2): cpp_no_group_protoc_middleman -$(cpp_no_group_benchmarks_protoc_outputs_proto2_header): cpp_no_group_protoc_middleman - -generate_cpp_no_group_benchmark_code: - cp $(srcdir)/cpp/cpp_benchmark.cc gogo/cpp_no_group/cpp_benchmark.cc - sed -i -e "s/\#include \"datasets/\#include \"gogo\/cpp_no_group\/datasets/g" gogo/cpp_no_group/cpp_benchmark.cc - sed -i -e "s/\#include \"benchmarks.pb.h/\#include \"gogo\/cpp_no_group\/benchmarks.pb.h/g" gogo/cpp_no_group/cpp_benchmark.cc - touch generate_cpp_no_group_benchmark_code - -bin_PROGRAMS += cpp-no-group-benchmark -cpp_no_group_benchmark_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/third_party/benchmark/src/libbenchmark.a -cpp_no_group_benchmark_SOURCES = gogo/cpp_no_group/cpp_benchmark.cc -cpp_no_group_benchmark_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/gogo/cpp_no_group -I$(top_srcdir)/third_party/benchmark/include -# Explicit deps because BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_cpp" could fail if parallel enough. -# See: https://www.gnu.org/software/automake/manual/html_node/Built-Sources-Example.html#Recording-Dependencies-manually -gogo/cpp_no_group/cpp_no_group_benchmark-cpp_benchmark.$(OBJEXT): $(cpp_no_group_benchmarks_protoc_outputs) $(cpp_no_group_benchmarks_protoc_outputs_proto2) $(cpp_no_group_benchmarks_protoc_outputs_header) \ - $(cpp_no_group_benchmarks_protoc_outputs_proto2_header) $(top_srcdir)/third_party/benchmark/src/libbenchmark.a generate_cpp_no_group_benchmark_code -gogo/cpp_no_group/cpp_benchmark.cc: generate_cpp_no_group_benchmark_code -nodist_cpp_no_group_benchmark_SOURCES = \ - $(cpp_no_group_benchmarks_protoc_outputs_proto2) \ - $(cpp_no_group_benchmarks_protoc_outputs) \ - $(cpp_no_group_benchmarks_protoc_outputs_header) \ - $(cpp_no_group_benchmarks_protoc_outputs_proto2_header) - -cpp_no_group: cpp_no_group_protoc_middleman generate_gogo_data cpp-no-group-benchmark - ./cpp-no-group-benchmark $(gogo_data) - -gogo_proto_middleman: protoc-gen-gogoproto - mkdir -p "tmp/gogo_proto" - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I$(srcdir) -I$(top_srcdir) --plugin=protoc-gen-gogoproto --gogoproto_out=$$oldpwd/tmp/gogo_proto $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) ) - touch gogo_proto_middleman - -gogo_data = $$(for data in $(all_data); do echo "tmp/gogo_data$${data\#$(srcdir)}"; done | xargs) - -generate_gogo_data: protoc_middleman protoc_middleman2 gogo-data-scrubber - mkdir -p `dirname $(gogo_data)` - ./gogo-data-scrubber $(all_data) $(gogo_data) - touch generate_gogo_data - -make_tmp_dir_gogo: - mkdir -p tmp/go_no_group/benchmark_code - mkdir -p tmp/gogofast/benchmark_code - mkdir -p tmp/gogofaster/benchmark_code - mkdir -p tmp/gogoslick/benchmark_code - touch make_tmp_dir_gogo - -go_no_group_protoc_middleman: make_tmp_dir_gogo $(top_srcdir)/src/protoc$(EXEEXT) gogo_proto_middleman $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --go_out=$$oldpwd/tmp/go_no_group $(benchmarks_protoc_inputs_proto2_message4) ) - touch go_no_group_protoc_middleman - -cpp_no_group_protoc_middleman: make_tmp_dir_gogo $(top_srcdir)/src/protoc$(EXEEXT) gogo_proto_middleman $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --cpp_out=$$oldpwd/gogo/cpp_no_group $(benchmarks_protoc_inputs_proto2_message4) ) - touch cpp_no_group_protoc_middleman - -gogofast_protoc_middleman: make_tmp_dir_gogo $(top_srcdir)/src/protoc$(EXEEXT) gogo_proto_middleman $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofast_out=$$oldpwd/tmp/gogofast $(benchmarks_protoc_inputs_proto2_message4) ) - touch gogofast_protoc_middleman - -gogofaster_protoc_middleman: make_tmp_dir_gogo $(top_srcdir)/src/protoc$(EXEEXT) gogo_proto_middleman $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogofaster_out=$$oldpwd/tmp/gogofaster $(benchmarks_protoc_inputs_proto2_message4) ) - touch gogofaster_protoc_middleman - -gogoslick_protoc_middleman: make_tmp_dir_gogo $(top_srcdir)/src/protoc$(EXEEXT) gogo_proto_middleman $(well_known_type_protoc_inputs) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs_benchmark_wrapper) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs_proto2_message1) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs_proto2_message2) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs_proto2_message3) ) - oldpwd=`pwd` && ( cd $(srcdir)/tmp/gogo_proto && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$$oldpwd/$(top_srcdir)/src --gogoslick_out=$$oldpwd/tmp/gogoslick $(benchmarks_protoc_inputs_proto2_message4) ) - touch gogoslick_protoc_middleman - -generate-gogo-benchmark-code: - @echo '#! /bin/bash' > generate-gogo-benchmark-code - @echo 'cp $(srcdir)/go/go_benchmark_test.go tmp/$$1/benchmark_code/$$1_benchmark1_test.go' >> generate-gogo-benchmark-code - @echo 'sed -i -e "s/\.\.\/tmp/../g" tmp/$$1/benchmark_code/$$1_benchmark1_test.go' >> generate-gogo-benchmark-code - @echo 'sed -i -e "s/b\.Run(\"\(.*\)\"/b.Run(\"\1\_$$1\"/g" tmp/$$1/benchmark_code/$$1_benchmark1_test.go' >> generate-gogo-benchmark-code - @echo 'if [[ $$2 == 1 ]]; then sed -i -e "s/github\.com\/golang/github.com\/gogo/g" tmp/$$1/benchmark_code/$$1_benchmark1_test.go; fi ' >> generate-gogo-benchmark-code - @chmod +x generate-gogo-benchmark-code - -generate_all_gogo_benchmark_code: generate-gogo-benchmark-code make_tmp_dir_gogo - ./generate-gogo-benchmark-code go_no_group 0 - ./generate-gogo-benchmark-code gogofast 1 - ./generate-gogo-benchmark-code gogofaster 1 - ./generate-gogo-benchmark-code gogoslick 1 - -gogo-benchmark: - @echo "Writing shortcut script gogo-benchmark..." - @echo '#! /bin/bash' > gogo-benchmark - @echo 'cd tmp/$$1/benchmark_code' >> gogo-benchmark - @echo 'shift' >> gogo-benchmark - @echo 'all_data=""' >> gogo-benchmark - @echo 'for data_file in $$@; do all_data="$$all_data ../../../$$data_file"; done' >> gogo-benchmark - @echo 'go test -bench=. -- $$all_data' >> gogo-benchmark - @echo 'cd ../..' >> gogo-benchmark - @chmod +x gogo-benchmark - -go_no_group: go_no_group_protoc_middleman generate_gogo_data generate_all_gogo_benchmark_code gogo-benchmark - ./gogo-benchmark go_no_group $(gogo_data) - -gogofast: gogofast_protoc_middleman generate_gogo_data gogo-benchmark generate_all_gogo_benchmark_code - ./gogo-benchmark gogofast $(gogo_data) - -gogofaster: gogofaster_protoc_middleman generate_gogo_data gogo-benchmark generate_all_gogo_benchmark_code - ./gogo-benchmark gogofaster $(gogo_data) - -gogoslick: gogoslick_protoc_middleman generate_gogo_data gogo-benchmark generate_all_gogo_benchmark_code - ./gogo-benchmark gogoslick $(gogo_data) - - -############# GOGO RULES END ############ - - -############ UTIL RULES BEGIN ############ - -bin_PROGRAMS += protoc-gen-gogoproto gogo-data-scrubber protoc-gen-proto2_to_proto3 proto3-data-stripper - -protoc_gen_gogoproto_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/src/libprotoc.la -protoc_gen_gogoproto_SOURCES = util/protoc-gen-gogoproto.cc -protoc_gen_gogoproto_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util - -gogo_data_scrubber_LDADD = $(top_srcdir)/src/libprotobuf.la -gogo_data_scrubber_SOURCES = util/gogo_data_scrubber.cc -gogo_data_scrubber_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util -util/gogo_data_scrubber-gogo_data_scrubber.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) -nodist_gogo_data_scrubber_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - -protoc_gen_proto2_to_proto3_LDADD = $(top_srcdir)/src/libprotobuf.la $(top_srcdir)/src/libprotoc.la -protoc_gen_proto2_to_proto3_SOURCES = util/protoc-gen-proto2_to_proto3.cc -protoc_gen_proto2_to_proto3_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util - -proto3_data_stripper_LDADD = $(top_srcdir)/src/libprotobuf.la -proto3_data_stripper_SOURCES = util/proto3_data_stripper.cc -proto3_data_stripper_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir)/cpp -I$(srcdir)/util -util/proto3_data_stripper-proto3_data_stripper.$(OBJEXT): $(benchmarks_protoc_outputs) $(benchmarks_protoc_outputs_proto2) $(benchmarks_protoc_outputs_header) $(benchmarks_protoc_outputs_proto2_header) -nodist_proto3_data_stripper_SOURCES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - $(benchmarks_protoc_outputs_header) - - -############ UTIL RULES END ############ - -############ PROTO3 PREPARATION BEGIN ############# - -proto3_proto_middleman: protoc-gen-proto2_to_proto3 - mkdir -p "tmp/proto3_proto" - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I$(srcdir) -I$(top_srcdir) --plugin=protoc-gen-proto2_to_proto3 --proto2_to_proto3_out=$$oldpwd/tmp/proto3_proto $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) ) - touch proto3_proto_middleman - -full_srcdir = $$(cd $(srcdir) && pwd) -proto3_data = $$(for data in $(all_data); do echo $(full_srcdir)"/tmp/proto3_data$${data\#$(full_srcdir)}"; done | xargs) - -generate_proto3_data: protoc_middleman protoc_middleman2 proto3-data-stripper - mkdir -p `dirname $(proto3_data)` - ./proto3-data-stripper $(all_data) $(proto3_data) - touch generate_proto3_data - -############ PROTO3 PREPARATION END ############# - -############ PHP RULES BEGIN ################# - -proto3_middleman_php: proto3_proto_middleman - mkdir -p "tmp/php" - oldpwd=`pwd` && ( cd tmp/proto3_proto && $$oldpwd/../src/protoc$(EXEEXT) -I$(srcdir) -I$(top_srcdir) --php_out=$$oldpwd/tmp/php $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) ) - touch proto3_middleman_php - -php-benchmark: proto3_middleman_php generate_proto3_data - mkdir -p "tmp/php/Google/Protobuf/Benchmark" && cp php/PhpBenchmark.php "tmp/php/Google/Protobuf/Benchmark" - cp php/autoload.php "tmp/php" - @echo "Writing shortcut script php-benchmark..." - @echo '#! /bin/bash' > php-benchmark - @echo 'export PROTOBUF_PHP_SRCDIR="$$(cd $(top_srcdir) && pwd)/php/src"' >> php-benchmark - @echo 'cd tmp/php' >> php-benchmark - @echo 'export CURRENT_DIR=$$(pwd)' >> php-benchmark - @echo 'php -d auto_prepend_file="autoload.php" -d include_path="$$(pwd)" Google/Protobuf/Benchmark/PhpBenchmark.php $$@' >> php-benchmark - @echo 'cd ../..' >> php-benchmark - @chmod +x php-benchmark - -php: php-benchmark proto3_middleman_php - ./php-benchmark --behavior_prefix="php" $(proto3_data) - -php_c_extension: - cd $(top_srcdir)/php/ext/google/protobuf && phpize && ./configure CFLAGS='-O3' && make -j8 - -php-c-benchmark: proto3_middleman_php generate_proto3_data php_c_extension php_c_extension - mkdir -p "tmp/php/Google/Protobuf/Benchmark" && cp php/PhpBenchmark.php "tmp/php/Google/Protobuf/Benchmark" - cp php/autoload.php "tmp/php" - @echo "Writing shortcut script php-c-benchmark..." - @echo '#! /bin/bash' > php-c-benchmark - @echo 'export PROTOBUF_PHP_SRCDIR="$$(cd $(top_srcdir) && pwd)/php/src"' >> php-c-benchmark - @echo 'export PROTOBUF_PHP_EXTDIR="$$PROTOBUF_PHP_SRCDIR/../ext/google/protobuf/modules"' >> php-c-benchmark - @echo 'cd tmp/php' >> php-c-benchmark - @echo 'export CURRENT_DIR=$$(pwd)' >> php-c-benchmark - @echo 'php -d auto_prepend_file="autoload.php" -d include_path="$$(pwd)" -d extension="$$PROTOBUF_PHP_EXTDIR/protobuf.so" Google/Protobuf/Benchmark/PhpBenchmark.php $$@' >> php-c-benchmark - @echo 'cd ../..' >> php-c-benchmark - @chmod +x php-c-benchmark - -php_c: php-c-benchmark proto3_middleman_php - ./php-c-benchmark --behavior_prefix="php_c" $(proto3_data) - - -############ PHP RULES END ################# - -############ protobuf.js RULE BEGIN ############# - -pbjs_preparation: - mkdir -p tmp/protobuf.js - cd tmp/protobuf.js && git clone https://github.com/dcodeIO/protobuf.js.git && \ - cd protobuf.js && npm install && npm run build - cd tmp/protobuf.js && npm install benchmark - cp protobuf.js/* tmp/protobuf.js - cp js/benchmark_suite.js tmp/protobuf.js - touch pbjs_preparation - -pbjs_middleman: pbjs_preparation - export OLDDIR=$$(pwd) && cd tmp/protobuf.js && node generate_pbjs_files.js --target static-module --include_path=$$OLDDIR -o generated_bundle_code.js $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2) - touch pbjs_middleman - -pbjs-benchmark: pbjs_middleman - @echo '#! /bin/bash' > pbjs-benchmark - @echo 'cd tmp/protobuf.js' >> pbjs-benchmark - @echo 'sed -i "s/protobufjs/.\/protobuf.js/g" generated_bundle_code.js' >> pbjs-benchmark - @echo 'env NODE_PATH=".:./node_modules:$$NODE_PATH" node protobufjs_benchmark.js $$@' >> pbjs-benchmark - @chmod +x pbjs-benchmark - -pbjs: pbjs-benchmark - ./pbjs-benchmark $(all_data) - -############ protobuf.js RULE END ############# - -############ JS RULE BEGIN ############# - -js_preparation: - mkdir -p tmp/js - oldpwd=$$(pwd) && cd $(top_srcdir)/js && npm install && npm test - cd tmp/js && npm install benchmark - cp js/* tmp/js - touch js_preparation - -js_middleman: js_preparation - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --js_out=import_style=commonjs,binary:$$oldpwd/tmp/js $(benchmarks_protoc_inputs) $(benchmarks_protoc_inputs_benchmark_wrapper) $(benchmarks_protoc_inputs_proto2)) - touch js_middleman - -js-benchmark: js_middleman - @echo '#! /bin/bash' > js-benchmark - @echo 'export TOP_JS_SRCDIR=$$(cd $(top_srcdir)/js && pwd)' >> js-benchmark - @echo 'cd tmp/js' >> js-benchmark - @echo 'env NODE_PATH="$$TOP_JS_SRCDIR:.:./node_modules:$$NODE_PATH" node --max-old-space-size=4096 js_benchmark.js $$@' >> js-benchmark - @chmod +x js-benchmark - -js: js-benchmark - ./js-benchmark $(all_data) - -############ JS RULE END ############# - -MAINTAINERCLEANFILES = \ - Makefile.in - -CLEANFILES = \ - $(benchmarks_protoc_outputs) \ - $(benchmarks_protoc_outputs_header) \ - $(benchmarks_protoc_outputs_proto2) \ - $(benchmarks_protoc_outputs_proto2_header) \ - initialize_submodule \ - make_tmp_dir \ - protoc_middleman \ - protoc_middleman2 \ - javac_middleman \ - java-benchmark \ - python_cpp_proto_library \ - python-pure-python-benchmark \ - python-cpp-reflection-benchmark \ - python-cpp-generated-code-benchmark \ - go-benchmark \ - go_protoc_middleman \ - make_tmp_dir_gogo \ - gogo_proto_middleman \ - generate_gogo_data \ - go_no_group_protoc_middleman \ - go_no_group \ - go-no-group-benchmark \ - $(cpp_no_group_benchmarks_protoc_outputs_header) \ - $(cpp_no_group_benchmarks_protoc_outputs) \ - $(cpp_no_group_benchmarks_protoc_outputs_proto2_header) \ - $(cpp_no_group_benchmarks_protoc_outputs_proto2) \ - generate_all_gogo_benchmark_code \ - generate-gogo-benchmark-code \ - cpp_no_group_protoc_middleman \ - generate_cpp_no_group_benchmark_code \ - generate_gogo_benchmark_code \ - gogofast_protoc_middleman \ - gogofast \ - gogofaster_protoc_middleman \ - gogofaster \ - gogoslick_protoc_middleman \ - gogoslick \ - gogo-benchmark \ - gogo/cpp_no_group/cpp_benchmark.* \ - proto3_proto_middleman \ - generate_proto3_data \ - php-benchmark \ - php-c-benchmark \ - proto3_middleman_php \ - pbjs_preparation \ - pbjs_middleman \ - pbjs-benchmark \ - js_preparation \ - js_middleman \ - js-benchmark - -clean-local: - -rm -rf tmp/* - diff --git a/lib/protobuf/benchmarks/README.md b/lib/protobuf/benchmarks/README.md deleted file mode 100644 index 9711fa1..0000000 --- a/lib/protobuf/benchmarks/README.md +++ /dev/null @@ -1,243 +0,0 @@ - -# Protocol Buffers Benchmarks - -This directory contains benchmarking schemas and data sets that you -can use to test a variety of performance scenarios against your -protobuf language runtime. If you are looking for performance -numbers of officially support languages, see [here]( -https://github.com/protocolbuffers/protobuf/blob/master/docs/performance.md) - -## Prerequisite - -First, you need to follow the instruction in the root directory's README to -build your language's protobuf, then: - -### CPP -You need to install [cmake](https://cmake.org/) before building the benchmark. - -We are using [google/benchmark](https://github.com/google/benchmark) as the -benchmark tool for testing cpp. This will be automaticly made during build the -cpp benchmark. - -The cpp protobuf performance can be improved by linking with [tcmalloc library]( -https://gperftools.github.io/gperftools/tcmalloc.html). For using tcmalloc, you -need to build [gpertools](https://github.com/gperftools/gperftools) to generate -libtcmallc.so library. - -### Java -We're using maven to build the java benchmarks, which is the same as to build -the Java protobuf. There're no other tools need to install. We're using -[google/caliper](https://github.com/google/caliper) as benchmark tool, which -can be automaticly included by maven. - -### Python -We're using python C++ API for testing the generated -CPP proto version of python protobuf, which is also a prerequisite for Python -protobuf cpp implementation. You need to install the correct version of Python -C++ extension package before run generated CPP proto version of Python -protobuf's benchmark. e.g. under Ubuntu, you need to - -``` -$ sudo apt-get install python-dev -$ sudo apt-get install python3-dev -``` -And you also need to make sure `pkg-config` is installed. - -### Go -Go protobufs are maintained at [github.com/golang/protobuf]( -http://github.com/golang/protobuf). If not done already, you need to install the -toolchain and the Go protoc-gen-go plugin for protoc. - -To install protoc-gen-go, run: - -``` -$ go get -u github.com/golang/protobuf/protoc-gen-go -$ export PATH=$PATH:$(go env GOPATH)/bin -``` - -The first command installs `protoc-gen-go` into the `bin` directory in your local `GOPATH`. -The second command adds the `bin` directory to your `PATH` so that `protoc` can locate the plugin later. - -### PHP -PHP benchmark's requirement is the same as PHP protobuf's requirements. The benchmark will automaticly -include PHP protobuf's src and build the c extension if required. - -### Node.js -Node.js benchmark need [node](https://nodejs.org/en/)(higher than V6) and [npm](https://www.npmjs.com/) package manager installed. This benchmark is using the [benchmark](https://www.npmjs.com/package/benchmark) framework to test, which needn't to manually install. And another prerequisite is [protobuf js](https://github.com/protocolbuffers/protobuf/tree/master/js), which needn't to manually install either - -### C# -The C# benchmark code is built as part of the main Google.Protobuf -solution. It requires the .NET Core SDK, and depends on -[BenchmarkDotNet](https://github.com/dotnet/BenchmarkDotNet), which -will be downloaded automatically. - -### Big data - -There's some optional big testing data which is not included in the directory -initially, you need to run the following command to download the testing data: - -``` -$ ./download_data.sh -``` - -After doing this the big data file will automatically generated in the -benchmark directory. - -## Run instructions - -To run all the benchmark dataset: - -### Java: - -``` -$ make java -``` - -### CPP: - -``` -$ make cpp -``` - -For linking with tcmalloc: - -``` -$ env LD_PRELOAD={directory to libtcmalloc.so} make cpp -``` - -### Python: - -We have three versions of python protobuf implementation: pure python, cpp -reflection and cpp generated code. To run these version benchmark, you need to: - -#### Pure Python: - -``` -$ make python-pure-python -``` - -#### CPP reflection: - -``` -$ make python-cpp-reflection -``` - -#### CPP generated code: - -``` -$ make python-cpp-generated-code -``` - -### Go -``` -$ make go -``` - - -### PHP -We have two version of php protobuf implemention: pure php, php with c extension. To run these version benchmark, you need to: -#### Pure PHP -``` -$ make php -``` -#### PHP with c extension -``` -$ make php_c -``` - -### Node.js -``` -$ make js -``` - -To run a specific dataset or run with specific options: - -### Java: - -``` -$ make java-benchmark -$ ./java-benchmark $(specific generated dataset file name) [$(caliper options)] -``` - -### CPP: - -``` -$ make cpp-benchmark -$ ./cpp-benchmark $(specific generated dataset file name) [$(benchmark options)] -``` - -### Python: - -For Python benchmark we have `--json` for outputing the json result - -#### Pure Python: - -``` -$ make python-pure-python-benchmark -$ ./python-pure-python-benchmark [--json] $(specific generated dataset file name) -``` - -#### CPP reflection: - -``` -$ make python-cpp-reflection-benchmark -$ ./python-cpp-reflection-benchmark [--json] $(specific generated dataset file name) -``` - -#### CPP generated code: - -``` -$ make python-cpp-generated-code-benchmark -$ ./python-cpp-generated-code-benchmark [--json] $(specific generated dataset file name) -``` - -### Go: -``` -$ make go-benchmark -$ ./go-benchmark $(specific generated dataset file name) [go testing options] -``` - -### PHP -#### Pure PHP -``` -$ make php-benchmark -$ ./php-benchmark $(specific generated dataset file name) -``` -#### PHP with c extension -``` -$ make php-c-benchmark -$ ./php-c-benchmark $(specific generated dataset file name) -``` - -### Node.js -``` -$ make js-benchmark -$ ./js-benchmark $(specific generated dataset file name) -``` - -### C# -From `csharp/src/Google.Protobuf.Benchmarks`, run: - -``` -$ dotnet run -c Release -``` - -We intend to add support for this within the makefile in due course. - -## Benchmark datasets - -Each data set is in the format of benchmarks.proto: - -1. name is the benchmark dataset's name. -2. message_name is the benchmark's message type full name (including package and message name) -3. payload is the list of raw data. - -The schema for the datasets is described in `benchmarks.proto`. - -Benchmark likely want to run several benchmarks against each data set (parse, -serialize, possibly JSON, possibly using different APIs, etc). - -We would like to add more data sets. In general we will favor data sets -that make the overall suite diverse without being too large or having -too many similar tests. Ideally everyone can run through the entire -suite without the test run getting too long. diff --git a/lib/protobuf/benchmarks/__init__.py b/lib/protobuf/benchmarks/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/lib/protobuf/benchmarks/benchmarks.proto b/lib/protobuf/benchmarks/benchmarks.proto deleted file mode 100644 index 51c0b54..0000000 --- a/lib/protobuf/benchmarks/benchmarks.proto +++ /dev/null @@ -1,63 +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. - -syntax = "proto3"; -package benchmarks; -option java_package = "com.google.protobuf.benchmarks"; - -message BenchmarkDataset { - // Name of the benchmark dataset. This should be unique across all datasets. - // Should only contain word characters: [a-zA-Z0-9_] - string name = 1; - - // Fully-qualified name of the protobuf message for this dataset. - // It will be one of the messages defined benchmark_messages_proto2.proto - // or benchmark_messages_proto3.proto. - // - // Implementations that do not support reflection can implement this with - // an explicit "if/else" chain that lists every known message defined - // in those files. - string message_name = 2; - - // The payload(s) for this dataset. They should be parsed or serialized - // in sequence, in a loop, ie. - // - // while (!benchmarkDone) { // Benchmark runner decides when to exit. - // for (i = 0; i < benchmark.payload.length; i++) { - // parse(benchmark.payload[i]) - // } - // } - // - // This is intended to let datasets include a variety of data to provide - // potentially more realistic results than just parsing the same message - // over and over. A single message parsed repeatedly could yield unusually - // good branch prediction performance. - repeated bytes payload = 3; -} diff --git a/lib/protobuf/benchmarks/cpp/cpp_benchmark.cc b/lib/protobuf/benchmarks/cpp/cpp_benchmark.cc deleted file mode 100644 index 036d234..0000000 --- a/lib/protobuf/benchmarks/cpp/cpp_benchmark.cc +++ /dev/null @@ -1,254 +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. - -#include -#include -#include "benchmark/benchmark.h" -#include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" - - -#define PREFIX "dataset." -#define SUFFIX ".pb" - -using benchmarks::BenchmarkDataset; -using google::protobuf::Arena; -using google::protobuf::Descriptor; -using google::protobuf::DescriptorPool; -using google::protobuf::Message; -using google::protobuf::MessageFactory; - -class Fixture : public benchmark::Fixture { - public: - Fixture(const BenchmarkDataset& dataset, const std::string& suffix) { - for (int i = 0; i < dataset.payload_size(); i++) { - payloads_.push_back(dataset.payload(i)); - } - - const Descriptor* d = - DescriptorPool::generated_pool()->FindMessageTypeByName( - dataset.message_name()); - - if (!d) { - std::cerr << "Couldn't find message named '" << dataset.message_name() - << "\n"; - } - - prototype_ = MessageFactory::generated_factory()->GetPrototype(d); - SetName((dataset.name() + suffix).c_str()); - } - - protected: - std::vector payloads_; - const Message* prototype_; -}; - -class WrappingCounter { - public: - WrappingCounter(size_t limit) : value_(0), limit_(limit) {} - - size_t Next() { - size_t ret = value_; - if (++value_ == limit_) { - value_ = 0; - } - return ret; - } - - private: - size_t value_; - size_t limit_; -}; - -template -class ParseNewFixture : public Fixture { - public: - ParseNewFixture(const BenchmarkDataset& dataset) - : Fixture(dataset, "_parse_new") {} - - virtual void BenchmarkCase(benchmark::State& state) { - WrappingCounter i(payloads_.size()); - size_t total = 0; - - while (state.KeepRunning()) { - T m; - const std::string& payload = payloads_[i.Next()]; - total += payload.size(); - m.ParseFromString(payload); - } - - state.SetBytesProcessed(total); - } -}; - -template -class ParseNewArenaFixture : public Fixture { - public: - ParseNewArenaFixture(const BenchmarkDataset& dataset) - : Fixture(dataset, "_parse_newarena") {} - - virtual void BenchmarkCase(benchmark::State& state) { - WrappingCounter i(payloads_.size()); - size_t total = 0; - Arena arena; - - while (state.KeepRunning()) { - arena.Reset(); - Message* m = Arena::CreateMessage(&arena); - const std::string& payload = payloads_[i.Next()]; - total += payload.size(); - m->ParseFromString(payload); - } - - state.SetBytesProcessed(total); - } -}; - -template -class ParseReuseFixture : public Fixture { - public: - ParseReuseFixture(const BenchmarkDataset& dataset) - : Fixture(dataset, "_parse_reuse") {} - - virtual void BenchmarkCase(benchmark::State& state) { - T m; - WrappingCounter i(payloads_.size()); - size_t total = 0; - - while (state.KeepRunning()) { - const std::string& payload = payloads_[i.Next()]; - total += payload.size(); - m.ParseFromString(payload); - } - - state.SetBytesProcessed(total); - } -}; - -template -class SerializeFixture : public Fixture { - public: - SerializeFixture(const BenchmarkDataset& dataset) - : Fixture(dataset, "_serialize") { - for (size_t i = 0; i < payloads_.size(); i++) { - message_.push_back(new T); - message_.back()->ParseFromString(payloads_[i]); - } - } - - ~SerializeFixture() { - for (size_t i = 0; i < message_.size(); i++) { - delete message_[i]; - } - } - - virtual void BenchmarkCase(benchmark::State& state) { - size_t total = 0; - std::string str; - WrappingCounter i(payloads_.size()); - - while (state.KeepRunning()) { - str.clear(); - message_[i.Next()]->SerializeToString(&str); - total += str.size(); - } - - state.SetBytesProcessed(total); - } - - private: - std::vector message_; -}; - -std::string ReadFile(const std::string& name) { - std::ifstream file(name.c_str()); - GOOGLE_CHECK(file.is_open()) << "Couldn't find file '" << name << - "', please make sure you are running " - "this command from the benchmarks/ " - "directory.\n"; - return std::string((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); -} - -template -void RegisterBenchmarksForType(const BenchmarkDataset& dataset) { - ::benchmark::internal::RegisterBenchmarkInternal( - new ParseNewFixture(dataset)); - ::benchmark::internal::RegisterBenchmarkInternal( - new ParseReuseFixture(dataset)); - ::benchmark::internal::RegisterBenchmarkInternal( - new ParseNewArenaFixture(dataset)); - ::benchmark::internal::RegisterBenchmarkInternal( - new SerializeFixture(dataset)); -} - -void RegisterBenchmarks(const std::string& dataset_bytes) { - BenchmarkDataset dataset; - GOOGLE_CHECK(dataset.ParseFromString(dataset_bytes)); - - if (dataset.message_name() == "benchmarks.proto3.GoogleMessage1") { - RegisterBenchmarksForType(dataset); - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage1") { - RegisterBenchmarksForType(dataset); - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage2") { - RegisterBenchmarksForType(dataset); - } else if (dataset.message_name() == - "benchmarks.google_message3.GoogleMessage3") { - RegisterBenchmarksForType - (dataset); - } else if (dataset.message_name() == - "benchmarks.google_message4.GoogleMessage4") { - RegisterBenchmarksForType - (dataset); - } else { - std::cerr << "Unknown message type: " << dataset.message_name(); - exit(1); - } -} - -int main(int argc, char *argv[]) { - ::benchmark::Initialize(&argc, argv); - if (argc == 1) { - std::cerr << "Usage: ./cpp-benchmark " << std::endl; - std::cerr << "input data is in the format of \"benchmarks.proto\"" - << std::endl; - return 1; - } else { - for (int i = 1; i < argc; i++) { - RegisterBenchmarks(ReadFile(argv[i])); - } - } - - ::benchmark::RunSpecifiedBenchmarks(); -} diff --git a/lib/protobuf/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.proto b/lib/protobuf/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.proto deleted file mode 100644 index 2126190..0000000 --- a/lib/protobuf/benchmarks/datasets/google_message1/proto2/benchmark_message1_proto2.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Benchmark messages for proto2. - -syntax = "proto2"; - -package benchmarks.proto2; -option java_package = "com.google.protobuf.benchmarks"; - -// This is the default, but we specify it here explicitly. -option optimize_for = SPEED; - -option cc_enable_arenas = true; - -message GoogleMessage1 { - required string field1 = 1; - optional string field9 = 9; - optional string field18 = 18; - optional bool field80 = 80 [default = false]; - optional bool field81 = 81 [default = true]; - required int32 field2 = 2; - required int32 field3 = 3; - optional int32 field280 = 280; - optional int32 field6 = 6 [default = 0]; - optional int64 field22 = 22; - optional string field4 = 4; - repeated fixed64 field5 = 5; - optional bool field59 = 59 [default = false]; - optional string field7 = 7; - optional int32 field16 = 16; - optional int32 field130 = 130 [default = 0]; - optional bool field12 = 12 [default = true]; - optional bool field17 = 17 [default = true]; - optional bool field13 = 13 [default = true]; - optional bool field14 = 14 [default = true]; - optional int32 field104 = 104 [default = 0]; - optional int32 field100 = 100 [default = 0]; - optional int32 field101 = 101 [default = 0]; - optional string field102 = 102; - optional string field103 = 103; - optional int32 field29 = 29 [default = 0]; - optional bool field30 = 30 [default = false]; - optional int32 field60 = 60 [default = -1]; - optional int32 field271 = 271 [default = -1]; - optional int32 field272 = 272 [default = -1]; - optional int32 field150 = 150; - optional int32 field23 = 23 [default = 0]; - optional bool field24 = 24 [default = false]; - optional int32 field25 = 25 [default = 0]; - optional GoogleMessage1SubMessage field15 = 15; - optional bool field78 = 78; - optional int32 field67 = 67 [default = 0]; - optional int32 field68 = 68; - optional int32 field128 = 128 [default = 0]; - optional string field129 = 129 [default = "xxxxxxxxxxxxxxxxxxxxx"]; - optional int32 field131 = 131 [default = 0]; -} - -message GoogleMessage1SubMessage { - optional int32 field1 = 1 [default = 0]; - optional int32 field2 = 2 [default = 0]; - optional int32 field3 = 3 [default = 0]; - optional string field15 = 15; - optional bool field12 = 12 [default = true]; - optional int64 field13 = 13; - optional int64 field14 = 14; - optional int32 field16 = 16; - optional int32 field19 = 19 [default = 2]; - optional bool field20 = 20 [default = true]; - optional bool field28 = 28 [default = true]; - optional fixed64 field21 = 21; - optional int32 field22 = 22; - optional bool field23 = 23 [default = false]; - optional bool field206 = 206 [default = false]; - optional fixed32 field203 = 203; - optional int32 field204 = 204; - optional string field205 = 205; - optional uint64 field207 = 207; - optional uint64 field300 = 300; -} diff --git a/lib/protobuf/benchmarks/datasets/google_message1/proto2/dataset.google_message1_proto2.pb b/lib/protobuf/benchmarks/datasets/google_message1/proto2/dataset.google_message1_proto2.pb deleted file mode 100644 index f6fe7848cb889b65fb2c9465780c2e82b398639b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmd-QOV7_w&qu8dj{HQ>|{A;GUn69Is(pqL3P_P+T4FX`ks_p6DLyqplTDYO0}D9&cq* zT^E(Wn88rMSQW`3DWFp2tYmK%5NQ(YW0Y)DTW4e)6B6bYUmh3j5Sfw*;%sf2nN*`y>=5MalvG+)6lk2Tk*(vmk}>4JGsitCF7*wJYC9MiI~W-z ZF>+Pg29~F#)+y&z&tU18n7DvV9suhNTo3>N diff --git a/lib/protobuf/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.proto b/lib/protobuf/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.proto deleted file mode 100644 index 090b554..0000000 --- a/lib/protobuf/benchmarks/datasets/google_message1/proto3/benchmark_message1_proto3.proto +++ /dev/null @@ -1,78 +0,0 @@ -// Benchmark messages for proto3. - -syntax = "proto3"; - -package benchmarks.proto3; -option java_package = "com.google.protobuf.benchmarks"; - -// This is the default, but we specify it here explicitly. -option optimize_for = SPEED; - -option cc_enable_arenas = true; - -message GoogleMessage1 { - string field1 = 1; - string field9 = 9; - string field18 = 18; - bool field80 = 80; - bool field81 = 81; - int32 field2 = 2; - int32 field3 = 3; - int32 field280 = 280; - int32 field6 = 6; - int64 field22 = 22; - string field4 = 4; - repeated fixed64 field5 = 5; - bool field59 = 59; - string field7 = 7; - int32 field16 = 16; - int32 field130 = 130; - bool field12 = 12; - bool field17 = 17; - bool field13 = 13; - bool field14 = 14; - int32 field104 = 104; - int32 field100 = 100; - int32 field101 = 101; - string field102 = 102; - string field103 = 103; - int32 field29 = 29; - bool field30 = 30; - int32 field60 = 60; - int32 field271 = 271; - int32 field272 = 272; - int32 field150 = 150; - int32 field23 = 23; - bool field24 = 24; - int32 field25 = 25; - GoogleMessage1SubMessage field15 = 15; - bool field78 = 78; - int32 field67 = 67; - int32 field68 = 68; - int32 field128 = 128; - string field129 = 129; - int32 field131 = 131; -} - -message GoogleMessage1SubMessage { - int32 field1 = 1; - int32 field2 = 2; - int32 field3 = 3; - string field15 = 15; - bool field12 = 12; - int64 field13 = 13; - int64 field14 = 14; - int32 field16 = 16; - int32 field19 = 19; - bool field20 = 20; - bool field28 = 28; - fixed64 field21 = 21; - int32 field22 = 22; - bool field23 = 23; - bool field206 = 206; - fixed32 field203 = 203; - int32 field204 = 204; - string field205 = 205; - uint64 field207 = 207; - uint64 field300 = 300; -} diff --git a/lib/protobuf/benchmarks/datasets/google_message1/proto3/dataset.google_message1_proto3.pb b/lib/protobuf/benchmarks/datasets/google_message1/proto3/dataset.google_message1_proto3.pb deleted file mode 100644 index 4955bed31b5aee2a257a4979edd3c1b6291b335f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289 zcmd-QOV7_w&qu8dj{HQ>|{A;GUn69Is(pqL3P_P+T4FX`ks_p6DLyqplTDYO0}D9&cq* zT^E(Wn88rMSQW`3DWFp2tYmK%5NQ(YW0Y)DTW4e)6B6bYUmh3j5Sfw*;%sf2nN*`y>=5MalvG+)6lk2Tk*(vmk}>4JGsitCF7*wJYC9MiI~W-z ZF>+Pg29~F#)+y&z&tU18n7DvV9sunQToM2P diff --git a/lib/protobuf/benchmarks/datasets/google_message2/benchmark_message2.proto b/lib/protobuf/benchmarks/datasets/google_message2/benchmark_message2.proto deleted file mode 100644 index 820630e..0000000 --- a/lib/protobuf/benchmarks/datasets/google_message2/benchmark_message2.proto +++ /dev/null @@ -1,76 +0,0 @@ -// Benchmark messages for proto2. - -syntax = "proto2"; - -package benchmarks.proto2; -option java_package = "com.google.protobuf.benchmarks"; - -// This is the default, but we specify it here explicitly. -option optimize_for = SPEED; - -option cc_enable_arenas = true; - -message GoogleMessage2 { - optional string field1 = 1; - optional int64 field3 = 3; - optional int64 field4 = 4; - optional int64 field30 = 30; - optional bool field75 = 75 [default = false]; - optional string field6 = 6; - optional bytes field2 = 2; - optional int32 field21 = 21 [default = 0]; - optional int32 field71 = 71; - optional float field25 = 25; - optional int32 field109 = 109 [default = 0]; - optional int32 field210 = 210 [default = 0]; - optional int32 field211 = 211 [default = 0]; - optional int32 field212 = 212 [default = 0]; - optional int32 field213 = 213 [default = 0]; - optional int32 field216 = 216 [default = 0]; - optional int32 field217 = 217 [default = 0]; - optional int32 field218 = 218 [default = 0]; - optional int32 field220 = 220 [default = 0]; - optional int32 field221 = 221 [default = 0]; - optional float field222 = 222 [default = 0.0]; - optional int32 field63 = 63; - - repeated group Group1 = 10 { - required float field11 = 11; - optional float field26 = 26; - optional string field12 = 12; - optional string field13 = 13; - repeated string field14 = 14; - required uint64 field15 = 15; - optional int32 field5 = 5; - optional string field27 = 27; - optional int32 field28 = 28; - optional string field29 = 29; - optional string field16 = 16; - repeated string field22 = 22; - repeated int32 field73 = 73; - optional int32 field20 = 20 [default = 0]; - optional string field24 = 24; - optional GoogleMessage2GroupedMessage field31 = 31; - } - repeated string field128 = 128; - optional int64 field131 = 131; - repeated string field127 = 127; - optional int32 field129 = 129; - repeated int64 field130 = 130; - optional bool field205 = 205 [default = false]; - optional bool field206 = 206 [default = false]; -} - -message GoogleMessage2GroupedMessage { - optional float field1 = 1; - optional float field2 = 2; - optional float field3 = 3 [default = 0.0]; - optional bool field4 = 4; - optional bool field5 = 5; - optional bool field6 = 6 [default = true]; - optional bool field7 = 7 [default = false]; - optional float field8 = 8; - optional bool field9 = 9; - optional float field10 = 10; - optional int64 field11 = 11; -} diff --git a/lib/protobuf/benchmarks/datasets/google_message2/dataset.google_message2.pb b/lib/protobuf/benchmarks/datasets/google_message2/dataset.google_message2.pb deleted file mode 100644 index 3fa0e49e57db704a0f371d2b58a2d5b315acd554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84625 zcmXtfXMj`H*0zm{B6F|h+KnceNtyII={aeWK9f4>C&{Gu-pe?OB4ESbP>QHX7Zp)K zL5e6U*buOxq5`6#TtyM#+b8pW|FhRwd+pVpXRXZmPduNGXQF{@v|JvKM_HGlL(yC~ zksU9k%d|o%U&*s*n%+-F{_hvp9(Z8dWe;3Db7AVU1CO>vKfFfSeBTdSCHL2apMCb# zw{ySueEIsX500L{;+(gm*PfZCK3UNZ_f@~tx;9cIwfS|*YX^V7>D5hoOJ?xD_n~0y zgT?=S8++i%cA@i7l$*HpuIuJ5cusiXZFdMsf9*RIG?Gp|`tYusS6=e)_0e0;?{{8t z*!%cj7frr+_|6{_&xs%3@$e<|bo%iRhA+-Hrrr6;tXmS_UU5lB7gsJrXuL#N<(0b4K-({jY3d zUAq0lSI=9Zyw+CQe%)`*z3+V!?=!zee}Bnue-(e{-Sgd@@6Uf8hr4m>;nMzL(yO~g z7|yf56<1_Z-~2&;>mu^#w_EQLjD((EyKL)H+?PKeS$epClWEI63n~Z4al7fiJ73v2 z@W;(h+%cKuNGcL>`Y$@t7k+Xe4ajQ$KpS3+<*B^m#ld6y5eh>@~2nV zd|t~Iue@6}@5|E*gU=dIYJMjGfqP=H@dpnZ|9##s-+lbb6=QeAzZ~VxDjKfa z-Tg~7bL8%|%dh-$##-u%#rOTZps=MbTv=OWy>RV6pQEnT-*?q7)6aV;$R#Zq(tjpo zuX^giPd@WFmB#nef6qRk-=;QaVn|JJo|J*V1aE-kEs!z`MsI|~>;m1n^550PT z+f7ux)h8F8x_a5qyWYQO<=!RFeEa-q>xufBO7M+KEMpX|V-NkDJ*EctLirP(3YJOO z_3-h%g938ppB3jyzdHJsZOcP-L1*s=j#T@^C1WU&mHx2mm8j$5>z{u0Jlv?zaYIZ0 z=$Fe+uK0cXW9e1uYi~GMSo3eqGkrg$=6N4@^P`p1>9|iGoG}Z2mUqnbzg~{ zzO<0???x7;+f3oZm}~A6-(I-&a`>|8d%cdUF*i|ey$JXG$@uwK!NgVei(DU{Pdy-5 zy*D~-&h{mbIM!k8qBVqf+*=D+62EY{FLvRDYtC~HN)LZ9cEbfv9JB9U6%l__TKdgh zE!oBm|E|WY%di_CJ#6!yywdvR2P?*Kx4!4Sn zNVVz49hZEKyOw|Sg`=L!E0kxHwDZXMZ$Fi8aQ|R;zY5=;)QtUZxpd^N*ZrM$>`TS_pQO3Jm+6 z1v}qq9ewG{(>HjTJ2#d`e|{!a(?SRZ<3I)!?l|IrbvpmcLWc5NrM?zbIJFIkew z-gEkj$d4oJD*NMa=I*(C^PAsRXPx`r+?!RiZy|hn$MN%{n>U{qy7fr>m~4%`g7+k`3?5Mt>}Qi(a^A@d{;Y>zZ9B9;3~F`mrx>+xOn; z?YA{=o&U@Q-<q_nft$zgu>Jjd(5m{Jdq-&=rhwnrJb4?V7==+{qCSl>#Y>tueWC z$$M`cdEjX6)VcrZyYit42({|rOQ7NKcXh~aBRb%3-pD{96op}I3u-(%AJ$WC3a&}1 zavD+*zM;dzr-mAniynI5x%ulB7f+pgY2UJBPKvtzlHVl!bBB+jE=HtC;O{@(E)8AT zqIz|*fqs|P%1cVLUZ#pm)zr|9$%6-edSlMspU#|n>fD)q^}+!$>SV|X@y`KAtMDI( zH%mhljZ{2QF4(vU8YwpJ$Lc4<#ta`9^{Da2Ce7ulQ2dNRF0X2=3~PWsv-kYAW%cBP z_w)o_`P#cu)cUK1Qvy5iTcVjz2#>XONo0j<+?7$f33NNxgB`7N;%aog=o=kH%Q$Vf zW1xy@OfK8?=A6$CJfKEYTYZZOLS1&*c@Y0xpqdq4d-)DY=qjQ}${(+$LJ1rspmv%3 z=pf5!p!ph;n{WB})8Fo2w5g}XACF!Mp?Lapr?fD@+wT3JH1yw~CO9ar`E1IJi{sN* z1>#yQ*O+|w>BlzjS@|LE)VVYI>~B9ML7_CerQnNXSor50N$6T%6V3;i4i=XP!;Cz^ z9+rz;%4{gc76E;4-M)X@l4b9LkIv}(%lG;27E;7?Y`GBfvwRxPS4p#~w8x5_vS76m^5| zUx-94{PM@ArJ?IQ<*EzH$A|>!K*_Bvc_kCoSj2(XG346D=8Vdr3H=pd!7`0tZ!H*s63WF_v)y*7J z^5AH8#51gQBnPx{px68p@9ens(f=Z%*Ic|)ilQ}4Q|29jZ`@*mLe#n?TOEQmI0B~? z=;94l6~W(BV6+6@fZbvl)B7Y!Ur`%3(Q$Su+uNADXa3<2{+ir!H?ZBbzT_XXCE$`Y z_*(Bn($MuDbkr@=*N8EgNvzl`Nr~K}b(4I~(Moo_F?s9fcdT4>@QdpaRc5iim!cx@ zzoq;Ri8yOG7ASXuP1c3e=HIIYm)gdA4Duy=E3#D#PwUCV2b3 zcmKI)-S3-w4tF55U5fhY7T1(TropLeb^r-+UY?LIhhuq&NT&p05;tj9lr)Ssw$9*k z8k2`NeDKG%9e2Fcvp`_}b%+HxaB|TrlF)VC6gni81=vYFGd*O~T8C-)V$cHN%eXqo z0E@pqbaL)IFQU05{ihVQ@PnR@aN!>h0rOoK#8WGHlNmAZPWkvx$d7SE9@MLW?xuC3CWQjMP%?Czb}$?Z)K3 zeXs4`y8VlrkSCj6$wH`Ef*DhRt%2XewLpq6!vyBA%SXjI)$M>+9`BT>Xipqg-Ban?0;5K)zx&7In|9o{r&uI5+_9LO{fLDCART^UC^}(u6>EX2kVY?!Mj>u{) z7vCn5Xk6y9N2ZNPxiwa>F(AKtGx?3-u_66!mqp+5vhcC z9XTNlk%(k5T{&7PMSbp}i6Lqs)2}H8>D~_9&{k*~Hm=GWB6<2HdiF5zh>w2xPz-cI!;%LsghB%W37pKaxO$04WG$(9!Qn9t4vt#|Wq%c8Hk73N znhFM{{(8si9e1t2=+wE>`yRO9|Ex@bGtl>v5M4B`Z4DKjYBvGzVpZxXRfQpDH;b{h zpf%z46k52Z98Z$?(h^Tqm5$;Xi~f22rGrOLu9(#`_xqcEL2Q$S&znn!Lf61LTveV6 zcH31~y2~Y5dDcPz&sTO`jm=wL*|X@bcW2!Oj!o~w3x5aU2@c)>zf|@}L&SzP)?i!E z{pcZ`G*FFX>$Gup#^hmnR5-juB9F%79Xt+)aWy87e|_Y!yY6{kiR6gm4?B>rE8w5v z*Fzy3H|87>B*{{KzgkzbNwS7UG*k&YYIT32NF5BiJLpb1)0li@)tN_*9QjR;NLX{z z2;!_NIDHQU!USs!%WX7sj7@Qk-0jJAv1b013}6`tk1fZ@C6> zhr@ejNm23q&&UOE@Ta?@c|_OcSg{IuhKiHWaS{rTEC&y@?9`6g z4}SP^@2T%z)<*6{gf}zUQ0QthUKU|yS(1Xmsxz>ItY(pJsgYrQg6Ro&0WGx5!_4JZImri5qDyK0jNtX;*36sPz ziO1;Qks1?>P7ghq)r$v{}(Yq@wP z$4Gmm9E(hl8J;^D-~kA1@K&J4xaesuUm9T`dsn@ z8A4H#|JPxKVAuMUAh(oq5^upWE};k6#MEGt?dJ_Ccv+n)36XT5v3g+p#(ST5?$8}T zvuSatsYh=A zYXR_*nSFOTu9cv=5r(wal4Rkx)E7aa>vaN}ASTY6A+d5C=4*0Q@5ERw#|v?rKF~2Q z*m3{8Up~KJZcp4>%D2+gS#SFyREood60yl#xXKZ9h{ zM^?-^xpn`WNUfOBcj@WJq^QFysmRs+uzSP>GFXk|RAs_kVqz#a4An9vO9k(+k!;y+ zWAf`mkG?zinfHMo%}ioU%XEmx;8e3BS(mISw7D$DOk90wVJHjORt!Es&nC&e*an&x)!TTnj=-BnZ(8>Tj^AiE@tE^ zbUVaIG$z+B-*NYCAFZn*U){X|51~pg*rpDs!yQvr@Xp5@o(qP(%?l<-G*eN}l9i#Z_7{8n^mUPAk zJDt&lJdd6rN7X(8R52%r_O4@MVxTek=l^D%+WG84Buh@~yL3;lJ@LUiTcc1&j#G|~ zN*h*OT&HtSa6D?RuqidfZ5(ab+Ue@4J`%eTWq(@YN7^O9g?P&qe($Jc;S<6w?4MwX>fdIUj%cj6t&@k*;D=j!NnJ6gHnJ?m|K3K&c+>} z)LhxP25VQ*Ky@Ud+evAl!P42Wx%7Bc$pye^&5k_}pI&D}%yo^f2O<6Nr=7Wy5K4&V zLXPrKSSwe`n3`6|Oe%>B<8sGDDITU4A1-*gd#ELBF0R?TV9wZ z2}zVecdLz45M1>znkwO=evuU=?xY#6hwz-i|3eq`E&J_S4;kVr?{%7lw7{d`VFl zR=G;R#H&|rd+^tzOVG%*;F;e{NjCio+H!0&B^}nJ0-0n6AJj@qNtnJ{- z)j&&5>*P8Uws=w79JF&RGK|GHGSJjONJFq>=Nq#hdh;}Rwi$ibpZr9MI%m&1L@^Y+ zbbA{L(V4?0Y}jEfYAxL$qeRBaL^U5yAz;?jF`pUjU|C8-cDKdU%+QErlOhQ^g01W4 z-L~*WfR|_Vop*^>Iy}?y03y%~KchTH8j9-O^(;j~mgFmPZ8J?1dmY+rx}B>DY2!8@ zOUqRn;h zGC@*95xtY3H0qHC@5DWe?s@WT&y~+V@`x1GA6ht7A1;7Dc3ldEt`d2uDjy%$)b=|u zq8S3Lp_PVc+IGHoi!5#X`!1OPb>7rp3kBxIAyqDg5Iqnt2S z@~&>EjE~fnGH-}o#SF_Q;{1C`bL{9 zoNk1orp1~Q8L28_tVSD?zn;2#)|^jI_WFyPE+9xyf;UzoZKV|+d>VxR^<|b7KLFv{ z{lW@com1N>P`;~kRXS8|73B6g`%Z4(wRzJTp!tlx?{qgpsF%mCLhdbsJ*xrqyUNKJ zYT@O%@oviklB#c%Q4cW#Okk`9YmcAVfAcIN60E2A|AtUs2r{5F?7UzIoW2BpRk;2+KMF%|cxi=nJ`rfIny~`6(Z-bsc{WPMd5`N^^#Q?OF zsT@Bu;IIyKlWi8K?vx0sg9cTYOpf#YMn+I>%{zT$083Y_dv(oc_kGlpvu%D3LOo5% zBFbdohnIQ*uav9W$A?1f0*9>85>2{6n@(NBmn9ml+$%KtWgVW|o*C1b?FLWF-XO(^ zARoTH^2CvM4m}1$PU~w<+=}?zzu_lt`v=f1mS(Eyq6*4{y2_r?Ge(&`faV-QJNzRM zHWz3LZG{H9*)0ViH5oYX;cs?t+xpO%sZMh1?VF{j_qf@q*i*u&%fLGhb%!C2||&bY|01iO`4)@3^My!F^n?Y(DCZj#^ixd_pbP2(@R$& z-W@Xk0Vv2Xo}DU18u>jn@rVPMTK{|3liJ3cPWv4_1BZ-2c+s)VWom`t!frgcdT zutV&y^rvtJ5IP6v@BZfI*?;w3ed9I_gu3H=6Cy?kU;7uxgx6VJg1kjWREaTauc2(F z2qNZq44225%Y??}1qWZAedy-bdkt%M0^rr>zL8HE_Xc>u5Qsd<5KSs_5;_WjKuE7R zYc?o|6Nhsn369jq?{C_wbOI;B$_HT^@N9d$~mp{FH#lvL8xASL0OGXvyIYH}xF4tw_ukr5>BUz!+$3etyZ$Mf2`|^Hy+b zW}je&075-+b#TgQ{tZ7f2TYrocss>`#b@>QL&7)Z#}v0u`Z&@=<;59ng+uw_JGO4u)ofwda}iKLXFR81KA>$ zhDL`iD!_26hNR&!e}WY<>MIHiy&q6nfByWzC+kk$y{c!LQc(|~jz6eCZZ-k`_mvx^ zp#i$TrR!IZQ>=+FLFa`B3hIHOwoF4!ck{t=e;{Dv;sc=5T(aoS#~-}q8z5$S-_0ja zf?)}eL4`kMoDV>xqZwp~9JXPXNfl18vb+q8bD(*n!~rYE-VuV+Z+)`r_Dw5c#6*@6 z1BANX#hk)aOnBx|a4CMQZPJKDBCDvC>gQ?NBV#Euq<2yhiV2N0>BRJBG^PU8Cycb) z8Dfkfwo7?KH4dF3cK^G|#~XWoxJ&5le+AT%>ZX)( zG}(_~ju$5^a#Aj?m!Z|JZefBwNS|mKeQeOME_rCtiTl=p$DpWnTZtLm=0H-s~c4gQeA3ps)WH3W~fI+?|*mY?)Set)U));r>=oeH{VD{ zs;~K=1K(-0gHdG;(}~OQBLw^)x?3F;GeeEASCwIU#bm2m?XC?usU)SOZf$~r z!OAB;+IQf$M=wW=e!bu_DFZRO0p5%90|=b1B~t=Hht$R9WO|N`5HPY5>V&dUP7Wu^ zJin$^-fIhAg1SbQT$H(oE~6O7OZw)Tir9T*9i^8S8nzBXEB z55<&_1Q4700jhnp?h&bKVuFI5>`t&;B4Rq6PvCfJkTTBBdwt8FpY}4@b;mu3Xd8Un zG63QDx>1hS+LT4LJpBYKUBGr!5ZUd@`5|#y8)Q2ed<!pu@!ZZ71zW+d|fupZYF$R|brXvmV_W&m#j4^1P0bfHPh(^0oFP!HX zlRQyG2FQvJPo93}-c3LB&I?T*DT=;!|5PV@J^Y6#1<~Sz_6VAT!6Bnl z5_0OaT`a(H8xMcD@7t{@ z7+E|M#xyiQvE6ShJ9hGP2yywpw#9ns6~~C@X|Qx_N+^ z8%sFG3ucA2)+T_E*|ccYZ9mSM!VmUary-f8AD*|o4+;@N$!ddO>|j(1W=;`J)*=dy zmgMA93ghKWHSCoWBTki@1o*AbpL_nDPu`nHLvC~3$}1q$PsIN#yMyrGy9l5+9iIS1 zr`#wh=t!0%Vc5kW1){kaOjU_J{9;})+!&#c6Z{1QZD2@bEam&d360O}$~EQwL_EgP zqk*QA3tqhA*RK|T)(g)WUxVSM>FfIux2?b-9AHR!X0t%-Oqmn`i@|9h)J7^YKS!pm z61`0~mz@yW$!LC6!N&CKCb~mnnqTge=XkzxMPu@#lP_<1bkiGC#GvHN^@t6wf@ge2 z0qEVw6w+$En!%R0%7c(6Dbx8=Mj;O_GynuzyzQ&c?_SdDmPJ>kA=FCT0Yo7S{9uv* zDz=DeRTk+5!o+ZhY{sE!bxaN8Zw<5MpbtFw#JqWb{`3LD(9G=9S|699&idbPPdz>p$r*indJl?)H(pAYhNLxBrkN$Q`QkaH9fmu&lwxgV5EEzU$5;NB#d^+QzH|cWf0!GJ~^}LtCdtl^km+R+;t58GuQx_ zugfcsjSVsg{xmXrReHmU+YWK>9N|p?jW6MVc%xq(F+fVQR{^+qkRsv&9>-*_{F64oP zaN7SV0J-WRk-8N3WL#!yCEe{PVq$$RXk+6{Hc(p*E?@u36MNU~>RI`Qi3!!eylg7Bq~V`)XQd&gT2xZhRbhe?kCo8MTsM9&JV@YZqhlN$K4mrV z@HtkDpYpT|m1Y*t2@*iUTf6b$KPSI^4MfhgzPqirBNi3I&z-#!Tr8$#7Acuf%O}Qp zQbSO1R4yEe@tFco0L<*x9y_@1p>Jmc(qmfR%hmPBIZ*nQ2LLrA=ysrCbeY_(Vc4z; zThx&a7t!4b>&Q@@XVlYN^-{{0sWpObuGkU9xs+<9lGQGPRC4&$+50!{eWAAmaAH#j zLVfu_k1|TbH+X^=}ILQc&+0w;uM zW|BE<%vA^xAFrP^A;o|x%fWlMt$6zG#en*s(YNm9>mXEXXb|y%3cNyT07+d;8I)>5 zEqW>;NU4GzRZJf)sFdnKBFE`!;b|V?@W_Ces%8PGHj-3(U^OjAZ#E|Pe|UWTjt6g> zfrQ|z(mhhtZ66_Y01$i*{QKv5X=s#1QgFg!9maB85filmGqV|;;>5~rlFyd;0f zte!v%^F+>|0c(+Tv~Erd%WeZ2bKfUlFWxgpsS+46yi6_?Vr0btwEVH@@Sf*?**d$Y(KCs=q^RTEWr#P{;fH)>5EGGFaUjrO zXxaHt%9k?}bK{YK*=S?Q74nG!pVbUS{Z<0xw)(Q}31ZFG1#SG!(`%nweCYPxPQp?+ zB}J{9dnKaK2)vXu4=~J8z9JBkIGE0+FHWp6I+#%+vwyr~C+TuZHmlz))1lQ24YCe% z^8Q!nZd`~*F7@8LDk4JwzhkWeZ}TgloHv^R)m1YzpvsK#N7x-z4Xc5{)N}2E=a2pN z&D?K$ciM>?g-{nhc@1(n4UeXQyIse10KA*@uT9Gg{Q< zVRaNZ{DRx>T>aH62YUte-pm+;`YsJk6$d}O^eF&{t|is56sd%@wK?Eb^h;P^tUlN-NCxuwd`3%CVg({}wN->% z*=`j=W5V7Bm{QI8;nQ1Q-|+f_Jr|YeC#0y)7k@ETJZ{Vg!PplX&4w-Zs4+uG7J}oY zc$4ZBb(`IRtejo;cge2wSU^poX8MU{BA-jgHgFg)1(`SdmTm8^o&O)iB=7$1Ml`w_ zp1xZOg;*+cvcixRvbh!$N5U998OX*ODMqt?sUYi1U}CPUu%h7kLPO&M@c^k-cY{@s zci;MY{bw8RT;F@~+XPww>cPyvmtV2){P|#;1D$FO74ZEGd{b`_#m4yd@j^T0(k5+c zIhzL!Y2A$tJD+^`g{}Vsb#8j!jt3x!fnY;6yy&&-#UX6k%d)WKF4)T)pq7Zn{?VqK zIj#%m8__VP80#8}V060d=<3z)efY<3y>LXmHI5i*9DZyG;>E)RMm5Et4;ra$2R;+$ zN)|8&!e(;~yVp3H5P>&2G zz;}k;lZFO^4Xtai)^+5lt%$h5H*zguWhl-fSj{YS*+1xSlx&`&dOT`xOrH3B|Ln(p zc(2!}{SVrQ6vInkst6X88GUQg6QL^bAV_no8?5TV>mx3wb`r!pR-gT4>AIk0#07R z)qKXZFq9lL##%gftwRA6!NL1huekf6Unh_NJ#o|yp+5b|Je73pu&M(j^SdRSj^i=) z2ghX%V=*Sko2+C?rCbq=CzyB(et)N*-{Ndi$ zR)XE9X??#8QxJ9k3qQ%828AvwO4@XfD5y~71{}=+s>UO2EV}v8NB*9(bIbXND*sd7 zFGbyPk#H(kVBn_*)`GfMRtAGwrB2-)3DU|k#em0G40i() z)d^!2pxs3~?m9KO?wAz$KB?TRnNoPu;@71inXcRKq6Y?5RB^b*t8zmEH)VuamX1_e z!IlwQmvqJ9ia1$m*^G{0n*a~;*wnHOBOLROg*sho4KUS{x6Ix9+dVti_IzwnWEXO~ z8tj}`0&5#gXm~WjXnG|+bI$Gz3CjI|L!xm(>3r_c)~#EYJPEpwX?+jg*~`)`c#{)2 zQP8dzk5NHB&cJj9!Oz1Elr(A`JS6kB>)1iRHp8~zi%=_A2&4?$@^DpI14Nr?tX*Tb z8_Z-SL*vTnHs|p8Aj<)k2Qfx2&Q7kjxDpubcPKHVcu-^KzxmPbU*<3Pr>F9=ho3-H zo`6ZaKxrWiDN<&$8{NoBA}mvg%uUo-=mB$E8fEC} zI8b}F7g`MXpR^S?Fkh!HOB4kRp41(Q4$BiPi%4673yiU_#z3bYY#8H_0*eZ zkOjVJeP7HUMf6X=)B10egh=BGV?5qUHu?$FK|QHo0%3~bC{c|e(}(#4oGItydT>fD zzQX{7!Ls`n99eST*T{y`%)UJhFu(o9eZiEcT@EWA9fLv~`51>MBa7WFz0YO06uS@M{qz z>2Tkt7?7YP5`)u49I!_mU5|_k<=T>w^2DIQP_ouL1O}07E!&#dy0nf{5^DN^yupQZ zMjOr^e&wsb-$Ld}Gr^3}520}L&rW63Yhd$YH>f-42#$dtv5h2%2Dd8H-?eAGSUV;c zGAaR1zxBlG@9%x&z*wpWLwKj-`kGKHx*FzwJbCp)3ji_YF{a#3K}_B=ykiaG_r| zL`(OJtNkL&uvSoEIP2S2lw5% zcHV^j&q$1DboUs=ZMJQ7iF>xZ zHhF4J9(l8C*Pf7~bm1QnF6A=#pA$7nNZQ|G+MBe2M;d- zJm=MFSfpZS=uWPiE2pU)^nR>Ih?NA89f37>{`2?gZ+aUk?&CBFwe)^u$7|;WFi`D6 z_(cj13|A_KLG&omm9mz!roouA?&f)j0ACgcyJVwc`hNAUC`SHvae(pr(h28dqja3nfTga>rq}@@wWcg|BBgAgX4(%%)lWdA^w^ z(u61pupYEw@2hX^e&LfTzWtpSg@~Q6g4cfY7GR~5inPf|l5}An#;8HVl^WhDjfyd7 z50O7HY6ur-aUax}y!Yi5Tjsp-*}R@bKKY)FNYKKRz&y z8l-mtw0B??x+rcG0Po|EFT7>)tG`IdTg!JcrKrCsa}i7A;0w-+K_OAMoJ_kg1dS+D zN^_0i;J29HTVku80_r#%oM)yMx%0Y`~Km!wQ)LqYOubf@RA&BswQGh%*LlM&X3Y#l((r zN4!L|5>rT{6QiSgdnq|lg2$R;lJaP_Ixy%Mt~oN1D4CRI0}|=%y~{V9y$9^POzXRF z*JH?i{sn)_=R%=D77iOBd)yKwT3DBG%yv?GT&r-@eR(QeA?UrZ*&WoS7>&^maDYQM z|M<_syDvuGFLMl_iDxdp6!9JfT$LID9?;ZWLqw{_BlA*Jl}8WR`fBmETtPCN{D0~X!#!{5K$yP=7wHQ?*fW*E2{0~>NfZe~RlR+lOrG)E2mQF|K_%X_qip}yyIU^RbE+hsUiyI$bxPHrLe+dzhBkk3Q zeFxxt>Onx#6os`Y(WHoUJX8;kHB|7Tm7z|WJ0ak4I4W6JQ*NZA1~8e-SL1G|iXSrQ zIbgjUIR2f_+_vS5wae%99__cALWs|n;V)19C_C$kr7Z|X9zT}}(Up%;uhbYBpun?PR;B^Ns1ToWbF`Bs+9*%V*Jgkm47!a$} zqr|q(9L(iAJn-!~hwuMl^X4ae-)8S0M4nCtZ#onQcofF7xU@`ZB$ak3LOh8nO_9=k zWnWYWSh%(G_T7K#!_Ai>Z{?5zK>rh=*MUK>;u{ITTlOe9#i;3M4jWp`C{nu)>xh9= zPzVxQLmD0QWkq14?SXrjZ(ca}gIjvv?z;nv=&ghG13!Ve48 z(isnZKySz-SyBa3UB7zi*q48=Y9ZSF%3&f;d@X#wz6vH-bwxNCQsGQmRfj3)s_lwG zsMd_+C{aCy45n&qnwo&jrYGy7IPx=D)iU0IuIX0C#_O@gM1PVYDagIasQgC7CA z(6x+lP$tH(tj>NOFH^u#Lld2>t`mw26hg3CNdlJIxAN|fR()>ldkHJf^trMs3qfZV0uFRzjXs1^@WF9|{QrxN%!im{Zr$mb`7W7}9ki zk*$t5R5I=^hSQ+ax=>B2$;usSyU8igDAm1!wk5dDX7+K zt%BEI(bL1#c*{p6$A&#LVO6d+`*pBqv=a4>kP}inHC`SEZ1A67-TKR$XP^EP+;~Rc z-_(bts23|L#Hl;*<*Wz*ZWO0!ED8JS1Z>gi9?A!D46@Oz%CPuFfy=HTNrN^EwhPu* z^X#BFWT*OyK{6R{Rsoc<_TDX@ADcH9d8uiApHX{2fdFs44~*jE$^m7dZmr=WnekB$ z#U~D#OreM`Ru*@8bb68(#P)mAd9;e|Bi0AH-deLv=oe<(te9j}*$~F7O?zYWf$jGn z|7g{Mn|qp{dH1*!_4_w`L~{ka^;0Lvk8^BE;GyO};!L^BF1?X2;Z_ zMKyr$V;F5?SdTkY?121sc>TOhd)I$-xF^wUH397C?}g~4@aVd6FjkSl3JT7zXXsS7r+J{IlfhKK@1n|xNh<3$ zDyG0{(3_yrFM4eIGp9ayZV>s+q$t02^8*P;<=a@cAehC(K4M+9dZ z;=)8lP{mdwG{14kEEnW*ng+)=Mu%MDSS-VwpyEpH1kWkwj0fWkvI?y&(Tv=3*e}Z2 z18yO`)(JoipUUJwO#RN9BTsyMy2sJnH=l=mO9_9suMCL#>;#7`l9v3D1Ygb$HbV7y z!;(yy(;Q{L!oj7}8R3yUWRSE)d|s81(}o;nsWgQKME%Q))@^=y)_n*-n$~xM_ZQ-a zT=<^<0DAfAy3j;0xrq!DSR*v(IzwiwC#-5hz0S7=$|b_ZXrN z1I8}}lR?O;m(>iaV2T+RP52uoqq$hlCIh48u&3J!D_zOZL^~cgOyER%C?$ZLsByB zS&EyK7V&BRF@@Ee(cuP&9tx8(fVc4K?3T_G2Ek0j6`R_0n9=TJh;e(qjzwtCPak^n z^$joemeZCmd>#3S6aG7~25d@Ooi^nFi_`Q27%rS(QCTu$i#Qme)BR+#t2s7=!GnJ> z;^LMTMpD7Uf_${>2v?&Mx}u6bj0YfV*-L-lwS746uU;_;@>9bU&IU?km62nYMrX#Jj9L=cGPSLBP40%9|6=L(z8d{>E zR}3wyF)|V!FHPW8Njx7}vHNtvlh42U-LE~8_M6qczX;8Q3%da4jLsRAHDPB+UGvdW z`MS&93Gj{njJRFlCq`-nmJaCk%h}Dl{yuYiPp>Oqx(aDYP4MR1P69@a4t6Dt!j`<| zZqWSdrat23Vi{@-hMh3wb&*I;Ox9_JViQX62RR{tZhzkW=4%h1oNq#I_}RM_7JDU0!;6_@$(4? zjm+Gf@QtGcap-E%KqwO|WpyG~w7;a{CWJP(Et+m>80Wb=B8GUE`l$ZQIl zIG_<{6y9u3ZEVL<0ZziqSLT%Np@NlE>V&!!HZF??B-NkK%$d9W5>Wk^jP$yTD&PjO}tiO`I;Z z#RM6LJ8q|X_>F#_5rZp`uqlN>Ha4URb|ywibf%n4?~uv#1X*l0kQt+;j)avYxC*gU zCy#N`D6~WoEP-v9yXn_AcOCB0eUU$UL--l6^DkietGgxa5G^-I<}e2_jM^~haJ5XD zhz9c2{10~Q{%y`nQ~UnEY-LGN{~YaYExX|D2X6zELxqZ|xY$*ke7rth^yEe;tszC+ zLeN&nLXm=?V^9~N0V2g28XZtOK^1;+_Mg8$^8)gR;~9OiWoH4uA?L2fJ!2tF&Yp>wK?Xa1V&`MuKKa%ZZ*k_XD1=)3 zNd}3X^WY^{fJGU}Kup^n;8kjddRm>#HF-F^!b$L{@Zt$Cjzo>M=u$UH?JJn0@X#oh zhOLZQ+_^EGL#>eeabA$eHl986&7r?jh%?Nq^oThke8Fm|G=wV*8Myg^mRl(5hAaKF zPIS~|t*N4MR(zn7u2c$j3A641<~aMt&%6FU3#P9#`)oB4gwlNq8WUvfVuU~Ug3Y9> z9TfD4)J&|%*lB^m6v7hI23@=D8UYT!` z{sW+Eq{t;fx`!!<8p3G1kK7;Cl)P{`%7}Yx)~ZoBo^^_J?WBxQ$l@m=psu{PeBrL2 zK1RldGy1N$;v*@l^h9rxONHz7i@|OtDQg8JFTepdf?vsJV3=*$IKGWfrE;05KFxMA zfjIl{|k3mG(1p9T18=heiyzc-vHFMKoa+rcRE4+iPp2LaS{}a|VoUT!q&K4WO+{33c^@ zVo((~&-r})(X9sosW827@iWtXzDO-NVpXqCs<)+F=nJ zz=Zk#YJ^1;lic zO(`>2@{e%HfS+5m;nbeFZ+-+ec4zk8`_|dcmZ0NB|1|5*A8hC7RE>)zg`v?*`D z-rHO6TaLTCySw{y+}-`08)$J0!GZ)05Q;k#3l;(dw;)ABA$TcJoNqtpy+7d0nP+Ct z%$~K^TJxhUe6SL^>W({M!GsIs5UFixB#mZMiqWL?a@vJN;g2*^bW5Me6wKlU`GDVb zmO26{sbL3LW9$33Uhw^Edp1 _Dhvkbcqst!k~IF4a^29wPt znc{uYJa05BaBWdQ^$aur4CYnOa5JfUSLX(Aq7C{D%Y^$sp z8}q~(KDQ)jvDt&McwP-Qg4C#EpsMTe_)%)7a(B2@*p>TZl_qcwd2-FD4b11g_hh%us6Z z_Iu8LG*(QmuLRw}q5os*PEccgMse~=c8l@0;A3yNoo!hT@=7ZI` zz0l!D*DVt{{>N~!Hn+`X%*&Kg=?qOlyqTI!BYHbvkTRg{+7#-UFFZHJ*^a&_7%md|LW<|HoI zD?h#Y={tAc0!BNV)_%BVLWf+1y!P?^kmgASEWtckCiP1*df7hU+k~B^FCp|(BYlF9 zg$CB!pPhZ;omU&tnEm>1VDw|TZ?AIikL=Kf1^Jhx35Qa^+N4&hrl2&Ls1xzYk-HsF zN9p= z7)CrelGr2~Z>R?`d&AzX51o782K73A=&H66KyoKzVXaLll7+4sci}Rj_!zuFaz>4Y zY7B?8LMUlPi+bg}))?|r0uRF{N;lNfx{{qRsEK|cfNg*At~dVr@#pM{>|C6TWgL8)#s*Tl0=~;2Q|FL@RZ%7>QM)uy2IN(g3J_`N6yIf9cL|R#dIm z@BRTgBWy(S$^ve%gIRJYaZ@s^Dn&%16BccOnt%_}MqGYvS|Xb9AO@pUxdm4<$g#N; z?ct1WlXBEEWxG%yWEo?Mj+kqwXZ)lS7}@3&(4L?8_KrJWeE;p$?EklNmAAE#?*1hd zFcVQ$hc9J{2=+`Z8z+;k5sU~ktX0)C*MO^NW$FxtQ^50te0esnM)0)N;U(}VuYB|V zC;oBvrK?!wD_6WlKXU6q==`7Z4V{-#6%mWE)&kygqYWoI(ava!G5*{` z7y2r-96uoQlM@0qwvC6Z@q+ulyX}j!KDD5+edrq{;9cLSMyCRcJo{4|nh~?y9(oZ| zHS0X&C0&E(s4EOaHv@R`#@jAG{pv>^+2D}g9DQz;Afam_i=4BEpw9j;snm`5;|e~x zE-fdeIWn%0trxMwRk9ktU@$L`L z-G0oc{{TRK^V+|PKUc3WBP;P3AGwST@}0g{H;A;76|P#L5{?^HTsf|2x6)aLE<_fL zUCXXoMODQ4zA2d-(#V(TY>(F-YXTwoiAWL(h}%lrAewU-0~AdqNz=9TeZ8ibAbKlB zNuo2C8NA~>4v4G^V@=V7MU=ab~|1Yj@CCLur2i+VUS13&i0?EUIg*$a?Wk+wM#<2pcv{l)QL-gd{Udmo3k zHn08RYz}B5Mt7spKSx+ykhGEXT6{ZRa<@1UYyxZ~LVc&HBc9GX0BTN?<}x!e^jLiIJ$m@dt(MjIOX4I1Amt&n-2( zOI@OsvffT{mPYPCKl6vk2lvD2OS3jay-2bZ7B)jl9X%N(;fz(YJ82nY*xg!MZy6?rJxo{@ zr=T_Szu$WNXYW6-0p~oTU9mR{NON0Ql~rJ!EE0w_7xpLYI_P(1)qtI4%JZvHSE-Vb zREhCSI+M?*g|>8Qp65jk42FTtMCuBe-r+^LJ~!<7CGrc$yW7L^5KN6At;G)TyS3U@pz{8 z3ZXpi{d2#1;Ub@V@2jQRI=QJngtF9Y zH$L~_8<*UG#v7P?oB?&IV^8}LIwe*FQTzbv9uAiq=^(_0NX{4VSkVTd7v;vP7AK7m zNexVSe90YB`g5FsV{Yw%1Tv{`L)L^+d~Vrx*JZbzx?$1)ZWL&nKSj=OoukN7e08F6 z)CvMbA6CdTSwbGs`jzAF~74JY79 z7asNWXUA;NSaw{oN3|Y&Du^bmTI8G`p9`6ZZtAhf^^T&<=QhwgR<(flPM21Mw*Up(lkjbXj-;R+$%@ zc^HKt#WX0+p%_sCQf=Rt^78mm_OQc}bG0n7JEG)^gStjuWrv*WgqQYh-LwBKu$tMl z7Iv;EvN7auV-WdKoFS>uOQ|Tlp`;MB(Q%nI&5e4DDo&>k1knnIm1x8$qXHa~w;nwI z#9JTv?%*mA>pyIu=Oa|m&S63;Lq?EZX&EL2&<}AY#H4Hx2-lqCSZ(anWo6n(GiS!j zGgJWFuYL7jUtaa~j@1$A$OE5n7wLO+q+Lkj1Yip3+E!MFL?1h-JqvNFYALYd3RlIj zdvW?mErFeB?fr>M?@q8R^g?SnSL-BEe^_fZ<>rZ2*2id(N3dV)z476*_U(LnLznfl z^zmr>9ONkR^{T88w$pf-XNvm>c##k1G+?k!p{JM{$K-NkIMhoQ!!&N5PYaYsk8p((q z@5xjdC*IJmrJH0IN0AdK{RtPXPnbJc4A5?fQh}KWBBn7ML{A)d&37k0`vuBkJ#;NC-K|*v z!yjJTs2i4%EB_mCDo$Qhi(6w|ET69LFfBZ+iD+t4a;jpJF(eBD8B#!G_D7O3BTm@1 z&I?k{_<|3vKI656pI^UGdwb#hta|q(1JIm9F_ zr7E`G>Gmqru92jgD8oUVDemtqG9n8Pld@<%T1O}1;6X+5{qMKzdi}ejLHM|7?Q6|H z&;Y_A!?QS0+O;V2&OAL|>PKviZ^c<5UFRh)YLJkFCFFY9kR_HEPYEvmf{np1 z^fLNzUM$vZRCWRwUO;i)fA$mCqVOS9@eaKh%Gp)ungV&$ah)owQ%HitxhTL3TO=F| zre{rPJg#`c>7RRoF^r$1_cU@Sdp+3H8;Wv6o)xO-RbOUQ+$oit<}V7fmmu7q5y_` z;QCkoefb&xQlK0339RRo>nA_|J=$@&ru`N=jvtnoVy=a&FraJ~&4rUap z*`+zS*X}>|^rxhhtBDsuMlrEMmeADg5 z`THP3IpNw@Uwd@R*L1WS!>?QF^*-kR1aBndC#Ta?S%E2@wMO*3rNEt8(z|sIJ{1mV zBkV+aMlrCH)zX;JwGvu}*o+WcHt-f)o;@4@et6s4&maEK?PRn|jHA`+^}n9JDj$^) z)1yG=IgD6J$QsRHZcJP*^$ebD9#JgV&4iznT$Xw^s3~l}@4%NgowXCv37~3y6-Q%i zirn}DxCe>JB{fSxkoOiAoCcqZt683wLP(&VuB$qMF{y~j%KG-)U!;uiHR=!V>>@ZMTBClD{b!sh=${|{Z8QC zJbmNM_ndyo4I66LADsFm8ubdKumfrY_Lz6h8X+Vqzv>@P$R2xnW>MO*R!hBAwh^nk z8h3=x%6K8Xu}X5psG!3dkm7suXn((cEPfl9)r zwQmY|^kkVL)jSlYc-iREf;Wj8SPnf_XuDXI5*VCn1qDH?Q4EVIQhE__^?6Gyca(3B zc=r523^(qB58n6Zhwp+T1*{g+uwox|F3>jnh@}8%+V8Xm37;Q!iz<|kYste%!sSGF z8rL-dKKkN|6Q8^J!H-aa{-J9>J^XRydPezwcF%_*zbI(ID@?|(E2xP@)soIk%cQKs zJ6HypTEZfavvHfw${%7}{b1!P{aOm3J zzwA`4S0sUrYD*ruB6GPsOOUc0rlMq&m`-M)UQI#uC0$b@UMXZ?+p@8eGvTniKqq

oB%L*Mg0Sk{R_(+Bti6@IRC_a)aU`R{i6dzXz_o!zcIqisD zf8TiuG`?w#B+#J4=tF+~OEgjSo0(wdVyFaEeKn@!n@v2{8rRvZ8j);R=@%2s=^{5R zu*3L0d)X7GTzcmbC$3s~>(?uIvV#2dyj#HcOD`u^lG0FI*-;b2T9-vwcVI}Zp$e;! z6$pxq8F84Xq0tBr1&*LL9aZJ=1G%yx_v=e#<+2^dvPWj9xOS913*JW4&eg>!24gf* zo1AXG!HN;+_`K07g_PpigKz(3*Q0l>x`4FrN0$=~v4&(osEn9t2 z6G0w&=?K{BF=>6f!0VafRc+qS$je&<_9T;KE+AF^;OR$pzjfZ4cco3v&$1?hoN9U-g5kScG?50+VyXSKS!fYgUA*DWI8pPDMdJB z$plgpP8AUoCDIGljy5n#lyMk%nlPkPmf{b>0U?>BI8o$FDtf2#jWHp6hOmNUmMgxfxj49|0Z(b`b@G<^gJ=4h; z5}v*%OcDj@V`ZLi%yos5kOabR%Li}o`|9nxr07@cuUPrh{1CZw#}aZ!s=>fXS^T-B zC6%V;iT!ERJi;tvEo{glw-R~9o(<;bom0MlckfAGKEIm!=jajj`fleV8>K-Ff|D7b zG=>$-@I1QTqtmxF6e6`8U{Nt*DNt0Od+y+QH{SH2lVxGjt4ucuOQ|hVsuTCw}_Gu?H_eDLtFl zww<6+ud_~k6kT zexM!Axfv;`(pPV`I-R0kVM`5#ZIahi>rBWb9?r~#tnK3$&%XMU=bznxlCC+Vh(=!y zx#+S_L9(Tal-XWGL02%L#dEoO>E}^3b+yPIt(nuQw!^E^sO)J!GX*T54~~56fw!*S zwc4wymmY#Pqep&z*xis8lT?g0SDVXJy%JvzjO8-KAjw|W&U?xw!7_w8h0gDkHzC~4 z{oD4d4?KC_3gQ0rLp|C?1^M_7z$f@alQ^2kgSrB7?np@H?0Hw4lysYprbbU2@BZ`m zr$2no7uWnJ8frhk1N2v%Pk*^_%94;59)SYx@1)-0RHJi|xbdc_AagU?F(xepZhNSZ zUU;xW{=bfvMe__w(HFU~8AAt4O7vF@@57HtZT?VW` z+H7hXkJ*hL!>%LbJ^fm6$?cV;$w*$S%}seyM`B2?^l8(y6evFXUw`9~n@>EWgtqmk zDx~}-;;KfKLX02wAk|#bbuxQ0F3QRqf^eNW8gmEcx{)@t6Ff1e9n76*+HhplXkgN2 zC+vk=zq{ze_dY%og)KI(eR0y?RO^qYl4#$4g`CHQGn&;c6*QIz#?~}3u_aLm^s+XO z8ml9l7y$AFGYKm_JQu~%r7)9fN}-H~7xz7K`crQK8-4TIUcFSc&fi@|+gnF|{Tx(X z{?s=oaUC##SH$%(N!}ewAdzUIni=y(Q)<;c)seL$0c$#}N|SJz5s%KmLFk6wQbVFlm)azwpmbBb z)IL-P-Z^c{{--WId;`%qum0M`d3)}ypl@b|2X&kTNiY^8dcr5RCb{g6n!fOM6YizN zm1U*vQIl0d%xdyJW&;-J*7Hw!Z_Ag*uHeZ5kABT4woUiS?#7`Gn#3nC&(nS24%7&#_EK61vv---ZNvdaQD1p-|qb{ zzWJ9`1?4l@YPB7L+$0AtBei>JOZy{%P(;n`4%ww(nK$F%>@G7V@8G5RUaxo|76;Sm zYRNO}6ex4C)RtZjI|#vzOE>6RxVdjX=CU*Hx#!jm;Qe(9Fh!0(Y?a|Sk=r)cp(s4^ zEXf|O&FhM%M?DoR5Rv2{s7tnpvtVWfdfGB+U`cm@!0_6QSDv)x z(pC7s@KPB)3IB*7FMt;-HdnS&5HDdk3dL->KBqD!^yWOI%M;Z~^KrIx$s z-EsflAQ%o^`{20<9&?@HbTJ-pop3ltpge83G$7 zZk|G@h(wA)grsh$mdH@%*QgO^c~l6R$MU%th8nvdDF^6f2$Ko-Os zCYe4$iMFf?d#ZHL$}%AVCLhaEN*by*;*A7@5*}Gufrl!fwt3oT2T#~}`Qs}%Z|hAb ztJaU+vjR4LjXWgd0Lyf0R$xJ@xEQ!wGLc21k;Ii{b4J%rv?-!esyiSjbO2wgf*h$F zP_w-kA2|2%b1zy^EK0xs7G2{Oy!Dzxv_hx4{YRpUt(lwoCTTUr^C0$!bE~Ynzg}U8hf!p)T|9<(o19!fC(`wuv z`mF`sNx>}g46`CD(PMIBso3c?N(|j{ooooCQ|7!{p3BH+nUTgs!jcT0z=RX6=kozy zhmh0~W<`2O0UEn4C*5)Uw;#Q>Q8nFl04&q|l*15z7;Z@^W-UtSs5%*Quo-m|W6Nlf z+Z5R}U43%Gs%UC~4A+jOr!#zvR#X+}#6+>eI&YZE8CxOE)8~eyGAKGDk=~dvZ}#|s zB-Y#?IET%G%u)#&mTrK#Uw-K1ZTCI;4Y*HjT8pi(&aq!1%_}SNqgJHn z9FUV$SKZ2<1QPuw&OHt=eKw%9g`5^K(KP6%{qmF&D15tLx$)~WKD}h)QC0eaI4Ou}78cOi}dvDqI)s1(&xdGkJuU^qi=?F&+crZoF z4Yz7U8_uq&SgSEc)60$1+RB;KBp<~<6Wq#DrNxDB^|siq_xGN>=Zz)0I{%b~=dgxf zu5#Ta^6{mR3Mjj>sbuVRs)ZSXP-Ss5n^kLkTu5sS?S(8xx0+@%A7-Xgxy5d$S?EpD zOkH-|q1Q1Z(JmP-$?v~)+18h@z6*$eo7T>HYE>g%L!Q+E5cms3qU*akcKg_16-((| zIMSc^?AY%Pzv^+6p1gT&`bRWj{qYKFnIOWS0lw8s-7K|CqUIIMz1&vB;;7(#E4nyhy8|vKwV-dj!rt!Oae{w+9#em?z}&r z{_HB8|9IP@s1*tmxnu_@Wz0;DC)u9sU7ayit5grv{gB_9uTP}3-qNmZ%8UqJSk$v^ za%xT*DWBj4o<9ayAbb z%~F11GKhMzKD?SYF4X&8M$AdA>zUeQoysfg%hLrP2c^x4U1p$W9F@6UkZ918x?#%= zIn9^1+;-DrcW?0fNdMDCn=K+=P=S4?aF>%o(ZpNjiK;1F(=4;~drf4)2q21>g2&I$ z7=%j9N*A{5X`B&ni~C(cLRLF3dlHaXkGFh!&lOi+bn?q9-P4}WSGsQ-GK#@A{0D#9 zKPS{$sw6=_pB22k6uF*YEz4}V6!cQhobvrs*Pi(03by}$PkB}Ax5Q81D3SdM`CbiL z85O>x8zw=jSHLSHwZJf(mx|5PR$!#hR2y!(-pA~Zdu%y2OdDFJwjlWWmYg_glfhG1 zee+xoHrxAOc=M7A_wCr&efIqU-F9x*92Tr3Cpj)rnq>llTm$RxCY z35=K76}Tu}aLl(KY`gcJH2N3$nmM6L^{ zK$E$4=jH#{a`D4xwzO$&*Y196prtT*H{V`S+RjUxz5Wzqsvi4t<0zcgTnwT)ntj!%Nc;$Y6CO)08g zf5Nc_%e4_Z#K2d)t&FPe*HArjCV{7RcYW%KpouU#o|xPeDJlku@s>Sz?0ob30~enS-92Qj ztpZ9ss{Iin?<@gS=IhNxp;1JMhxPuhuD}$v8@f)<%hr49>3-2V@JwAJq>rhE8a@25 zTQG#mCP=q-o^j6i*IkdYOE#@7@BaZBjb?=M`@bl&nT|x4j|6#rCK&nj>TXR7SHokR zVo%jVqpQhbjL||ec;$Rde9^bI>YlQcLmVjt_Z6={t?qiV*68>#t7 z+mQwpimoneNNMnXKfn=t@4ey9t4=%jz18^VPFzF(zKk5RX&c=7h**|*?if)CRUUUP zp$X*fa6Sp#D3$=sT)unt-JS1#|14O*0#oBBDfD+XL=8xI7G70N!)Rc`O+#5VRxGFFyS2>#P6of3qTmcaS|~0Fr17f2xhC zLmbIV#GY0yD?Y?!G?q)D(S>wwWZaDZ5T3X+IqpYZ=$E|OP%rU?sc%VDnJSr7NFT*w z%Q2hXNej?%%4R%BQxj-$ykPE7Miu3FoLvxUMmz|pu6M+3fmPntGrs-n*Vi6IamP(- z{%?*$13HYTE)Rj0Kc$P?i=jGRu57XMuJKe(cIEV8c1lE};Tf~ICN`Q${4!UW#u9e? zxtc}N6GW?X2bnh&B<$sZD&vB?-4|!S{LMYjzm6gfo7W!w2%OFT=Mx(G4Sd9lfQgwt zl8*?rO1e*(sY;62K*HW5Mu;7yRy<%6*qA}s!N-#HqI@4#WO;#vQO!@dA;^k_@S| zSO&RBt%Fb55_Ff97~*$&1_m;vA$|c9kf4vZJ^$VpXWaJpRliRq1AFI(gOx^Zj8L`$ zm>;$*iQZ7CC~Kx-{*phEA=kxyCZ#UWTf+JBIOgU=u_SL=u1K^Sau>Ch3Ph5)KB=hY zwOGt0&O0E`^(>#4ZS+jU3aKYAO$<34Sp>*pC+<o)35bUrpyQ&C13;gajT<0fL_P zLYYZ566^B_6K9clCk-1hP49UqZB5MPk;&VLv!_cW=30q1umnoNxkp{GZU1%qH@FjQ z?JD*8AySN;smvltnJLB#CK7`3LRstBv~vB#z*2IZIWX||sB)2r9+bdBNG0-??t)-< zQ4wdQj*PUF@vvG`G6qCr&VsQ!h$9@++E=+!Q<<>a9#^M!_h1S}9s6%MaNK1(E`Dw` zC057483MSDy|e$q7v9@* zq8E)-Rp1X`5A@>BY#qwCHZ?HCnFgM;@l1!ra<8MT}4e(TYwS(FK5XfEJR_L*7YksC!>os%n_0mGJpiHM&dO|!TajXg~%jz1{ZQhh(3B5k* zn&ZB{?Te@2{W}nd7gzVJLy&j&egrZdyIh;1s+E-z-`D`SY~CQcCB;B*>MN+KQ%?^Y zuG*@NGB49g6?5ie{IyS?zUJ^t&tD-u=f1ra!1`t{~mGo@_14FnTS!|H~FH9bNRb;TrSsIT=+t&+a7 zXvH&WB4yR(;_>R^E$?nU?!qUIdh(c6q)2~s9y)Orr1dsD@MtufZOnkK#4FC2ZOW`| zYtfm!q|{uo>&snPxj~r0s9V`Ql5DDzvBxH_wm6%x^-~rmo#90L!#R`MD^A8+|NX@Y z7u@#X+gnzD@#_c^{gxnNI{>tt!^p$jfEn}7L|%Wr*NYgt?XnYVHxP^r5+N0ayVUl_ zA2@LRmsdjKym{@cD^F9c?;CAF8~7O#;{i2wT_ouc*?hfT$B_u-S~6SA8^*jT4<_JH zARM@g?b-dvy*K;?Fy&2a{Qvq-bnj~*eAbo()zA zUD{leNpH+p0)<0GsmnJiS0zx#O*Dgz?~=FeQ()yjcIMf)y>-WvzeYQG z+Amh@<`Po+?GWUU{-8>UPp}kAq12{ZPLOdgO%!BxhpGW}LHCxs-(bz+HD=EVFpr)%P6>g>IgB`ch2eFQ33Op~X?F&B_Nz1{Ylg(}#0 zoqXJ#cYgK6J1`KN*B<!xt6QS5iQf$WK~qP*aY23!9@-BLmED51dq(d2QrTklKpG{ecIDU-hSCxtI^Kh zVn?IoH%RGMn?Qle6ecANihdZ*F|>9yb2_rkz%x&8WvSgmAt7b*&t@8-%1h5+qEKGk z_VF`2wjO@jp=iRo<+QCE6`Kii#s7kOk|`6HL>ODLBc!?__KY82sJq~eiRifPBK0hq zZr|^pLQ3uPDx6CJn9g4C(vdG8{^C`7bmB5=VBmtj@7aFu2xXQt&^o8#U;t?vyoRc! zCyEe9#Uec@os-lBLtiZ^HhfFtWV$f1s8tNZ3vk6p7k~2l=jUxZdG(3p|5(}2iouQv zHon7@VO6EdpL<13$(Sfj%s}6pq>eQaTvgf%$l#Q{VE4W=PCDYijjJF3_URSMSx0U; z0G^dfwyVtN&aK68pPetd11uqoLlG9qjrO*N#p>Y=L9T40FV1ozbE95&KW#3Yas zTH~M&E8v@*uU`DzWnZnBi<`d%cOTjjm!Zx539$+S;MV2HbfO+FpD;)kD)ERB!xsrv z_F#+VW-1r_j!jNuPFUH+IIB+8M3HbsY4S?KRIv2eviG~I9=rC_kI(|xrZq!rGMZ<$C<( zv(PS$k)4~9pf3tK>CF<3HBuzm0=z6Znb9R8K1P5*E_mO+jymG3bAN@#tNB0P+=$o1 zkO!CW{JV-Ao9MJfVt0xS=@ul7$q@+0#nuramkLT8DP?A86A%QQjNe1T(9%7@xF^c= z%W)x+86X)>4bFnU@4We@gO_aFX`eb`E83+f;=Usbpr*~=R`6n7Je^}{=vub8LA0=p z<${n_C0Ocn>4Fhn521t!WNh9;5cYg^vER&6$YyMnY|=FXtgv_M-@kh7F9$bJAd-1i z#8xBcn;>Mc=8(DUuki*ZewCwjR87UE!fTof%eL}NPKb@6hbJ8<(me70?MHul;Fa6q_lK-m&%h~G zuE=y`aS0y0)bK7}0$xaS@@r-ji{U3IsC9aU(hKHL2J{v8zxeR}i#9afT9B_Pv(In5 z<>N#SH?rXM7Db!Jkq|k4M^>*3=PY%V5u^gb&LlP)BWktY4qLJkr>}}fQUpM=IS8%b zxy`H+%C&nh-~Z}G`|e#`(zq|L>X&BZmrtDzXFT1bSunB~g>voSQ$f zD>%+^GfBvpLiI6|R*U*ccuQFq2xG)SepTqB4Yj<$ z63(DoFMRZ)y~n=`4;pP++f&A)Np2Q77CTpG|3}3nVaz3hs1vI7<`SvTC1k)UaLf@O z-~Q0nEw8Tr_UV6P(ZKpIWP5=I^%h@JAfJ?s)Y(|W@o1z9e9lL1Ll@##v^ z;zsUH{{h55X^uS{lNRuJHJ$GyiiR$OXC6yL#Q8+2=EE?Sis-Ohta+EAN^xcg_xa$< zjSnSZC;97NPd)C*r&jTB)wRDx2g!=4?+5}@p|kLeJ$N2t&}BL}*{;{v?#DaKlAr1m zK<*mraeWiNGa=1YBpED8*rc!t5)gOYd(YD^op!=X6ri;K&&GC^zZtX|g1l%B#?~M? zmPqADSxqR1xt*xJ;OyoYW4+N)5OD=ccU|63`7Pzzgrja@+(F3DFMEB*hj$(~Luc_! z!S!edlgKwVxb22sko2=v zNW-t)`rz~1|9l%90-M&}dE+PO1Y?o>KA2#3KP~b%@r52#)Vh@cJ}eB-Wt3dUv9REq zSouJQP$i|Dlv9_fOrkIi_$9l)|N8uQzJ3+u(ZC}BpRMqY-y#0@e+j4S(6kJ3o0WhO zYO7UJOqfc@x-)}nSy9A$-3gx6$StQyUk091wmQoBTCkQ+tn5eU7Ki-8^Smk>u)FDr zz9CG~8Hs(P+#w>kV;obYHI`GggkX;>vbN(6uS!fT&zdHl$Y(qX5)1)Y2$a_Mmw!o$#3z@A#P;G_d8ltL9=Hjw`QCIaD*TX`a`ec&x)6zywhm$H$-i`JSWBT%aGUqyGYp zz&f(|#lOP+ix|Sw0t5v^-L~P#lVFobD$4_$Lb2Phh#VDueiEa5^%JQ+oo4YuR&&%= z;0Tm3 zErb;#eN&VsXZ@uZHWKJ)XH~O|OfyYK9VNUJT9c0Enp!R%fxFk0M|^YShudDeW;LeI z9|}b|sdZJ7_aaY{p}Z+*TjolV6|c8@xL(UpubcD*GYus!AR=lWVVLTaXC#ZJS?ZVi z4m(RK%L$ff8TPT$Prmq*E5F=?p5lK#g0*5Dq@c$|GN?tuEW!6C9nP z;@jeEQcWM56P?TkS*eVNL+a`&Y;ED!?~xz2)eq z_uhUxyn(Q3O^R6o{08JVsTEVFAoJ)#O&$;P5vMm3Q(F*6)tMB=95hEhYl02niBrG)_T(K8p|pX`YvnBz z_4+69@Eo+3MBWX9)q}vs3{fac4~1zMN;v|n&Be8l%vwgbs}*{Lg(kej*O!wG85fh` zB=dLy=Zv6-)A5)OcisKq$9wGP$N%H3)ka!E=7&HTtBJ`9ie*gK95kt_YL=ernv7*V zLMl}+`N8xDn29yHo-@re0MxH_%gjbvwm^zL{uJjQV;vcyz)2AJy34U&P{THSy*eS9 zca!xpA0eXF#<96n7^6@&15uzdS*=qqR4Fg`T4(x0m zv)fRl6tKv}1*z8T&XZtu07=pZe_U zi%z=g)iYN;>YM(A4$TM> zo2N{XlHYKuKxs5D5W?bQDd_dP`FvyEODnY0bBL+aUi;$ciw@s&_v)*D-aH&#Fcd_3 z)-Qp$+Y#k$oVWyPsO3D}Q>5d1wlRL_l^KgvR$$)YhDAZVZ)8WFuXGG=l3m+tWND(yfrZM3bsCtau!bq1)ph@M)8p#}BvSbN_kiC2t>l3tH^m zycW3p7hoW8*ordVLQJ=TGFas>PU?aXTaV*XvNpe|MyKg!N}>m1P3kKbTEQ+?LGz`u zBQ2+k#fdd@=8SJQ4lU*$hQ(9@i1*Hx7tgx>s3$g{wimBmd5klVFA)HL01y$$C3dqd z#^kz&=7QW<_Zm2}a$n^02BZ04DCIVj3+-%)Fpz%71gUVSpCo3bMA>3od^no z&1;6Q5y+sVt5PEa*>px4BD*kdw+5kD)3ihaep*>0OgWQnYn2som8&^cAZ&m)=Xo?^ zE*4A|%l1qL7pL=a8NM8NqkFHt=;HhTf~v)!61anho_U8MdtQAS?oEv*O>85wO8_v? zrDeRV1h8z4RHooH!Av-nc6Anmn$0TD%Ex}PV>y;2M}Df37Aq2Qe5%{Yc1n{Hc~{(m zG-dm_FFkYn>n}j{d-K|R+u$X<|IgA}IL=jFUBk7sebfHh!qb-LrA<5T?(XjHcii25 z=1qYVhX4VBlmrh13B`gG2n2Vx;=zKG0zv!jJNf>AIdksOeb!!kt#cM3^q(5YS_gE8 znduma8sbw7Fmlqd3l<@d*Qk&hjUr++Qv}+WtRyg)*%`jot;skbarVN?|32mESKj_& zHHSBy1+0*dul@<-vcEOa}GVsD6m8(eFd6rR8N-0EREqs+z?UAUs#Q3gD&prOYRZl$#7xelyt{m#{ z9*y|WMj6P4*A53;VHK|JsF9o&@}d`0%oDk6Cqict`KDaLp-RPYdXg40ydPe9_k(Xd zcRB{0o;N=kpa%~QQI6e!B>J_{EN>_&(~V|mGSWghdX-uvmWMLKXl^8efC(R7f1AGA^z@G1Xn?bB?L6wrw0(?x zas%2)QW1x(^N6(tlhk9^u&tobtuECDs^_ql_<(>1Q?+2nX{^FLe1G#DkH2^4 zfmKVtz^>-BgBU*h5C|=CEW+Z(iBfhv+a?tkQhGunEzZl$+1Md9*4%YcDpMnN#h6yL zXTt$E(oIiFB=I~VX+WLW#%G?m%GUt9)H%JpkI_ur`6@cTlCS%QgrdP+JZLN zOQiV?OQ%1vIeoFNF6VVna{W2q5D4;gGKp;-H9AN&RjHmvx=3x|=rLT)ejlJJ{Lj2k+l><%^FUdVeWDTQTgs$Q!2{m091gqQNa9xR8T0b$cUH504lw3)@N= zOVUe*%kk!v!(=K3L)*mSbMc3P$kgZ7mAg%%oz%_eb<1pk9?;t80y&e>tf?AgaSl$& z-QT=%!wXNJ8b=p+WS0mHX>iC*TY&dQAd$6{vYAjnqCxwc(n77C}EC56$=y)@Mfp%e1sCx@8rSP8PGI zaK=KXOjQji;`u_MbL;6PfjC8$i&GgKON7^g%EpH;-*@GAuim(-lyjZ99zB=R$ZP)# z1TS`s;$=8W91pg{A4xkRuZauSvy)3Avy+5=$Xkwj%6K8AG8|R`&7lHzdew8sKKH~w z|Akh#u3sC|9qJA5e;PnrTq2JQfr_H@LjlOZMpRPiF{{X?EK~Ukm5Gc~i)7)sOeP_Q zMS^NP&Zy!YjT*b2Ce-M%h%eo9R0I8ZmyBz4;jOU!jw=uT?Q>L55{Nd}{sko&Y(Sp< z9&Qf`(@FBkCsGmH8u4@4n51{8EiTCg&v0s6jvXo~{sdZ8egT9D}F9o_9X^ zLzMrybj8ik7Bk<%7Ut=HG|<9B@*Kd9ON0ROm^h8q>%`t zqzoHz-5|~f*WID6T{aHA91t4!GayoW@3xD!?0pqj-s{%R*H#YQ;5Z4f2KX*b9Cfbh<^*9t9+R~u*92q0^YI! zSFNvOD@2j@)v!5_p=9gpBX{cI$0BU%CIqU!dDGv>trF zFS@~oentY>yQu`=pnotkUw=fjwWgXBP+T%K@R(uDiw+1V@f-5#Mgs*tM@kVf9d+aKY576^7vr&UOF7v zwO_LF* ztzoo~D$O8t#T(JNI%I>oVYrz@ZgGsGp)pf(;!MvcvoP+kE>Q(2zn>l|&H74%Gyv`I z34yMKcx2diM6?PTGlTL#NO~oz2T!3(Kd=abQlzO(q)|_ zDPbAgco9Y1!Ha0Msa(`AVmH9~rrc+#D)fXCk%L`^|^GT+Q+3pM}sru_9mp;!CJzm&uk1lHRP9 zMAFM#)>BgR!psJxN`OFf>r+pCbo*&%ezf{ogj7P8h7Q3NKr~sS?+!>Uti&H}(~NCC zQOI-F0t}=Ohw3=@#2|3=v%P$E+)YdPd5yC)?-v?GJ$3HOGo^8Es~izRmh6&KU%Kg% zZ%_qEkRQ2%fVQqi-q!sY9w}jjlTlRY>b7pgVTC=4blVkk=bGY1(5SDK z7pZ8iM4z~POGh7e$4O7!{>|%~4^af0A3|htp=TLpo?v-u!?2ZiZXuq~p*3aNh&3uf9`q z=HY0MjL3Iiy#;P+wpev;b~46Irp@YSE=WsEv|uqvi;Z_el$;#|~1*GabM9H2E<r*=x=3{ROhTGJXfXM`Ix zExbmpEtPWU1!IcA7txzD>M~e|r`5l1{QA20cCL~z_x=M!`kt*g&Kxn5>!z(6ARazkK|In_fJGa1{D0?g!i< zZ-I?+V;WBpin0uY0|qqlSlZWJi~{<&StJ-)TyA-Xp=d3YB0-PHs_~UryVp<4G2=uo zQ^mJ78y$WEnBcxzOs`1Ny2h}XCM=nH`Wh4TWHTvh%|PT$S!xSuoF5gxRxWWT8{fU3S|Kd4sKZ=%zu3!86V-xj;6GWe(TfT=3_Y{Fn?eJ=t4HHpRz;Ydw z(UP>_O2$)@O+|A94|?m-yN|o*oV!*Jx3e;kHL0XdLXYAF@-c8>vls_(m@)Hd)I%N$ zCM|cHXN%Va3mK7&#VcLZF}xrjf9{4)zq;X4RM&j{8uG-wiVb@$2hkd+0J6&h^^?jt z2`fa*UANF6#gNJ!8+Ynr@xWF&K{tau*09y&gaBg;22H_sqO7#2Nx~M%>vd`G8H~kV!`D7siIX!1Z0ycw2gCr9ZZjK;w$6}*;h3*Y@Tumi@7KwXO@Cw;{!xOiB zyZz|Z&i(^ybz=M)Is07D=N61H-kc-O@Ff+MnT6Hm<4B80--C~3@yZl|T^xHV%evS^ zoD^nktYpb{Bpe+$gC4m5hAZy8{gOk~HGk=>z=#R5L;Wn&j?af!i_-3N2imqIi!_a4 z37xS9tIc-X_^?u~!8F1xjWHgVIa7AC9}ufuo3A_eoTHCl)zdt=WtFzlAZPrzrON6} zei)J|NJu)&1Fq0*YlTEHp}`FDU%?4W=W~$Aqnfq`o#xF zWAP?apgo=W(eqDU`u-g!uO{e?t5=|71lgwBqs+z#By9@{7Ykjk3P;RVnH`_lJEE>iFOe{4gb+TQkpdm%5ZdN^sH{$BeStlj55}J&fu}&b<7WP)*Qf+h$!4G+(MzlEb)^*x&-WkAfA_^MUl~nY|xy7QI ztg&hpLr;daSABgB)b#xO#A80Y|CQ}*bgb7syh4VC2^5`p*Sr7cGCZO4-b(^7#cjFD;zqWtd2ZsQOt*@^tKop1}3R*qf zaYfi0U@1%uzX{c~Oer?R%oQgKt-9+cTUV~+>DScJ%l=Rh9%&t=b|+V$fcn0zNdB@SBt{M0M0lWO8-0O0t$9)9P6H(tKM zjZSyzI~fRTUAC%&2qM?NSqBpJLY$8@QeK>KFqLzyc>$$i=?)xI8_!Qz$l5X+S49JS zFHf+zxqjp{Gl}iESc<cwwQ0Nu(^krfi zNXp7ZnLI2IC%jAyF(qFD!0?|v-+g@fslP*~=<+wn=pV|EmyY}~n7S4z*lb#<3FtFC zZ$pYWxHh+eQ;HPJ`38~9=q+4?A-4oLp*Y!_sN>uku31m9$m*qA1{|j+-n`6HUAB|qzH)AdjJj)QJs&gfT}#B<7IlfNfXnD!%I~BrYSc}gI$1Y%1tmB5tB7Q zOEnUcCZpZ0S?prLC}N0{tW_~ifP;6$RhJ#O>!W|3OG7*Ue-DW;X%VUERLIf$=@BOr zF>>v_YAdP|;B&LQuQ=B%D;*>nE4v4vTcqez$WlI!%}oO7cjLi_ZaVM%=WmFiZH4Y) zqEO8Oxgh(wDl5}@7QRq5ngeV5P}b1*U`a#HxNlbn8Z1pyFp0$FOoN7)_DV=KsVQc! zmo4!GrQvrF;RSKrSsVA?wCiuH)W7-0RnEqZ-240EAv@nA5qW^3c{o#pVbrB^M-#0! zWQ-_1jZ#XLA&&+NZk{hl5rbk$TAUrE^xXp9B+WP>$NS!S55Io>t1qU|&R({Ti_X|# z$Po`hKqw1wT|I|uoY60GQbkS091`n8io!M}fahCI?11;{f>fzh1oOqRk1Nw0I!!R$ z7lfn*KOFdbcWgW9;=LfFxNhyr{VOV91Hrc8TolgfUT$H~km%|1$b_m4j$}sm7|I_L z$|m?d&Kg<`rmJt^1xeb>W>m-=GfpfJf`jqdi_g4o$3Ir1y7}DI?sp=;zWY^3))fP0 z5_QaEImJ<`l}8qH-A$9&pvLP;te9DZB#hRCJjM)i8VXoR$DVlODgSz5RYdpOR1Q6` zgUFZn+yc&1-i1$Tp`qt<~ilZ=-9~jhyHQB||2Q4|Q&NV)?@CRfy0+*~gd!!ZN}TD?71DBY|w3o9=H8~|^ygD>BI_T8`5(bM5+(=*Bqe^7sg z_Lzkzf3zFs-PES>`*Vrb#}0h32W~m}j>Jm&t$n^{+JiE)8%}%TKj)nIw@X*w{f%VB()(Ye_yX)9 zZF9&=%aXMUvCdAJd@-`fmhKCwj9Cd&ERqs)y+anRCTI+u%n&O8;vX!VcEN z>sSS8-oS-R;XS&fH=gE;^#PF9O4@=M9d1Bw;NfW5_sm`QpLN+Llrg<-t-;QsJAjA0 zd>s*v7P*_}@#Xq`UaaQA#S)!HRT>n<1$0bhmQ@!Z&?iiL+OE%D4(LfiU(dne(lfE< zC@Cj-$|YXV9wI<`=&pyKdi<1sZ~1=p2VCZ=04JZYXT;2)qwn^yVmgK$ z_JmAZ$%a4})T0`J029Yr$HBvQ>uGy7Uwi!VLbQ`l-T4Rf<24BNLM)I9x{{=+%^#II zdbS|qqzQ9sC|_7+X-?}{W$E{973Ba(1$UkH@MHT#%+Po*7fcbtm$_-_<3OxTT0Z_F)tTtjk#EU=$;HX5?4Qa*<4x(e~G; zu9(uU?P}DRP$bTnW6DZ8h&APDd7$d={`8oKKRNnxpz5z*JMVYjsy4VkoS~nbLVoRo zOt{R};`;`?ZeU87>W1^2CLBv+n~*n^Ror27Q%?yo=p}Q6+~}7$#JIA-#AYYGU;&>u z1Fo_6!{eUWw(q{}tASXj`z6|L82Mf0G)M$8=;>~?(w>bMzAl3t)JJDiZ7>IO)1sI( z7R`hnjS&nbA6`zZfYViU#>N}u98KOV;;1KS2vCmO{QUd(ZbYl~*RA=ctNT`s{1^)u zDLYc~+C7W5bqJ~S5xXU1h!q54x!UK~1(q<#am!T23B`jDd~J!0?^KRA@7jCT#=l*B z0~)l!lyCR}?PnZ${~f^CNPLwo+?>b7*@~qT5Rg+*GgJ{p#2&uelgYdIqizGCHG$W% z1C%MxyZhbMVR!h!(V^@3N8U}q2%5-f%N&u>fLgoII0}l7D*MF854o4c(7fGokJH-Z z+{CZh0>f%lE$`uReO(0LwttkLv5VOpIpz51U-2)3NK9bgW&6yGM5Knyf-Vg8YyZ;cj^x2cETz&xgR|iss5(Qu$$$2@|@Txj@jglNI#xa?CvhH zA+rp505RXS_o%avzGTblqTTaBPPJC54k5}C;Tf2|GhfX-@rkzit-el|6 zZv0`TmhxNVcM$+kp!_+bAtoDoe@{whbwxsSW>?bb)`|LB%CZeP`XVes3~weu_FSEgNxEQVxL86Ck? zGvOH(thx@rh4bfRdV$a-UN%`BpA_PkV{d)n!8@P0XEn*L!}92_gUG+)u#7E6UB_1T zq_e`Jm_%Y{s%3pKE2Inrp?12uNb&?3Vcp55PAeHNri2-lmh7UN<(iumcBDIO^>ZOV zUf^5eoT+2kRB$$F;hJ zKMM>K6M8f6nPmkEtDwP@In8b*f@|}sR^#}tE5AJYtY`kY4G0GyV{m^I?RF3OpBEsM z*)RoeDtd_mj-Qpv|% z^x;GIZhjMsHaOS-rVFFjR*EKvBTpSR1hpz6e?*Opbgh((#nE*_O*+FL^OqC39FDEP zrYQ5aYsRQc6*ECcoT}*fY%_>TTVP&aKlt_cSKs$|6eT_0d&`zX1^h=M;hQ12V24V? z#*)WXbq7{#yBRX2J@bjSf$2qk!ho`t3PyW*0gE7ZhVdHd!U$>Id+&T|;}zeXv1v60 z_u*DW1BW5M(VnKr!fKY_N+qtqF-u@b!k&3f)rk`lw@&3O4ESPhmRlLjH0`;4)~tG_ zI9N6Nx9+?9@%t`ZWmj;|0Qc=4`wAJOAc9w0z;br=3?AwrC&S4x!s@sQ*6d_DV<4|P z7bZDBT@{YSe1*}_wKB7oR3lix^5%K|fLDj(2~TsGNw6)Sxogw+7jL?1)m!Dut3xA; zginGJ35~Dd8%*$th1C&T3?)XYXc|@*tg&oUTbks-m4qPW$&=(NTf*1V=V2&4RJ9C4 zTYySy0??P00>rc9xHHbW?(VJEty+(>-bGi>2>JB^Fa=_gs8$xoLiUo}1+j3@GS#x; zXpYKhVtBpaBvkMwoS<5o7P#~{T#O1Gec{4KFW7tX{#8@=e{vJr6bD&5ECKxCE+)g% zjOU{$bME(s-DQ5XL~nWN&ax;&3Klpmca|I^032T@%Y5QV+Xm3wdk^lu|Jld(uBuM1 zW8{I`xw`}K@Z_Xez+>=~iAyAe?VG-Cr`*W?SNR%$5 z+kGCyzdQbU$E!D=e&7(rWdA8E4I4gk>(74&k_EH@ei~+CM#ia>s+h;}7+n&N?KhZZ zNf!e}!}u1CKGMji!4^b&2ai7Gjn}q)x(ZEcGr-L+_@Bqo4|OA-zjP79h{QT`hjY-j(c9r8Gj@REXA!J2DW?N`#@e(qj#cWq3M`mPbe`3zIpq0r(+?|B{_l~a z0wDgTK=`hq-AL88-Aq9+SM%o`)*LYn&TnAPR@EwqP`3matDKr?u%q#!B314S z=I|I&X_tf{yu|e^JW_O#ZSpiuFJ(%|5dXgZ?Z!7Yy?X2s=#es+24NYTzN(O&Aul){ zf)Kk_kz>7GjL{IorK+|FHONid#_~~~zy%Aw0-^y=ArR!43v2_0NfXsIoP{Wo@HyO_ z;9OlHL!B1<#fRVA`qtaep@IzS*Wz-ByPk5p(7pqtjNbwAQL!y>U~o&X!Pbyjo%Cf6 z@pMeJVgg_%#FC^1@*sp`W&3O%4cF&&C$ir8ye$`vCe$!40c-EyU*GoZi;upxbG0#! z4(~#*=s0rv&G6{pNCPsbF6gI`G^Ch-KFMPlwv0sL5)o4!W}nHHIC$czPQW%>3c`Lz z-3QsR*Us3v=Zk;5h!Sqrubn`zt2aDEJsn+wMAf;P9tJGDj}{oQ27V-xk;DDB4H_n+go2f=aQQ~d(?y8 zMSr31M!(dET=k#Fz-ule61X~!jipzwSEv zx_5s#_c*jp4OlnP3(+=u$fNQwXfZ4Xuzjc`d`~*|4wQQLB4f-%mE>Sqht21h12QdT zoHgB+xlmPOFRbI&KYr|z?O%R*$x*Ae?th_z4wC@+>iKIFS%IaJ7NAynB0WW`F6i54 z(a4l`Ni7bUXB1Lts>*bpVeDISEJz~sdrM-KfrGvC`lf4+`|9dX$!O=UeVL4MXX!}6 z04F`&Eh){|gVG46z#~|(&0FV7xI%$HBDXQD@}N_psm7U1M?g~4Kr&_P&NI)y=EW;l z9P{tLSg|7M$PqtLLXoB~<6clpteia0PUXtVxT9HA2;)kF23cAG@P7TX6Q2I>$5n$)tXpkN1E zeH)L)QuIy!x_i9&vB&@Z;iuo-@Duc-wtcWNQuiV^b`0>;Mh20LAw3yaonm1sMDnY< z{iJFzPR3k$YC@7t*+b=K&cS6(Jm$m@s;-<8HdDIj7GYbxu=|+nUb*+;5!!0)XXl~w z*g+m#gEX?VE%#MI6-qShYLx=UURNc%AZC1`SjnsL=A=TU{djz-SFiY*G8ABtqs zTwk0dgq+JsAN~El_ujinine-&B!SN8ACNzOwiVEMW6eNtz%x4>vzjE#u6|mjL2jwc ziFA{UuF{IImjxj}ECdYVOo%JM(fHu#vp;|F0zBGOeE-*IQ~!%3UxoYXud^goNh#y` z_Gr;qlyRyeDOBl%ro>KwMISZbMR3OzZ=e3&!&joIkzcI+G}JysJ7FNdEPx^v$=?~w zxyg}G86EN+4nKzM*BNpIyDthf2u#pk92vz19c-7Ao_=Ka7hB(k`mgnC+fD}a;=Map z;9(s3atNY4e-b0pq+J$)Jv1k}O?sV7CleN#92rT#f{k+X`!8?0?O`AKNXcY%!NEa71Dw_^rY?i9k%*AtNq=qS~Txm(c)Cn+CY5csPUy#W`hM7mfD!|`kD1rLme&DWm1@zk&PLjl9OH8-+K?8cG9xeis<-!dTO+Pr9NM|FcHu{2?0 z&BSbC(vaFPecuRFT+6d&s^;T@kVi=9O!u&qsv(ea^K31b2K?~GQQ?3{8Ab^*zC(X6&4#+eM z`=EB0!_5OEtPPd|h>otm?{tyR1-r9$LZ4mkG zhoG>js4FmSe!`9f6)d(~G0f8Po-W(KgL0fX&m*Ww1g3}zH=_{~U{k1dhB8$M`zQ6H znM%gSVY>F+xBu~rZhB@lUFV;>N{1YdTzVpexl+$y+Ruhlte8zGbFo5NtlUJ`>Qv?= zM=+f@jru~sXY-{OynL?d3fadKcQU5$;+Cv1gwc<_b<|lOpKnCRSF$LmHoSA#FVH>6 zLOdi1__y*IaHx&rjHX)2Hzs_oHi*;O8hU2;6Ql)RnNXfW1R?1>! zRM|*^)3)?tNweEF7#S@SLm{4$?BN+q#m47%T)S~M#O*-(U%N!P;oNVW=qRO;_o`ng zvqXiBQz(ROMlC5uqGQYgsZdx2v3OADvOAZ&ie4 zMBZAvA7BkkMHKH%ZJc7bJ)c*K1!mYwuc$i;TX^AE`eVVAQB!rABx0;f1q}G@Fa7s| z51#zKk2WOH+R(0Okey7BDALxlej?KvOM|Akd_L#$XL4oOG8Gq8QmPy?F^I{rv>X!v z!R%DmFPzH=O8OMay(cYOz1Y*JQgZ-P7rc<$&`KH|Rc`Dim7 zgyIK{1H4RAT~x!ww4Hzrt2vr7FDHnSl)g=0;o{v{}1M&8}FVSCS}$oQri1tvcHmy z7}^Yy#iFE2ja-!sPP4Y#k!59>41I6ZOr+y6IWbkOH}jf!)wJjgaj8*GgjdXLncOlH z@VFe2N(c}5_?-`YblSJ~e0XTuKfh0jc3X%XfB12V?1n0Xq?fa#_O^I1vV~RZ*n(VV zvRe#gLm-DZa@QH3KXUNg)81Wm^N8wi&~75g|NIytDWyQd?vspxf-onE1ejcLHp-yJ zpj>4_bdKj?e1;Pjs#!LF*hd=LL;i9K4>VPCBCSEX6D-7NyDs?R@-IF|T?f{!y*60Y zgn5wzX*wwH1uf%IhbkckLjD;$54Lgrv8g5XO?qjW+XwL2=G(8__qR8m?xCm0ccBYa z8;<$lc=V%k$ctNkugEIttrB-KVs?oPgOe4=QwvRTQ{G?TIgPTfml9?SIhmc9Tez|& zXC2PAX+6Yo;ifrJJCCJ9%(VNl>vx}V;CvU_vy&=I^qV;d5&{~m8+59r5(2hWX7o*5 z-z?L}E8WGEWr>e!vK=+WL>V+_nRLL*N=lo}W{OL&YWkTz8<(;Pk(_F7!8?_*d_Uw?7=d8+}o9l25w{2wHA7*GN&mL)&WFIIsTKWMblt*XXrv~w-I z+`vzclVsRjAPFwzWvYK-DQBc}k15z_W&;`LvgT^0k}TcK!jo_qrWu^?yI#8Nv#*}I zag`xC>|hlAA|28ZKq)Xe>9&pVDU!sdVs*FyL^HPbs-(J<3?=sLj!2ee=QVNyYA>~8 z=Vz~7`O*o8SOK!lx1iVO8glc^KUHVFG(2brlw!zyUd(hvIzi4b1ji+N#v#xt@b!LX zDrXavnk?a2= zSczxquV2Y9F_0e}1!tW=<^k0;N3@~AfR0!~rx?t2)xaq2OKaLzN}Q6D$m#)SWYJax zv~CF!rVN=aD3iGC$uIA@{)8L1!AP%PJAZaK)Ztva16?&tBx3i&lQ^#^fevGC#Lsn_ zjfQgJbz(wX8NOWdO==}aW@^iqGF5Ys^`KuY5?O2aCQAVEM4G|MFL>%X( z6qQe#r>Lt5n`F^V)Q0Q=Zm6e_utkN23y~fb@3O|E#v;5Awtw;EOW$8{^J)v6{p>3F zwI11;x&Yp1crby1oQ!JN=wl?FsHMbg)4^wDXj_nNa0R13{t%>8eNmd)&Skzq|iXO6e_r7hQWT8aKu_v*t%+2H#F8sRif1&8w}{=VNB^Wl1U^vgF_9v z!fGKTo(^91>aE+~{TzK)ty_~@S0@)2`B?_AZ{E}~m{g>o>0Gw9#Cm&To`d2xNqjB{ zb_7P2u$@UITXCDBrpH#z$-G$5h0VR=icVlb_J0huj+|JwJP2B|DUoPne;#n5Af`=k&Yt-HS1|IEgnhb-2g`uQ0B zMhkMnl}m^a0!a==kcbI;6(*@6RR+DKxT>b|5}X5-c!V%%VrDL8Ary50M<28AwF|dy z|3Qs*=`VM#=+O@3KRZ>BE+AH7Wh|>06WhRc+NVzS{!~%ynyI;UCcz_($a3uMP*F(zqGdOfr{#t<(YK zef6q1$2QTH9YUVPu;DRc(S)^d8io;53%Kn1pr%?<_ax@ZI1yaX+?aq{gB98-c36fR z@4e;A<99rAJ#=#Y+Pl4LR2!Iwy^o%d8D!62;Dz#sq->O8HME&5ec5CSG$T`;Vubwh zr*Ce#_QbO<`+D_p(aoz0gaLwlc{s>I(Znjt*w0MzWm-fz%_O@uA-Y18M!rLER z*}ne;XNKl7*>z+5Rf9%AQE?9m1neW`K+HmyYXQ0!RMCKm=&5M)QfVqKa zu5Xf6LY2%ivqNTQ;4zr}O!^}1WM`**DqdCL)76}^Mdrsrq;>Gy>-OLJ+Nn>k#^pHn zM`&wVB$0eUncehbW~e2YT8b3fvZfivq;#$!ks;w)`Qns`p}{jgOAH$HeaZkw$Epox zZ&ErWNt+Zrtw3`wWyQHDl|tIYen~DbBqvypT4i+=_zj{winAppW(v@Zs;OKh71gsV zbBdKh6;@cm8m3~78VJp($lc}BbafH%DmTA=&(mLRykK>D-~P<6&}EfIp88`BQlUCL z9^%}w*5Z_STQZ%Fs4ldZ%+#Q=Aj`W3RN&zL| z!mE(N7>ocm?s(=OPd<6kM=SHs%d_j%8yJ86GddJ??Pau6>tQW= zv0zq}lq=cURAXxlM9kTo+0TRg1GVP1*gNeJUy@hzNa;mz3c3^l97Ugpb8XjKdw=-h z+{+HJAI>-_g?@+u`PC~#2tiC3xWuIz5tV8d1v$g%K+aN^y+nq;Y$6u%6GAGgQWf=r zydW_tHi^SFkr|mEwvU4}Rv31Y2C*F7bYDRy2{A=iEtRcVg zij-N49Bg(K&d7|WQrq)ZgIVb5jD_r8xa1-Af=0iL+KP;rL$e|4o3#m4p_yM*gu8 zzI(Mr?Ay))m4@Vsr6xwi*`Yd%Y2idlwMR&mTfQM>DO&U5dyeTv~ZZaVx0f@Gxj@$1`*|kMRd#gwK2GPU1(sDEP9EAvp*u5)d_l!hy(HFLQwDIXcXKa$R=di~ld4n(zKcm5)@PetVF7XWh%7;z16*`}-|LkX`l zWo5YBSs&3xabVpn4ftHDn*1qtp+~}XkxX71@Kp>mm=(x;ld;w#Rm?*mot~BD%}iRG zR%o#6IhwpF0OImj~s5jD&ISES0*f7&Dqvd&G{`fLZs*hB|@A?_BVf6X9&>FxA1f^VqAtdT#gY>(Qo( z(^XZb5@B6=7|xpuSO@) z#FsUHGfSD9hA9h1}Ca=xNr}zRHJ!)9ttMN_9P zrR0o;&%&0sh8i$Jt&2PDPQAn$vLlo!B<)^5=Ay4Zx^(j)+-P{E7V_eIVrX)VjclAi zi6eMk)8cw0N+x16(WJ`14B6%$@6xNE3vG^K4(ZR#AzCKpHO#qAd<>ssI~eUA}U#xQ@9>$N(0Lx%MjJMVTZ!B zMW!tb1EiO6)i$ZbzIFK;fZ3l%&>AAbME zJ6?I@vDLEVzq`5!gUGhqfZr9sNLey6R;m`Urt^s-x}+~c)u{`^O%bEHIZMXHmx|Q| z-$V*?5+My3Tj^B-O1E$INaj(TDWD~HD-&*^fgOe2yh_K~YAod%1a6L-|9i^iw|;vF zetck`1)V=Ka@pgs5r`_04-?U+@XbIrIP8XlO1WE?Ng`0$fu{+w%#^*>ammNq4{Sc> zk#mo|aFzT^oOuP>!jVW-2SpcB_EcGr4d}Uw27xznDxB-qG=V1Fgrm{16dAlaeZHKA z(isd*R-Jp{(ej2NroSuGz`^{$^?NS3`TP^n$YcH5feVD{4gWE()ID>^(f`?}%-UjZ zP~kL>W}-NDU}YLg145+S;AYttiNE6OZLDg9sTNUcN>5msQ!*wQ!YVBFo^;MG zfbzeplF-_%6o(sbfi1_p_~AttGSC&`E3P=6TI8^I;7vluSC=$V&61;2-8zOf5FKY& z-E6H}tGW{-2$%9BV%xbOxaE2uA4YTgzdv~Es5e7sJEwJ5m&pRD{r+-Q_Q<8b8$`?q zUNqvVi)@dVV5!(h5mF45N8Eb$3HM!n%ag!*`1P9NSKq5PIDW-CBxZdC63S441XSZ7 zdbJ0qkYc03TE4{SVA*1=Ut)5K)3yMsixhmmkcY|ho17ft(%t0PiV2o=q7V;719CGA z2*8;i9edOj@89uTv}eng|9=@voFSynS|wa=EZ>Z^dpe$ZZgykp-khK+lqF>%TCR~N z4e`m)Qovh69R;I`TN#A#pN{I`=2k%8Qv z6|p6ZY&hSkhP!)WQ(6t8io>alfskL#8iUX~Y_Z3hjh1XlQ0au8aE~MNR`snqF{`v- zy6mz$=Bs;_*;vTrc32l;WtcUTXbkdxDQ1KdcJn_kI{5D9GY)O+AH8-zy7H<>g#vy+o+v4 z6A+Ff6D&8XdBJF6m{!L0Qpy}pC8erRJdETalH7XNgYVq-w?|fz4T(?hM)y9DY~% zR)^DXF1`c(hQkp2FKYlO3iMQ_)R@cDeI06&HcYE~8YNiTr*QKwD;S`5FqAC4n6^9I zO0V6a(E4U{8XMPSK@}fO?hUX*)+IG)s*RJDUIQwdV4dx_`_8v-J^i}`x(Mz)bw#tK zBWpn;Xf|1G;}&N;t}BD=$%Hw%m5jT}ML6$m z32>4nFU^J*02$=B!vDSoDK@$br}7fC>k7P9f9KrhB^0 zncBfrI!gw9&p!qas2+!C6s1G$Ogv}DwI%bQB2^d9()^aMB2(Zjd1431pRZr`;{G#k zdgu^1^6}o4dggDCD;#S_I9{ItO$LDdmPz|YAJ75)@|32Fh6p)Kh#m$>X` zqb6jV2(?(I9_E0JB_u9s%2+(egBk`{P%l0H-xHqv9@R@*xAwC?t?ujzlBfeyj#*TT zi-R<;rf>$5@o`ba!ULu#F?jswX^mxTq0!(xvelW!LZCj@p&Y1!U(XPZ$5qJ`p1vG8GTx>Tl>kUee||;BUf(&`hm7t5E5(Z zX0OkSchwm(F{;2Yn;uG&i!FA7Zm8;`_^L8T1?ptu18_JR&%28W#)(%V#%?t{QyM@n z`qMKnzw3-^Z-LUo^=p;4|D@g!*gi!k^Y_T#j@|+*y~^}f43<839H7+uSubBvAqp71 z$P%ehM4d1$Q%O@=W)U@NaX=Ov$P%}2yXNdSzx`}=we9_SCD7JDPKm)a!N9h76V@=` zV?;EFO6xV@`LRrml(yAUCaI#Ea~N2)QFs(QdnTTO!*hllaXofvxCAy~xlr3^le0mRJU zZL1x|054Q#EEfMCOYh-uS6O8b>o`%2yv{c|I%9eD_TGE%z4v}@@4feX4K4I027(}6 ziWDKVgqDPwP$Ym#=%KeDhynoueEZz@_XphPo~Q3;?X}kSGiQRDkcl@DlpHzBlPDQQ z41XQ!q+nwqq;G2{hyp*!A%Km0=!9)AY`f&z=T={FMtoJ5e2!ds`A1-6?`Lzw_&`HH zXj_X(g`^q{8oW`vPdJ{1BAm?TbC;rE(nKoH6a_5{&*_uwG+(a+iKx5J z{@dx#f5}Ey#oFSg1D$gSHPE#JsSj)*p2{e+o7)r>9y{J$dA%w_frfe!R;|+vPqB4*s z!>U%hz_OdbB6Q1TR~|m={R>~)pwg3NW;T!Uu%Z(L zU*fgL$^r;kI%bNs${rKZr1Qf^FTC&8H&BC*&1*kB_LoqLJiAABRceT+s1sMwwMb#L zkb?T{b$2{-+Ws9IX`xetD=&v%BIjno4OqJ&bY})X7{DP=tss;mt z0s%Jzc9Pt1)S&(_MHTY7vlN@~l>283a_r3Gh$Jab~$BGGY7wdR*{n(KE z(!lMc_lKB;NL5E>`0#>j#m@VDu80lgS~MMF5vz?VN|UfnRn>EF+8k_zfzMp|`{@#a9efY!cGibACUGgh*aKDcvegpw4zK;0D78$)ZVm%X`v*EQGwGfVW%nx)EMwU&=cSk0KK+M8-%e39x($-6x^sVwRp&B6+jK0=vMa&V^5?219 zN8Ww!xcfGAcaL37L`O7*?EVDYRai+!#FKLe%%xn3WVMB-F~-nqY36KRncT$algn`d z)rPP0nf`E$Ool`LlyB~S?ZG3joVQy4kKTb=dgcV^#l%96zYOTjEJsnuYnGWyE1xCr zCYCm#hB>N_%8QmDt}oKn#_x^`pSv7dz@i)N)`J$CX zg^Dmff;^EZ-n9k&P<}YZsEAd)vR8|n6Zj+>a95fUzk?$;^Riymltf@9lL30rMvPaC z78=m*cYgNBm-pVi`^DAryy}@_(OwIY%MblkmA&EHAp;X>u%^x?og?O(W}|`MJQ!MX zm06iw;xHX7>Oh|!xZCbXqNwT_LJJ31&tZ5y%(Om3AoCUJB#x=T%W$UbNFmJ_`XL@w zzO2Y`A)|2VtJf?>4X|^?vI&F?z11L&=vg&;TCi`Kt19NAWgp( z6mb#jU`DhKoF-1vkKwcIA}XOhrNu_eXcCZ}$Ikxj=--a+{62bK?UiWN>z@`^=amdW zz6LI^h^7?TW67RL!;#WV&6ql_q_F#BXLB*LRdnX0n>XkWMwpnDZHtaIjYyTiw_3w6 zZ`ba+^0iwZy=dj!iFxQf#rp1903BjJ^6^<9K29YCG{V?h9=gYQb3BV+tWLj^txFYH zbHQl9>XJOZnUH8qnZg5VTU~1uCvs&#K2pm4hWfzR`Hs12Y=UXp-_whSVSuGq% zScdk>gFL+NuaHygfGN9#s5O}BL$;`pF_uF?UQIC&VMl|gE6MLneR&^4ZXE@>Hl4N; zYy%hZk?VK-;l39)tlb}3tQ;P`gAg`<0T(3OstlB5NiYcRmqtWE4$GE0n2E%w?eDX- z1p7FV&v*swYCAzK*XLQA9O*O{ilEj9A9=%pOST?5{*#S|*!J>@NdI%>n(Ki5q;W53 z@)@0{&$>E#OAFs^O<9zv*Cli$$a+@3X%E>M^rQz95)UW3S*({=rl!^ay}EGqnrcE* zIEM)A^QV6Q+x=&6us_)co=~m3G7fYcrpU`b20WcP;;Sd2RyIVJbjn(yt85t9)2w(U zod#ysEE{YLaYlRGJ(rP9;42P`<>0nmd+xt+Ln(P@6ntJEy~qd_R|quubA&563nZm( zjoh!WAX2;;8?|KdZ8hw%{usE*5_XQ-LM9~($pIB`adY9gL#jglt zv-xE*#6~+W{%rS^ukZQ|x+pHPuavfCBoBU#SwcIA;Ut$z-&8588k~Mn2Jcpk(!>&; zRG=;hSd9>4UR_RrA6&XUdQ$IUWf! zA`$qp+KIV8gJq^1*-9-{t}nxOndK#$%GD5TCAumRZyBhCL0P2KCj@Y9zW&A=r(be) z8T~}b@hiNRhMajm__Y1nFHwm#MzOZ4%El&SJTFqGW5!@*CQdXB+KC)uwHI$Z^tU%Z z0LXFk+LNCO73&f9suE!j`RD(A187&BtPq89Dl?xc7pZMAj8!ceQ76k>umd>;Qk25+ z8@%ANG*lEhG);ssP|JAf=mK`NwL_-+umW=n-Q>+FBswU<){xf#Ktm zYDB6lFw(@e<(_U{r@D*1v5N~-ywP~e^LN~H-u~NPM9f_{LN=u_D=*5V@gskUCj>0U@j>S}c|%@^S#4()m9z1L2wgA>Tx;6qGWrqb_(*mK5YO34OQRf94x z*ZY#J5msO`l&W+{<6ZW`ZI7Mz{QoQZ{af~9=+H_K!`GlC5ni5qrF7nd-eVHz@Iz89A4K=5ccaT|YLLB?m0QQZ|HA5Rbm|+^7U$&oTL7^ zdi}&Fn&=MGA$NZP@?{;pY6`iGS|huXX{K9+DACr;P;311($nC2^1Y}nt~at2gcx{w zR|*AEr;Qo2Y0Zi%goNfHPS4thyv%`94}P@ui46<5t0@t5xMj!{&)onuo9!hdUtQ~2 za3D_AcxriftV3wJ^JF~N>g*$0tkE6dlm~7oVG7KRSWAzv!2`3|JY^8?qBVO)r!Osio z!6Q{KY3$*${61ins%+H(37oV^p$x505SC3*jlrI*DJ3Sj8P4DL)XO{eqNEt`gjYVK zTECLSQLjoljgSxHAd;aE1XH@aG#&T3VL@|-x6h1>u_{7I0_`PfqB_K2-khS+fbMMu z==7Wme|Ot!`z|M-TRZg2?aK8x`9DEBtVGD>--9WPK4Fokv0ep3?r6~EzG_Y#o|SaE z&e$azQtM&TQX?;?xWTx3=x-ztpSB0%_wl_~ynVrkE60k5clLEE{Tw&1C8My+ zId305eEhBwI*6zK{eRG=i^$o9D}ZX=R%@4eDK=*$4Hyy2+|CaT>-;V*LZ+e&VG0v| zeDBj&Jo?^wD{A4sBR^8DfA8rPL8pgYLHH2x@^YdRQiT_bP(-ee;Y4XnZ=oy?V=gIF z0xgN`Y|_#;0bphO6W^S@=iQ_0=r>$XNu%FDKz7PG;G7k8dz?BNt?lSb<kYQ)63{(Ll@u?fn!v?H6yVvOi*3D14TmHo^ctI$fr18GE_?jb?H|2*+as&Bc>;1F zdbFyMyUqh83lFy_L>lUd$}}UWXs{E7WW8_3uq-E-ZgMdf^rm_v%@HVcR1?F1>>##i z14u@FdGLe3zx>FC7vle3`fs$o0rK8+@W5d<`hjAyZXatbMUK8OvUAc}FCSa<4INXw zpG+@K=Rr@PFc=w)(HT6J_nq+eYdbF93FPg~YsX5TQLb|S@5}5bpxeQae z#>6$bZHqyoTndaF^UzkY&>QBe9;1&l`npNX&xcIc&QIQX^VaJhxoOo&v06*F-S*iIC^tv-9Ssw?23R`Zn6McFtoi zbX1Q)wryDhA&Wo-n~O#94J8sirb`)i(jL34g7p<`VAri>FjWGZ8z{q?ddq1Z;|N|G z)8&8#dG}jiJoNmnB(!tbX91!UFjx1z1o_4PfV(y{dJ~@83cP|G$vCWKgV$ zXM*|0R%hgS#xBuVEQTV@pAgjbstQQ=%}tk}P@c9u&Sg5JO9`8yL^BPH@N>Sr`uU>= z?|gdI?F%kE9c{0RC~Xkos*2HyzAQsTNfux14Ld?T39U(2sf$*17hdyo1s)SN+J;m* zJTjAbe`?wjCZjs4fW%0et9efzt0en#1&T*MUF5|fI0^P`x$}a(Cx+2K`P2SYklsN~ z0Ifn6>S)p}`pLNFk=EQQBb}hvOqWw3*!m)R{mgBjdTI4?6qfhS`#yj4!GED%bDP)J zzSmZ-zyF(+Glv7|=Bhxi5;St%L?p`NsY`=gW@=>SL%}Ad(O&Q)I$PD$G!ig#tQlJ^ zgN+Ce3bw)%{;oY&y?Ee+RREgSt>_n0F}>lM7u)Ac=>^-(R_SME=)LI?C0h;a5j z;OxfSSr4Um`uu9qG=axBu7TexxDGAJEAkJuNCr`DzhcvOM5>2 z;-zzs{=JGexD)7;&>#W1>&HKUT(Mj(mfJaYBr9-JVMi?>qkJ57FU#XIECW{(|#<^iy-lWB0%|Qd#5()rc*OuW*RfKqZ)hfa2ztUVi(y_di*QAGrITMtkW)^pBMRo|7tAR6dR} z%Z0K`X*6uem<+$3T|i^$mvSzzFC6O>rYc+Ur4ym#W^ zl@xl@+As2-pv}sVSKzqJx|F5_KWiKSpI+lcYJ)5k0WpU4CH!*SFd4x|c(y1fr>sd| zTCaJ7xQ@i6;s^1h$pne=%VAeFqP2QccySSN2N;zQT;^vSK78WKhu%`6!+yorD^4?hOAnwE$N9` z$3W9^(}{*z&mI-!U2q!ic>ay|wmtL5)#-BeX{)-SWaOW`^Ho{(IM@qfM!ar895OAm zm2wpjjVgzmDwPtfMQcj3k?GZlS~FBg)J%iZDYj3u@i^5}Ht-u_IUa(XomX9c(=At? zwgHb)e{}&mP#R?CUi6q92p4Rdx;XT;2{Nh7kijujHf=~}GI%L*sovV|c|%xdO|0l~ z7bDHsKOeyDa`Tff+Hiu%?0H-3B{Y@{}P)q%ccz5Em7R(;i1h_I^-g)b@2Y0V>$9I_?N53?I zy!0k`l6mv$P|MDTd79PZu{_6##rt277SVaRM+6u8?#A6-7qT`nflBXF%~6) zNpWBj>&6aXZ17fN>NUN!wmjSkzoQP zZq9{!o!*c>6E6)qr`09UEu=T%4-mGgB->w!1A>%jk)6i+J2E) z0s8ZSyDq==w|_f*MUi>n+&`nkP(vzL1VHMpvBm~PZ(3!sEF5mHhBhciHiLCo)(~9Af+}ZR zMzC0*vKQU8NQQF+t!~`q)f%kjfNpXIE0vM>?iEe*DH=3-S5+X=svW#?{PV^}u zIkDxGxAx!j%FTb-u>KmiZbAPcj%ZHkL$InZrG)dWVyPTt%MphJSW8R_fz1+TRdiLF zK&zzL;MNJt^n&LfzWMH_ZihW^?Aq3~k!qdsX=6jH96?g|g1YIKRT_8^6Z{wpKfx13 ztX?EMS4pZPvc<%P={&OSu8W`f^HabYJa+B%-R~&ZzxSK?%7udtA45aF%eoIxVVb5x zkTUS;AYs<_BnA`BEmu7_{4jJ=kC{u?fZ8fWC-$sd zkspmTJ%T)EN!rG$s4c06(CwVRe}2=cw>+^y9Js;MxEOe=CyAIDov}RAmsZ(p=!`GV_UU`#jJ!l)3!ujWtuvP z(`Ju}b&!Ry*FXCDwHpq7dclTcO5*GPLPu7P{O*o4*al9`x}s@dv1RlurQ2rm^cgWI z36&<}EPZ7uJf&dlE}=HGBod=id!gyYrt+>7oXQ6-JNv+=Cw{Ryj=qy#nGZl&uRnos zUoFcou=EVoOj6>f9JY!P#4|KPAXoJgc&eP4n6uoZHWoh~vhhi;lL)AWPp{EoJYye; z;Y?zHeR|moyI=X|b6>6e&(t@p5(3{xylC|(c8cnt`=|mAHJ|~rgAc{ zOIX8V+azwe+}o2_VZHx^3_2XI_2!id)5ekBXi_n~^6vkPPCp4E9ud2GyC6 z8BR8Bf(0^8s2vd<%GA)VjL<1$U)V7TG2MQlFwChFWcVnEzYd&w>p9;%zWs#N-hXcM zX4N|9yQ^2vcaZPzgp*CJTIeu@Y!C12O^P}#1;h5G=^3ZO9gmx{9m-VT(Xyrjrmd~z z5fokJDDBC2qMSjXo#_}XG7blhtX-!+d(V?EY%q`y4_1x?airC$gYW{&XV!3(R@rS? zCX~4%k0H_$qBVs?Tfzpp*r<30+tVSJD_{f7V}z7% zj%2KMy)a`ruu5g5A~AR@b$oTa<*nPd+`r?d6V6$U%faUXM1Sw28_>~?As=s#sk43~ zGU6!QrnbIFphw7V1wY8)%u;nWkuA*-YT*WBs#Xc*xyGPq^r(%kyx%osuziDkyF_P* z^7SxVxIju=(x|PI3Z#lwQtgNL^|j~TcEzoyU2Z{LEUuxa)tqm^Kl%~cSw92sabnEj z0)v@NYyBrzncgr`JNYpHY~wy`w3Td#u~@EY8RhYlj0&|C%o7BQDgg?| zIKny=U*yj-)p16PHD{}IZd$1wk&@tyyX51;2R`|Ks#WicD{nt8lKm+hJhEF=)(mW_2VPinP1PVHrO_@!lJ|)>Sh)`>f~XXT}R1L(rOmVN)uOW zC1lM~oK&1wkup0CBnG-?mUkC$S~In%wD`C>OvqcR=0g*5KSRw$Qt+>bez))0Z~nOV zp4DA7|L)4Y911&y{s^x%5?MVIJ2hUF#V>IfSyW~TF;1|FC}D&&tfY3Q+fj_gF^|GP zh$pocR8!~6k0b_y6;R|;o_+tut9HJ$0r<10*P!dDf_!iGU09bCaX4*=QUx8KScB~w z7m}DNz^HJc}rYpXQn5m2snW-2Y~aIkIvry`QfkkYyg)Jy|(hBR3X>j3+Rj9 z=8)iBEJ4mutT5VnO_kVXk8z_&P(o+20|}jO5y2DO%tf}CjE!tdOV zyXx;0XbsB9-H00`0w@z0)x(=;`-`VMa{H?fRnVrc`2Ek&rea9vn`42qUzBla&Y-N~ z>iFok1k%iz^KAr|lg}(ujLMScHsRF#WY_6$T=yg@0^GcI@8=8k`uRUuU2Go2K$`&g zYn}KzeN%=qsm%OAQ?KjF1^Y~5Oll)>wemuu&MVBT${JG{?K(MxYFDb931zY(w0!vD zv+sE6tPdSNjFAY4KI_q>M|UVNPP5Vq%XF2EgF|I=duZH!4jPg7c}0R@au8V z{+8W)j{EAf6ISBGSFZUP+Ws-f(-%Mm9V(t8#O8R3Fjhg6v7s0#uEt~{!EsO@8@Y`6 zyb7tBm;ygx1ncL-XHI?YtnE*%zB2myN=lVN*1iRXNqCV%)^tVYm@(1GN+DDkiz^2^ zTz%W5au$V2HI^HPyX?@816OZ3{{+~WpuW=()a&5&icV}FIrxJw;c-+_<_e>we=tp` z8Db7AO0}5TbYWFmaLfswX~HGtG#w*kWUhp3VKu*uary`XaS7w|S(kQr`#*Tz(UZ4b z{Oa!2q%Y5TP__QdiN8VH{}v)?1DbB^k~Qg!&Al}Et^A2EHwTMai^#)KOq__rB;(aW zE_FItYen-Cy@RT9J4%F+krIw-hlC=(hL2D+iMX9N-t(8;I}ZK(=y~Y1w`uJd)ykSO zhy3R5pF-k7nO!im{Mdq<(`xJ4Wp7c55fb%GQcAaH@zO$pDX#Y7e13}|jH*N>|2Q5J zNU{Zw8>{Mti=)YK5fcPPz?6UE!c(uh<}drP=wFndFrmFLBQAy!{9Z;Tp3dS8dr1zW z18*wGJ4$t&%9m%x}=+Q zZdpLZ1ayO%u<%tuS-#cjTU7#cgFnQ3hL#Y)E}k}1ajQXVQ%WP)sMG1CF+_8`ybIUK zdAlEf_Ya@1=nIcGSLMHciR^${klBc3m?j!Zq^O-Bu(-*+0aM6T2Jr@!t?uHdrehD^ zGWI3-e5tRCbqun_KFd(>j)x|rPZteKyAuyRDXmtC|C&$eOC$|C^a{hk=Ms29Z#yBlx687VobZ# z7)G?RCn%H}J7TtV7-B2f26d69?ns3QIT)qeXm&aUJM9wk5qcx&ZUar>=2s8x`{uN* z53d$=;2$g1TN?RY{2ibv%u=93lelFgX0}$W5f(KkQ=?GFSWB;>Vrcv7?WD`rX}Qbx zFeB7glghR(h7>om5(Jx!JSz;~sz31e=iYtowkMugwSMJIMYKC(g#6%DAU0A)>C?Hs zpX1{tDVtyIX*;-9@Z>WGE%khcIA0hRwsw&~5qoVG3>OM|nG6CZC^_srKpwZ;zyIKe zXFtwEx5@2Ck42lcBC#3^UP)LcNhY^bot3(NJS19-qG{crQns7Yu6cprlKzy|BA*OY zY}F`gE?1*oeBEgU9$`))!k7s(P}Q`g!8p^djwgsF(AvMV{fiHFJ^a*)Xny4772#Ql zynEFtKqMSY+5th$>CP>({UJ?2?tr5mzCX~i8Z@R2+vWIJEcTK&#@C2LR>_+8wpA@Q zVV+1$>X%?&t*$t6Mj8_ga3JPK5HM?r9<~ZDI_@r~NX+)Sf7r@g`JoV@M z51+Bhn0@%Kx?nNEwA5BFE&QvSZkTXAuK9k1y?D z<>5mQ{r<+kUHtcV7wDeb^R-dE-uv>$0J5S!o^|B;1CUphkZ6b=E00MEJ*w8!6jDfJ zeuu;*6Kn9`O?oUgnvw79CYhBn36v@H#*4)6X8>dh_o8L`UJ1yH~kO zE26lM3{j@66A{>wVoaY{Lh{9(5!Wv3LuIK}IX zQu_^vNed9DUb-PGw(B++2Awe1@(W`Nl zXh_V-gbK%?7Vw1a-eJu@B5fE^y>rEZ-S?l5nkK@POFf`kAD{6RdMF1F=AXg6&uoBt zQ{(u^Go*5`gpqwbb|c|ZS{m*I#X>n=!3t>LSSy5Qe#|nf8)Dgk3jPZCEY^*HD0emQlM1*=;s!md2R}Q+=nnlo=DveRDP&ZG5A`XYNmkL) zGz^>}#@lD-AS!zKnm@eu!M*RDyK1X(G>wKudgMPp2*Df4S%*r_cY5i!y-<1PQ(y6f~)@7xFZicM<^-H*|>#K`@70Rm&N z4VXZiic8hWY9}!*>jGyvA@UY8a!jUY(FAaQL%M@!sDU<@gpqvbo|AVz`qteWdbUlk zuP)_pA%O=Wg2tESB(4rPm#D zMEP#sL_N=#y&_>nTpiQf&5WLybh>yWQ1i3O#vnXbZ+`E#+fI4rYA|*B-rB9#Csdqo z!?!Dt|N0ZyI+=>(inJb`dnB?bHr1o}1K4cIjCCpX&ZfXl&(Za)i9&9GQV8bk$jtzM zH8G8+$V>8J`#@bO5g0+xI#1wF&Nz6^gYWJ+X+tXT^S}yxpd-sCJ;0RpVN}6}NUtmk zu-+!p7v`Ey4baebGCRf@zTZGRnkB-cv0khdh(dBoV^1_Q+`195`)o?BYu1ScBprCw-gMokXMFbP zj{iodOo&^FaJ)$3fFGjn)`(S@M)3xvZ_zi1dr?A^rtI4!t*$NIXapgi?P&U16y1PA^3Pw-}kE@fHmXfT=*o#^;mc>GEn<;|T<R>8`1)f%9cAEi}SY`th zP{|HkDI!1(w_SAPt}9*uTF9|$2d}?IwZ3EQ*igxdklg?G4^=jrvxdhIy))wivYw{G zFXpNuebA?{U4sM%*Ja5T_*{!d56KM^Qwse0G}yehCr}0(T8q_NS<*|SnvoRc_c|qe zVd^s5ryK=K;gylnkZM2Y`9GfX)qxwk=m+2Pt0U+}3n6byS+H0MUSku94w=bfqwQjp zLs9j3=F~b{4NkFQUXBWdBJ%t!K7chhxfUXhl2k$s=q+1M z{^-^}?c9Qz5N%rf0p(NlKh($%J_J<=!;)%^+&X^38ZWTe&N*gKp;;C>qunpA=L?RG zfoPHYI&@-^&n?yAzP#(xw@&-}tu(Zu9c%<0-2t+=LpvcP4L)u2+6QHwYW*qZ z%KNH~v|ih)%6izvVOwKQi*u7PEn?QIskRv>g&XTU-e!nE9dGEG_{Xofk)oZ@9x zlQN(Ne|Y@oAN~9MeQW6Ogm^i$WiE1RzO-XFm1Vkqr-Xa&={WM?)T{ zLY9b@jBxl0QL7TR%Q(})2}e~~ugu^mw>z|{TB8j$s3SZh8{uNiW+K#;YSpkUa$(W+ zNi)NCk1eCo!(o!0$jLKv&d%KAlq94ql}FZY3XNrJt*C4RdYi?-2HST1$M^r~xeYGz z;;U8S8$sTF30|=rkPW#pU^JBEM={e#t59l_TU^-dZn znELvX7oO_`b%A{{_Ed8Xj1=12dG4W0A3gmz9Xe}IZChb8-$zb63ILltO(I6YW0+E$ zViRT`BSu?fGV_eGm#5&<-lnxu;CMa5a+4v|@#Zejt9FwS@6ga*lsS;{zh~E3C%^O9 zzkoyoP75*|x>+#D{I@>>@y5t29*D8=td<=xN8K7@uvThxgu{+jqqdVz8 z={@y2tGvQA{sW=jvJOe|AUWJ>XBc(;vYb~0EmB_`>}7h59I?k~Tm9Hc%-Sv_2#R<# z#T^Qo{3cSVtNdbqTH345y)s>E(WG_qnYdGJU>CE%rMmXnSKq$lt~2jj?W1qUn&@f| zAb*a4D=3$jEM!bN5!+Fgs;O$Fc4W+HX;YSJ$)?!hbO|Uqlq^kdDaHcAt^gxzSphS8 zcHg!a?s@2jRdc)Unxez?17!2N{|Rbul}O|#EHHMwt|wfaahBDzxyt?F=Pf1a4e zEsW*>vF09dqLm27o8wZoHK%&MIUrXOGv1*+pKC+dcIc98_n-gi z-VIZMW3oR|te;O?B{LexZw@=*u^ulF?Ht~m*i`e>Wg^pFo|k);e8J*QvgTx0vlx!6 z63nTAqQ-Q%dHOV&9X9a8MP-0V%shC^T;sNtm=K#ExqI8ey{}x4nuu&(GZrpYt(Rk~ zT6Q+1)_??@+z;huvih7`#!1(jk+vo7S@wu(oHs4iH%8nD#wNBxVsjj>`wR6{F3yrG zd-Y~6CNOFM3b^gLPwzPIvD@!l4f#iZ{j(H?yo0>m_#Z&5DWSAB#D;=!Arr|P5q9PY zp*O0maS93HG#hb;hqHuese{M!I43kC)ELJ#s8#gyY6X~^`(F6?!hHO(Dd znMxz;ltvu}m0?I0=RF43&ct%H5MRFe%I;78^z}ydsD~an9$oh~gniSes_aiFjRnqD zHyf;sV%?q3MkkU00)86%KKS_XorllgFtof}{vYU*#fcP7hZ$6P)g0|;NW{-!>qe=%(bY&1-DXYALw3npGQn~l z1$_IIYp=X}@17r_L%-%xqeCA-1h)$yu~qcri5;DNB4jy4L~TIVA9J-=anBfEK( z3y~sUC*f6M(!1F>N}(E2HB>Aj)B&0XiP&-8NOFWRQfWI27CLqzBcu$JRr07HB4ps@ z=K0V%PEx4>Pr<8l(ucM|i#)#Uq4TeQ_`2JkTdDXsU+hI^_t!}0Du@om;;5wtW(Hm1 z+*0sJ1$8SK9m{Z zsQFm8UF%U0&w^2@)JTHtv?7=yeL>W%q9*xx#;EAR!s5Q-wzGbJ-W6?h9{>4+l~z@U zJjwtVV5A}m%q0^Si(~Z)%sPuyKt%Gua-p1H+BgM4!?c+CJ&sV1S=M(syMt%5;RA~ ztwOWV5<-N0`A3&taO&|;VrSFZ#b2zHF>6Tnq;;qTu659*4ns55tQz7KFP%~#2gf)j zKg?bsub*729ZX9KUKzxu9%v`00@)j3YtdKYC4}zN-Ybh)k+T-@l%|q zzBCy1#aS}UK*(y`9Km&6GDM?tQ<5o6vgc;m;if%u!v5zTy>#E>t1b7vSRGyMX5@vp z_ko&UxyWNOa*a*nWDRv}d#U3{_Z2zv6q8H1VloSXoB$RvlEkqQ6&J`AAD#E&8GpX? z)fC#d2Zt-zg@!!eqh@9 zT1lq$%BF--9#soP_go#FS^3y>v8p9P7%sPP6Ix4vAvHCbWtGMpB3S4%=)+4_zP|Uv zKm2~x2Yviibe*purMVWMjR<8pz==n4ozn#d|0FYC9f*>|I+Lz~b++r|CAkk4a3T?V z*fF&`O&6lgmb-mdMpN+kBtok#XmoktG~WK))?2pkza5GIfPc@4D|4JIa{aI1-7laR zvx2rK;Fs$eOuT>^=9wdm>|*RRwd^{j91|Ub2?`*Pg4tpYCB3{{;|K%mVC&XDUUBoy z*KS0S^KY%>$ymfodP$j0*oAcrktoE(zVhLW3Wa-E@<{`wpfG5Ml*L?HV zt@jksu6+C1yV0>SA-~)OG+2gYkY@)LA`tTV0q$-fX+%m0=jmE%i95^?6P-35#A$7} zf2=9OF}dU8M~*-ByxqTBjrwg*t+;e-uPygY51nv6l^A*ObMqWDUhd{EB2Zlmj%(Gw{n2^!oGNSweG8imK$$%%r zvUVMUnQ~DswA)3q2~!N#g3_uOuEPCW{&n-?C$6C3)JD1cI`aDM;OfLOhT0*ZD8XHo z=IO+IT^H6bNUc;rMYZU;8ka6VG>=$>;wYSUk{}4Xc>Ajlzq0q#je2D}T9=_6J_fnr z@q>`N)N{s@azE^K64)k(pTlh;>Z&cTR4oThkGKF@vPqpCu*|ScV|p3#&=`uIzp{`m zk}%i*_~gd7{&mxbt0{Wk>%gj~6Z0~?P-mX)$Tg13l`o6^b|0k14NYZ<-b}g|UH7Nk+u37;`R<7#E(Bo{R74S=Jz(fW^x@&bc5}7Y&7ZqSzkqY29i9 zXJMf$IssAI>kkNRD!E$;B&Z|rKJ)TZPhPTGq@`P==)d8SDiVQR#d6FOLvMf|%gv$C ziZ-pI2LpyQyIE&y3ouW5Vp-sV56}-xZbc@6%Jt8$6xy3{pTLJ zd}GJ{e_L1Lv^9kD@GHu!Z_Z(7wM=K*LMp3+LWWChqAtbkbWO)LbihO0QeZ_|8LOMlqlju#R4Q|5>lReeOCs5!ZdV za;DpaykYw**z@7y@~TEfrO-Y0mRqOi%(XpQj4jen1k!1AZnRrm$~mJob!G81P-ES@ zbIZZ^9$=&Gj3h_V2;n=(PZY2?xOuFp(VLHJUBj@=Ah4V)+R}_An(z#h(G(_hHA8D) z!ee=z?u;!gST?Lci#%}fpYNRZ(3u-&%iH@_z8F~Kq;G#8waWt6QXR0%y#j!tCSWck zTZX+ORjkougr^-GC90Gsd+Mfx(4RZvB!oyGYoznECu<|r{DFQv#mf&R2tL-gdjSeO z>+bEJe|T^MVpN=sLD%63IZqLV7s;Z;A=`1D5^Y?I2wFb*h%Hsh25h5=qO>>ctbRE{ zBwii z8LL2Xu|ksFmUAZ>hz^q7s+WPE+d+tVVAm^uyzq%H^XN#vUR%{C?jZCN?^R~Q?kUeN z}HFAkj(aooghvcU-$)u@t&7IfBe;dJ@NK;(f|AiDnY^L{t)@P3EH$!RUEb| ztqvKdCmZJz8qt7g)6g_wk2caYibMm4RF>c-Vp=c^PG?G*ftJ5$E}RvTHAy1pq9np( zQBPVi?5Hfu9jjA=5;o)HN=yKYUHj@APd@SLNHsO zhYJCMabnU$c*PQUh~d4QCC<(9`vNet+wZya$epj=y-H_ad(n5%iB%wjSD%6MDwz7H zWx;9_L@vct%@93^+Z5*;b5)0lhjqpIvW|;8Y0atGbe~qAP>mfYfiB8-1~DpAhiyVU zJ8$^qZdy8R$^jy`<(z$cPCR+~|u6OVVh1t@%JNE8dO~@Db ztX}8;2len~s;pU;P4TFJ+J{;6nY1V^w?o~c4)OS7Q3l00(KxfYa+~Bek|r1?O*4wm zC{4a2656N2?cl8E?)vz|@wz%zJt%%qcb*fKO4El$;`)M<8#qcH&Y&xI)$M8!f>%U#Sp zKC4&npZG_NXpo*!=%*dC9wLNKUpwhff4<6&cs;yc7M)&B)+}t3l9@F#U9l ztCG=nU20Q+>*|nQ@XD=X5n;{NYHIC{w$r8Q&Rrz6Mc0v44LWzc)s4Uda?dRvT(jkj z_cu_%+NM>ktVgyXpTIV$X4M_97vBw#v#ccz?CbItmdz8mj+;eo?xpaRlDQ-%q_Q1ug}h%wYq0uvL2L=l1{A%yNAGw6X%|FzO_*Jx(1>C6`93ef$6H2%yotbvw8>erX*;*mjVg!~i|2;mi~?FSVx1rGqgXeN6IDEnSOU=i5jd zH{_^DU=un7-JCB|u(!rV8eL;xOF&#cAFCufK#zL#ol{R8J^axt+pvuU;DKvJZ6 zl4P<%Tk+7TOFnq#!+jWxxp574U#ubim$$)3ZpM1XP$oVlu^28wqf~Vy301y$GO+Z&$xmbB zqeh}DS#-e|@#nw#@9Qr;a^x*o!gJTOPZqW7$nWEuQUL~}^y(Zc)`XxQ_cBIpXGvmi zE9V)3V`(l^f?hg8(-X)xidUVM%*GKSy*yG%qyx|+&RGU53Caul^ucS69e4!eOkQ|C z=0B=KcG5w_%!m&)ENWig7cUe5uclmaW%6!$=pE|ud>H3N)7ApsKl3ao24k3MvHPbT zsl|v#7)+hBRX%kX%He%G>tp?Aj60ON8 zHc}R5v%CbkehWQ7l&=Ia7P0|kPCZ@hNX*&oSfAEP>U!#)Moyc$I*X<#;LgAy@Qa__ zfAHR4-FYi^VO@93xtee zPED(|YmG}j!O+c?yCrsLMjklj!?2ZZF_A5Ur7}#g*8_|8fFh9xibItFYS1gU9e!ln z&ChT4!Z|cddy$45-wjQETh?c<;3e}IGvVr6crCRKzYwj=#3UgrWDsIjc`7>a;)uRd zPdSU%Q`&-)%$z6bS(Uq9)DpX4pHL`nC^c#zdi?x>)1UqD-ivkU7r*5YwxO8FdEXX8 ztIBR|8w{@G!nKhMj-q&>N|3`BY?g@KXXlg~PIG11rOb_skT^;#g))PjijGtJwJSVc zI%yMK;>=1?pFp(V^2^=FKV9?I3KVCbDbBkTQwc!M z9^LW!`~Uv^PqA{MF8FWsbQmE2I)_S|?Ilng+9 zEK7!Df$U(Ba)wnBjd{wlysZkEV5J^}2|w~DK!jzh!?&2pu&Z;Eh9 z8<0%ZAPTQ}_SO3jy#2;q*w*__R<2rK?T~JU;n$FpLI8{K2xGdam>Mqx?Y!OwcC}@$ zrq+r=$JaZZB((O{&}7u{Ih;a@-$_uzP6&e!9)9PAZSNkz>`ILSOzIhjBrR*&+{RG1 zvN5NC#9!%q=D`MO=2*sXQ6}&`s2-9lWup!zLDN($!A)`L_EIchSiLP#DxebSGm{>u z=V`|^?|hiTiBapK0}owx^QUjTbO{#XSMR`NROQHHUxZVMU6~C`iA7sv($ zR&^smK`g3xqE50aUkQwsOIbkX&KtNu@PG8Jt8TmHp&Nl-a?YCIs~A`&g^Z{jXr36w zAjv-rOH#a^Q&KYYMq#&JZDL5g9br2-OtC8|TAL4kDY~+TnyEuiYu97Hd1%LF*JD;M z%>5Wfn}WP@-+yUx$|cK`STe{ed9IkL_+TQP@@4Up4n9O71Pf6~Tk1;VjnJHDMvb!= zB@~*`(rQ=SLQ)#hwYufsx4yjN43?jL&vO^r;L#ycJ&fmcnT?@M*~x2zL1^QJ1{Sy1 z83VOdLz0pxtY%OE;@*>)$S$h&~+B6W> zR!9$AGKpkH?Wu)+Qq1a0h+1Aj$tXxgYJD}!Zg=D&5nHd3V~~TapqtYPIf>1NA+K~f zW5@=jQtVe~I(&;>wlK|Xz9b24t%sif+rHN>KDjyiec;75`a!8koCqy5H9el7tyGM; zoGT?MTe6y^(JC4g*6cjQkhJU~UwNF6v2glAf$fGQv}0IyDoIAz)e=sbHUa#I2QEJK z$^F-Dnhbt^J|-GbMa~?A6HZrD8U?tN*}=ez>fC0$P?jw+5i8%`APM>te+QpZu_-R@ zLSW#pLUJOJ<;^=1T#ivqpO|JFUSDLg^~`gBeDSi6e~21JoU``-E0~JJKOz@zhmcjL z1CofMsxe#Ryeghz6w^e2UTe<-HGHX)wwlO8-p1V7)tOq0p&JOVX13BZ)5oXnNUkm; z0&V*C{U5)0*W;U%r+co(^!Ls}_G|@qUXsyk1Fl-!cV)oUw8o?A^2U)puM{VYRWePd zmkwk|kzOnM71aJ@Ib@6y{A@)}uUjJVC2<8hq1rr2#I`R&%T7|?)=P`>u6=|=2lWjp z2h#3cr{DbShKnBDBym2W#Y_^6NM`2=b&jtr#pInqg)d~)JRA0q#3-w<3Vm0pDXR>X z?ut_FqtHr=fsroF`5GoI9#liG{N&d!UGdn*1N0Nk{O@m0gb&}|00ky!@yUAtZ0`>9 z1`mH~bh^z(Gr`51O>C2r*k}|PMyyn;=Tk{x6W{mKyY}30?_V&2I1oxBdiBXH0dV>Qv8pc209*pV~|~aJY{wrL$3&w@7R-92thy=`OXQ z#VN4Dk$1!QUpw=cW1EqA?>m?wRSWr-+o2yp?kLoM0+vTGPooeWE%f$AghZE zu6m17TpH^IExC+#oF07q)dzoh73Nm+;0FoxZ3M{VP!Y^ZdSV@*wvFC#P%g%IWv+nO zBK5Nq6&OD(<8DY?R_0JoFp6vh8+Lj)?`kN-f(FM}j765kpm}IVW@&;m7t^bo^@UcD zjx%|DxT>z-ckL5z?R{qRp8xz!?D&F=cHc9aTq=>8DMfq&)H^lyD1&2UdIP}Mn5`pY z+$0L~rVhEeQPQxP^`d5G@#XA1O3K{y5yi5Au^mRbRAD=dC(`Ms$@5LAnxP|b)0d!bqIou|5fa#wiYb>0mf5kQ1^E_*z zVr3vat4&C%K=V5Ya#i*?q&?d&zv8|74jo6Y?k#JtJ_R%Iuh@cUM129-e-TiN`KcL; zo99xrUAQJR{=TFGW_(P#J!lXrf+}=6JoY-3L|v?Eh`1K3(Gbuv$B(}GAFuq|16cjD z?JHSyC71|trvYY3g;)r)b#X1sOU7!v~(-z;KO8e3Ld(`?ktz{agpkZFxj zG(7*yXP&$4**~GC5ReaCcs{yk^hjBf)8qP2|bOtMqh)N^wZSRJ8)^ zA=26^T)ud-MBo}(a*c#2oR2!C8}?=|*VeU%<`GXzx8r&2O3r4Ea!LNGgPtn}#@4{@3xwuSyV4>9CzVGTlmuymbR?o{ z1I7qKpnJJZE?G8Eb93Bi(?e)Q8Qc`jnp|$U>AkK%2A}=s+b-R<{nq_3x!ke_=v?i( z;L>ZHl#lfx!;RwFie9DUT_k2 zrkv_f+F}?@Ln&p7w5*!S-FS#vm5MCc0f%f67v?QJI-1^p<1b%$@q;HV=sSlZcrg0? z=D(tA>p`}E4L~+dkz|-3hKThBWi|?DDLPr+Rq1nVp{zK8*n|@2BpSkNa&-+;9^+QY z(lj}t9A$b@5Oct1rY69Kxt9wTnE>XA2sGbL@44vK4?o&zMgLl_dbwtO=-fc#(uXAS zQ^*GA(Z*O)qu@NkWrk@g4sjYKMd4pX3oD;!>GcPUxkW9M@#O%o(INKH;`Yvc2lu>m zPach=@4bo{03{H$641<|nKzWPM}-27yhB)J9BQj&s?`AhSv6pXI{cDKJ`WQbIN;;D z1$Oc*$%}?fFz3AHu}ANI`OmxHig<@_@GLB5XsVGkVYbc;E#k<_t$!3vQM z@aBGb-imSPdf8$whZ~_^v@tBPRk6SZsPplYM}EEM)N3DNan7+|eUtN$;%}jOCZO=B z3%AH>4pdbnr7J_xvP6AVT1{*A3DQhZ9N{3tx}ZH^Zs_`2dN3y=L5h0Ei`(}c+xajU zKY+@w!meHa^gc|ajf$+FbtBA(&AlZjCg9~)!NL#;_xm0R%{H$uR&riN5O3L)9j$jP z%qS;{#GqzMkuzKYKwVEib=%gDU%3qe;GDI;-HaJIc983z1z;gDHdqbpwk4els*-BT zJl&dc*`UH7i!*2hYkWwZEr*k%FI@ZM9alWN7aA~I)*j!R)T|%%V@ujVj+D*@G`-4S z$joBpxX@>glFFbIX_9MnvusePr)zlA4FWv{jiRG}I`hz5H~by5b?}Rr|BwMW_A^Mv zh&Y3*H4v)_!i7NF_W8NG4$m3$*z7Wj!EGK2eY_%cXP)1E^AAqEaoMIS%-+wEXi)tl z^7OL~Xd7yWnt^T+OL)U>?;J-ac_+kBtJ_MdDrqiV7EuXF?T{i4L;Yv2yythvx9!-J z47qY26@7>d2@ipG&mE1-QXeBz#<#)?Cp8<1s2x7(imw`RJ(WQxJTl@&#gUIgvUx%- zP~e5b{KbP;-*@%x4`Yk}*XJ>3fiEC;+TfeeIpB3QF3`0go!;ZgQc)*wo*{EBw30oa zYSr<)p3atYSe7^l@YmkB=%tgl{}@FdZCTUUK|t!Zmye+Fs7J1EgC>U7Bwn~j>ZH!G zYP7p`aQ!U%pkclx4Gh&rklx zsXLy-sE{ZA0w=)k{TR~;hcLqcP@y~g6>h38a!o8`zb`ZQ@)_)g(?w6MNYM@n%ro>g z@h@8hd_j_GKNwwWjl8N`pNfTk=W? z&oJfXOVu4lj#uQcsbjfm=%Eq3fc^Vq|L(hA`P~~ByTJ5KI=UL?BX6Amhy@dGT7V0g zkW$2ZgbRkoyy~+>`m8o4m-wB)yYQ2utwPbyhNe6pGOJ@(Z`*bGuhA=g%i1fPymo#1 zdqCNsf~47_aO!aKfFSWL4O+6ns8bX(R@Z`KRK`-yQeCO@QVJn(_Lk4>IEuuRGIHu* z+40!^t6uoQ6JJ5M%x%B3psT?^f(8>*IJI$*lchWRhC-ImS|N=@eqr4p&1vj9NMBEj zbX-YU$A@~U292sT2{Y+}o~sv+)kUDE!2aHS)7D@A@vj&=;loF9=ySh`G|vTdQI&NW z#Z&X08l|m{8y1=Tl%WXCtHvJ97VHE=3va@gQq=^}SuaHQj@8qOqD-mvW3gncFaemw zi61|D=8q3txH(t%h7X`qLl-)k&8YU8-%0|s)sH>g=7UUKll zyMD9l3P9&=S?gZF)2{#N>Fwx+i9@^@$R~-7t~Q1+G<3l7X=K5Xa8asocm{`UmF6ub zs%+OCfhqHquWsG>`=j4$pq;n_$G@*$|EX@98Y6erkOP;!1(-#US)B7HR7RdORnaS8 z@ex~0^<1`S*~$Xe1?VTvP$Qq=40;-|Fz-e=Irir;jMTkY3dY98hY9^UF-l~^w7Sk(I zOs-ypMplM3mSyN`rnr2rDK|3eDoeJpQ~(J?wZN%8rg4Zeu@G$HrqD%3NA-sv-}~CZ zA7R}1RBsQuV&6g3gzp0Jbvz5SRU5W;)HrOKY7|DFRLS-f3K;lHJtCRQK`v1B^FW-Q zq&HGNs|{|aOd%XJAsNA>E1bk36+M09iA(q<3ONsx%Tg0611>F3-{0QlzRY z-g4vHG)1J`^XlxGN*v??UCs(QUCHNaI_1a{sW%-GhI*-?o`PBaxV6`c~-t+ZrJ zvs>z%!?17bGap@a=(+o@CZO^B#&@y#fdENeA%7&Ub*(!OE-((yEdli zHxeP=>h48_)<;=Rf1wst!ud+S)iQENIKjd`BlRfC4Z%|C&iGeDu3YSJ=|cIuU(1+0 zdg#>4FF*0&o_|1J^(*gT=TsPBD*(4nmWmkGc~aTPbO|+$hzjmw!eKU8Nc5#TU5V!~ zsESgj4a&bi{OrLk`uHX`o|WvsF|${E>f zNx7nn_*k~ejO8`DiqY!;;oy$Tw_bnm;jKrp=aetRk}wYP244$jvTqbxOhI3OV33K@ z%DS&bA<(AX;Lyakb?jtyoH&|iA#)T~?SqkjkZe-56o`#RN}r0B6Gk}o554~E?jwIY zi8Z-cVFkMBe24}Cgm12_rPKM;mfAZ{8a)9>ke7*ag`w7#N#d|2G3gERefL7rj}hm} zY+gYV;bXZ4@E;LERmbi~M}1<|T}w0TJq96PZ^q-!89r2>%p5DF*eMv4%5^f-ZkN3A z_A|fQ^&Cu<&RN@X8k<)a5#x{0S~M_dw0mZLqHW>y`0Wg1M$>rQ_EdCfkdI21c_xE6 zGfNs3;7exM9#35NUt4c~^~>mU_TmWW&-e#~_}*6`{~0r;8=<(W!4L~OUY2}dx4Q&> z0}d?F=OG*+M - - - 4.0.0 - protobuf-java-benchmark - com.google.protobuf - 1.0.0 - Protocol Buffers [Benchmark] - The benchmark tools for Protobuf Java. - - - - com.google.protobuf - protobuf-java - ${protobuf.version} - jar - system - ${project.basedir}/lib/protobuf-java.jar - - - com.google.caliper - caliper - 1.0-beta-2 - - - - - - - - org.apache.maven.plugins - maven-assembly-plugin - 2.4.1 - - - - jar-with-dependencies - - - - - com.mkyong.core.utils.App - - - - - - make-assembly - - package - - single - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5.1 - - 1.8 - 1.8 - - - - org.apache.maven.plugins - maven-jar-plugin - 2.5 - - - - true - com.google.protocolbuffers.ProtoBench - - - - - - org.apache.maven.plugins - maven-source-plugin - 2.4 - - - attach-sources - - jar-no-fork - - - - - - - - - diff --git a/lib/protobuf/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java b/lib/protobuf/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java deleted file mode 100644 index a440248..0000000 --- a/lib/protobuf/benchmarks/java/src/main/java/com/google/protobuf/ProtoCaliperBenchmark.java +++ /dev/null @@ -1,214 +0,0 @@ - -package com.google.protobuf; - -import com.google.caliper.BeforeExperiment; -import com.google.caliper.AfterExperiment; -import com.google.caliper.Benchmark; -import com.google.caliper.Param; -import com.google.caliper.api.VmOptions; -import com.google.protobuf.ByteString; -import com.google.protobuf.CodedOutputStream; -import com.google.protobuf.ExtensionRegistry; -import com.google.protobuf.Message; -import com.google.protobuf.benchmarks.Benchmarks.BenchmarkDataset; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.FileWriter; -import java.io.IOException; -import java.io.RandomAccessFile; -import java.util.ArrayList; -import java.util.List; - -// Caliper set CICompilerCount to 1 for making sure compilation doesn't run in parallel with itself, -// This makes TieredCompilation not working. We just disable TieredCompilation by default. In master -// branch this has been disabled by default in caliper: -// https://github.com/google/caliper/blob/master/caliper-runner/src/main/java/com/google/caliper/runner/target/Jvm.java#L38:14 -// But this haven't been added into most recent release. -@VmOptions("-XX:-TieredCompilation") -public class ProtoCaliperBenchmark { - public enum BenchmarkMessageType { - GOOGLE_MESSAGE1_PROTO3 { - @Override ExtensionRegistry getExtensionRegistry() { return ExtensionRegistry.newInstance(); } - @Override - Message getDefaultInstance() { - return com.google.protobuf.benchmarks.BenchmarkMessage1Proto3.GoogleMessage1 - .getDefaultInstance(); - } - }, - GOOGLE_MESSAGE1_PROTO2 { - @Override ExtensionRegistry getExtensionRegistry() { return ExtensionRegistry.newInstance(); } - @Override - Message getDefaultInstance() { - return com.google.protobuf.benchmarks.BenchmarkMessage1Proto2.GoogleMessage1 - .getDefaultInstance(); - } - }, - GOOGLE_MESSAGE2 { - @Override ExtensionRegistry getExtensionRegistry() { return ExtensionRegistry.newInstance(); } - @Override - Message getDefaultInstance() { - return com.google.protobuf.benchmarks.BenchmarkMessage2.GoogleMessage2.getDefaultInstance(); - } - }, - GOOGLE_MESSAGE3 { - @Override - ExtensionRegistry getExtensionRegistry() { - ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - com.google.protobuf.benchmarks.BenchmarkMessage38.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage37.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage36.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage35.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage34.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage33.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage32.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage31.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage3.registerAllExtensions(extensions); - return extensions; - } - @Override - Message getDefaultInstance() { - return com.google.protobuf.benchmarks.BenchmarkMessage3.GoogleMessage3.getDefaultInstance(); - } - }, - GOOGLE_MESSAGE4 { - @Override - ExtensionRegistry getExtensionRegistry() { - ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - com.google.protobuf.benchmarks.BenchmarkMessage43.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage42.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage41.registerAllExtensions(extensions); - com.google.protobuf.benchmarks.BenchmarkMessage4.registerAllExtensions(extensions); - return extensions; - } - @Override - Message getDefaultInstance() { - return com.google.protobuf.benchmarks.BenchmarkMessage4.GoogleMessage4.getDefaultInstance(); - } - }; - - abstract ExtensionRegistry getExtensionRegistry(); - abstract Message getDefaultInstance(); - } - - private BenchmarkMessageType benchmarkMessageType; - @Param("") - private String dataFile; - - private byte[] inputData; - private BenchmarkDataset benchmarkDataset; - private Message defaultMessage; - private ExtensionRegistry extensions; - private List inputDataList; - private List inputStreamList; - private List inputStringList; - private List sampleMessageList; - - private BenchmarkMessageType getMessageType() throws IOException { - if (benchmarkDataset.getMessageName().equals("benchmarks.proto3.GoogleMessage1")) { - return BenchmarkMessageType.GOOGLE_MESSAGE1_PROTO3; - } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage1")) { - return BenchmarkMessageType.GOOGLE_MESSAGE1_PROTO2; - } else if (benchmarkDataset.getMessageName().equals("benchmarks.proto2.GoogleMessage2")) { - return BenchmarkMessageType.GOOGLE_MESSAGE2; - } else if (benchmarkDataset.getMessageName(). - equals("benchmarks.google_message3.GoogleMessage3")) { - return BenchmarkMessageType.GOOGLE_MESSAGE3; - } else if (benchmarkDataset.getMessageName(). - equals("benchmarks.google_message4.GoogleMessage4")) { - return BenchmarkMessageType.GOOGLE_MESSAGE4; - } else { - throw new IllegalStateException("Invalid DataFile! There's no testing message named " - + benchmarkDataset.getMessageName()); - } - } - - @BeforeExperiment - void setUp() throws IOException { - if (!dataFile.equals("")) { - RandomAccessFile file = new RandomAccessFile(new File(dataFile), "r"); - inputData = new byte[(int) file.length()]; - file.readFully(inputData); - benchmarkDataset = BenchmarkDataset.parseFrom(inputData); - benchmarkMessageType = getMessageType(); - } else { - inputData = new byte[0]; - benchmarkDataset = BenchmarkDataset.parseFrom(inputData); - benchmarkMessageType = BenchmarkMessageType.GOOGLE_MESSAGE2; - } - defaultMessage = benchmarkMessageType.getDefaultInstance(); - extensions = benchmarkMessageType.getExtensionRegistry(); - inputDataList = new ArrayList(); - inputStreamList = new ArrayList(); - inputStringList = new ArrayList(); - sampleMessageList = new ArrayList(); - - for (int i = 0; i < benchmarkDataset.getPayloadCount(); i++) { - byte[] singleInputData = benchmarkDataset.getPayload(i).toByteArray(); - inputDataList.add(benchmarkDataset.getPayload(i).toByteArray()); - inputStreamList.add(new ByteArrayInputStream( - benchmarkDataset.getPayload(i).toByteArray())); - inputStringList.add(benchmarkDataset.getPayload(i)); - sampleMessageList.add( - defaultMessage.newBuilderForType().mergeFrom(singleInputData, extensions).build()); - } - } - - - @Benchmark - void serializeToByteArray(int reps) throws IOException { - if (sampleMessageList.size() == 0) { - return; - } - for (int i = 0; i < reps; i++) { - for (int j = 0; j < sampleMessageList.size(); j++) { - sampleMessageList.get(j).toByteArray(); - } - } - } - - @Benchmark - void serializeToMemoryStream(int reps) throws IOException { - if (sampleMessageList.size() == 0) { - return; - } - for (int i = 0; i < reps; i++) { - for (int j = 0; j < sampleMessageList.size(); j++) { - ByteArrayOutputStream output = new ByteArrayOutputStream(); - sampleMessageList.get(j).writeTo(output); - } - } - } - - @Benchmark - void deserializeFromByteArray(int reps) throws IOException { - if (inputDataList.size() == 0) { - return; - } - for (int i = 0; i < reps; i++) { - for (int j = 0; j < inputDataList.size(); j++) { - benchmarkMessageType.getDefaultInstance().getParserForType().parseFrom( - inputDataList.get(j), extensions); - } - } - } - - @Benchmark - void deserializeFromMemoryStream(int reps) throws IOException { - if (inputStreamList.size() == 0) { - return; - } - for (int i = 0; i < reps; i++) { - for (int j = 0; j < inputStreamList.size(); j++) { - benchmarkMessageType.getDefaultInstance().getParserForType().parseFrom( - inputStreamList.get(j), extensions); - inputStreamList.get(j).reset(); - } - } - } -} - - diff --git a/lib/protobuf/benchmarks/js/benchmark_suite.js b/lib/protobuf/benchmarks/js/benchmark_suite.js deleted file mode 100644 index c5c3e51..0000000 --- a/lib/protobuf/benchmarks/js/benchmark_suite.js +++ /dev/null @@ -1,33 +0,0 @@ -var benchmark = require("benchmark"); - -function newBenchmark(messageName, filename, language) { - var benches = []; - return { - suite: new benchmark.Suite(messageName + filename + language ) - .on("add", function(event) { - benches.push(event.target); - }) - .on("start", function() { - process.stdout.write( - "benchmarking message " + messageName - + " of dataset file " + filename - + "'s performance ..." + "\n\n"); - }) - .on("cycle", function(event) { - process.stdout.write(String(event.target) + "\n"); - }) - .on("complete", function() { - var getHz = function(bench) { - return 1 / (bench.stats.mean + bench.stats.moe); - } - benches.forEach(function(val, index) { - benches[index] = getHz(val); - }); - }), - benches: benches - } -} - -module.exports = { - newBenchmark: newBenchmark -} diff --git a/lib/protobuf/benchmarks/js/js_benchmark.js b/lib/protobuf/benchmarks/js/js_benchmark.js deleted file mode 100644 index c44fee0..0000000 --- a/lib/protobuf/benchmarks/js/js_benchmark.js +++ /dev/null @@ -1,82 +0,0 @@ -require('./datasets/google_message1/proto2/benchmark_message1_proto2_pb.js'); -require('./datasets/google_message1/proto3/benchmark_message1_proto3_pb.js'); -require('./datasets/google_message2/benchmark_message2_pb.js'); -require('./datasets/google_message3/benchmark_message3_pb.js'); -require('./datasets/google_message4/benchmark_message4_pb.js'); -require('./benchmarks_pb.js'); - -var fs = require('fs'); -var benchmarkSuite = require("./benchmark_suite.js"); - - -function getNewPrototype(name) { - var message = eval("proto." + name); - if (typeof(message) == "undefined") { - throw "type " + name + " is undefined"; - } - return message; -} - -var results = []; -var json_file = ""; - -console.log("#####################################################"); -console.log("Js Benchmark: "); -process.argv.forEach(function(filename, index) { - if (index < 2) { - return; - } - if (filename.indexOf("--json_output") != -1) { - json_file = filename.replace(/^--json_output=/, ''); - return; - } - - var benchmarkDataset = - proto.benchmarks.BenchmarkDataset.deserializeBinary(fs.readFileSync(filename)); - var messageList = []; - var totalBytes = 0; - benchmarkDataset.getPayloadList().forEach(function(onePayload) { - var message = getNewPrototype(benchmarkDataset.getMessageName()); - messageList.push(message.deserializeBinary(onePayload)); - totalBytes += onePayload.length; - }); - - var senarios = benchmarkSuite.newBenchmark( - benchmarkDataset.getMessageName(), filename, "js"); - senarios.suite - .add("js deserialize", function() { - benchmarkDataset.getPayloadList().forEach(function(onePayload) { - var protoType = getNewPrototype(benchmarkDataset.getMessageName()); - protoType.deserializeBinary(onePayload); - }); - }) - .add("js serialize", function() { - var protoType = getNewPrototype(benchmarkDataset.getMessageName()); - messageList.forEach(function(message) { - message.serializeBinary(); - }); - }) - .run({"Async": false}); - - results.push({ - filename: filename, - benchmarks: { - protobufjs_decoding: senarios.benches[0] * totalBytes / 1024 / 1024, - protobufjs_encoding: senarios.benches[1] * totalBytes / 1024 / 1024 - } - }) - - console.log("Throughput for deserialize: " - + senarios.benches[0] * totalBytes / 1024 / 1024 + "MB/s" ); - console.log("Throughput for serialize: " - + senarios.benches[1] * totalBytes / 1024 / 1024 + "MB/s" ); - console.log(""); -}); -console.log("#####################################################"); - -if (json_file != "") { - fs.writeFile(json_file, JSON.stringify(results), (err) => { - if (err) throw err; - }); -} - diff --git a/lib/protobuf/benchmarks/php/PhpBenchmark.php b/lib/protobuf/benchmarks/php/PhpBenchmark.php deleted file mode 100644 index d3db61d..0000000 --- a/lib/protobuf/benchmarks/php/PhpBenchmark.php +++ /dev/null @@ -1,170 +0,0 @@ -getPayload(); - for ($i = $payloads->count() - 1; $i >= 0; $i--) { - (new $args[1]())->mergeFromString($payloads->offsetGet($i)); - } - } - - // $args: array of message - static function serialize(&$args) { - foreach ($args as &$temp_message) { - $temp_message->serializeToString(); - } - } -} - -class Benchmark -{ - private $benchmark_name; - private $args; - private $benchmark_time; - private $total_bytes; - private $coefficient; - - public function __construct($benchmark_name, $args, $total_bytes, - $benchmark_time = 5.0) { - $this->args = $args; - $this->benchmark_name = $benchmark_name; - $this->benchmark_time = $benchmark_time; - $this->total_bytes = $total_bytes; - $this->coefficient = pow (10, 0) / pow(2, 20); - } - - public function runBenchmark() { - $t = $this->runBenchmarkWithTimes(1); - $times = ceil($this->benchmark_time / $t); - return $this->total_bytes * $times / - ($times == 1 ? $t : $this->runBenchmarkWithTimes($times)) * - $this->coefficient; - } - - private function runBenchmarkWithTimes($times) { - $st = microtime(true); - for ($i = 0; $i < $times; $i++) { - call_user_func_array($this->benchmark_name, array(&$this->args)); - } - $en = microtime(true); - return $en - $st; - } -} - -function getMessageName(&$dataset) { - switch ($dataset->getMessageName()) { - case "benchmarks.proto3.GoogleMessage1": - return "\Benchmarks\Proto3\GoogleMessage1"; - case "benchmarks.proto2.GoogleMessage1": - return "\Benchmarks\Proto2\GoogleMessage1"; - case "benchmarks.proto2.GoogleMessage2": - return "\Benchmarks\Proto2\GoogleMessage2"; - case "benchmarks.google_message3.GoogleMessage3": - return "\Benchmarks\Google_message3\GoogleMessage3"; - case "benchmarks.google_message4.GoogleMessage4": - return "\Benchmarks\Google_message4\GoogleMessage4"; - default: - exit("Message " . $dataset->getMessageName() . " not found !"); - } -} - -function runBenchmark($file, $behavior_prefix) { - $datafile = fopen($file, "r") or die("Unable to open file " . $file); - $bytes = fread($datafile, filesize($file)); - $dataset = new BenchmarkDataset(NULL); - $dataset->mergeFromString($bytes); - $message_name = getMessageName($dataset); - $message_list = array(); - $total_bytes = 0; - $payloads = $dataset->getPayload(); - for ($i = $payloads->count() - 1; $i >= 0; $i--) { - $new_message = new $message_name(); - $new_message->mergeFromString($payloads->offsetGet($i)); - array_push($message_list, $new_message); - $total_bytes += strlen($payloads->offsetGet($i)); - } - - $parse_benchmark = new Benchmark( - "\Google\Protobuf\Benchmark\BenchmarkMethod::parse", - array($dataset, $message_name), $total_bytes); - $serialize_benchmark = new Benchmark( - "\Google\Protobuf\Benchmark\BenchmarkMethod::serialize", - $message_list, $total_bytes); - - return array( - "filename" => $file, - "benchmarks" => array( - $behavior_prefix . "_parse" => $parse_benchmark->runBenchmark(), - $behavior_prefix . "_serailize" => $serialize_benchmark->runBenchmark() - ), - "message_name" => $dataset->getMessageName() - ); -} - -// main -$json_output = false; -$results = array(); -$behavior_prefix = ""; - -foreach ($argv as $index => $arg) { - if ($index == 0) { - continue; - } - if ($arg == "--json") { - $json_output = true; - } else if (strpos($arg, "--behavior_prefix") == 0) { - $behavior_prefix = str_replace("--behavior_prefix=", "", $arg); - } -} - -foreach ($argv as $index => $arg) { - if ($index == 0) { - continue; - } - if (substr($arg, 0, 2) == "--") { - continue; - } else { - array_push($results, runBenchmark($arg, $behavior_prefix)); - } -} - -if ($json_output) { - print json_encode($results); -} else { - print "PHP protobuf benchmark result:\n\n"; - foreach ($results as $result) { - printf("result for test data file: %s\n", $result["filename"]); - foreach ($result["benchmarks"] as $benchmark => $throughput) { - printf(" Throughput for benchmark %s: %.2f MB/s\n", - $benchmark, $throughput); - } - } -} - -?> diff --git a/lib/protobuf/benchmarks/php/autoload.php b/lib/protobuf/benchmarks/php/autoload.php deleted file mode 100644 index 52a8741..0000000 --- a/lib/protobuf/benchmarks/php/autoload.php +++ /dev/null @@ -1,25 +0,0 @@ - 6 && arg.substring(arg.length - 6) == ".proto") { - protoFiles.push(arg); - } else if (arg.length > 15 && arg.substring(0, 15) == "--include_path=") { - prefix = arg.substring(15); - } else if (index >= 2) { - argv.push(arg); - } -}); -protoFiles.forEach(function(val) { - argv.push(prefix + "/" + val); -}); - -pbjs.main(argv, function(err, output){ - if (err) { - console.log(err); - } -}); - diff --git a/lib/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js b/lib/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js deleted file mode 100644 index 19e5497..0000000 --- a/lib/protobuf/benchmarks/protobuf.js/protobufjs_benchmark.js +++ /dev/null @@ -1,66 +0,0 @@ -var root = require("./generated_bundle_code.js"); -var fs = require('fs'); -var benchmark = require("./node_modules/benchmark"); -var benchmarkSuite = require("./benchmark_suite.js"); - - -function getNewPrototype(name) { - var message = eval("root." + name); - if (typeof(message) == "undefined") { - throw "type " + name + " is undefined"; - } - return message; -} - - -var results = []; - -console.log("#####################################################"); -console.log("ProtobufJs Benchmark: "); -process.argv.forEach(function(filename, index) { - if (index < 2) { - return; - } - var benchmarkDataset = - root.benchmarks.BenchmarkDataset.decode(fs.readFileSync(filename)); - var messageList = []; - var totalBytes = 0; - benchmarkDataset.payload.forEach(function(onePayload) { - var message = getNewPrototype(benchmarkDataset.messageName); - messageList.push(message.decode(onePayload)); - totalBytes += onePayload.length; - }); - - var senarios = benchmarkSuite.newBenchmark( - benchmarkDataset.messageName, filename, "protobufjs"); - senarios.suite - .add("protobuf.js static decoding", function() { - benchmarkDataset.payload.forEach(function(onePayload) { - var protoType = getNewPrototype(benchmarkDataset.messageName); - protoType.decode(onePayload); - }); - }) - .add("protobuf.js static encoding", function() { - var protoType = getNewPrototype(benchmarkDataset.messageName); - messageList.forEach(function(message) { - protoType.encode(message).finish(); - }); - }) - .run({"Async": false}); - - results.push({ - filename: filename, - benchmarks: { - protobufjs_decoding: senarios.benches[0] * totalBytes, - protobufjs_encoding: senarios.benches[1] * totalBytes - } - }) - - console.log("Throughput for decoding: " - + senarios.benches[0] * totalBytes / 1024 / 1024 + "MB/s" ); - console.log("Throughput for encoding: " - + senarios.benches[1] * totalBytes / 1024 / 1024 + "MB/s" ); - console.log(""); -}); -console.log("#####################################################"); - diff --git a/lib/protobuf/benchmarks/python/__init__.py b/lib/protobuf/benchmarks/python/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/lib/protobuf/benchmarks/python/py_benchmark.py b/lib/protobuf/benchmarks/python/py_benchmark.py deleted file mode 100755 index 60e377e..0000000 --- a/lib/protobuf/benchmarks/python/py_benchmark.py +++ /dev/null @@ -1,161 +0,0 @@ -from __future__ import print_function -import sys -import os -import timeit -import math -import argparse -import fnmatch -import json - -parser = argparse.ArgumentParser(description="Python protobuf benchmark") -parser.add_argument("data_files", metavar="dataFile", nargs="+", - help="testing data files.") -parser.add_argument("--json", action="store_const", dest="json", - const="yes", default="no", - help="Whether to output json results") -parser.add_argument("--behavior_prefix", dest="behavior_prefix", - help="The output json format's behavior's name's prefix", - default="") -# BEGIN CPP GENERATED MESSAGE -parser.add_argument("--cpp_generated", action="store_const", - dest="cpp_generated", const="yes", default="no", - help="Whether to link generated code library") -# END CPP GENERATED MESSAGE -args = parser.parse_args() -# BEGIN CPP GENERATED MESSAGE -# CPP generated code must be linked before importing the generated Python code -# for the descriptor can be found in the pool -if args.cpp_generated != "no": - sys.path.append( os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) + "/.libs" ) - import libbenchmark_messages - sys.path.append( os.path.dirname( os.path.dirname( os.path.abspath(__file__) ) ) + "/tmp" ) -# END CPP GENERATED MESSAGE - - -import datasets.google_message1.proto2.benchmark_message1_proto2_pb2 as benchmark_message1_proto2_pb2 -import datasets.google_message1.proto3.benchmark_message1_proto3_pb2 as benchmark_message1_proto3_pb2 -import datasets.google_message2.benchmark_message2_pb2 as benchmark_message2_pb2 -import datasets.google_message3.benchmark_message3_pb2 as benchmark_message3_pb2 -import datasets.google_message4.benchmark_message4_pb2 as benchmark_message4_pb2 -import benchmarks_pb2 as benchmarks_pb2 - - -def run_one_test(filename): - data = open(filename, "rb").read() - benchmark_dataset = benchmarks_pb2.BenchmarkDataset() - benchmark_dataset.ParseFromString(data) - total_bytes = 0 - for payload in benchmark_dataset.payload: - total_bytes += len(payload) - benchmark_util = Benchmark(full_iteration=len(benchmark_dataset.payload), - module="py_benchmark", - setup_method="init", - total_bytes=total_bytes) - result={} - result["filename"] = filename - result["message_name"] = benchmark_dataset.message_name - result["benchmarks"] = {} - benchmark_util.set_test_method("parse_from_benchmark") - result["benchmarks"][args.behavior_prefix + "_parse_from_benchmark"] = \ - benchmark_util.run_benchmark(setup_method_args='"%s"' % (filename)) - benchmark_util.set_test_method("serialize_to_benchmark") - result["benchmarks"][args.behavior_prefix + "_serialize_to_benchmark"] = \ - benchmark_util.run_benchmark(setup_method_args='"%s"' % (filename)) - return result - - -def init(filename): - global benchmark_dataset, message_class, message_list, counter, total_bytes - message_list=[] - counter = 0 - total_bytes = 0 - data = open(filename, "rb").read() - benchmark_dataset = benchmarks_pb2.BenchmarkDataset() - benchmark_dataset.ParseFromString(data) - - if benchmark_dataset.message_name == "benchmarks.proto3.GoogleMessage1": - message_class = benchmark_message1_proto3_pb2.GoogleMessage1 - elif benchmark_dataset.message_name == "benchmarks.proto2.GoogleMessage1": - message_class = benchmark_message1_proto2_pb2.GoogleMessage1 - elif benchmark_dataset.message_name == "benchmarks.proto2.GoogleMessage2": - message_class = benchmark_message2_pb2.GoogleMessage2 - elif benchmark_dataset.message_name == "benchmarks.google_message3.GoogleMessage3": - message_class = benchmark_message3_pb2.GoogleMessage3 - elif benchmark_dataset.message_name == "benchmarks.google_message4.GoogleMessage4": - message_class = benchmark_message4_pb2.GoogleMessage4 - else: - raise IOError("Message %s not found!" % (benchmark_dataset.message_name)) - - for one_payload in benchmark_dataset.payload: - temp = message_class() - temp.ParseFromString(one_payload) - message_list.append(temp) - total_bytes += len(one_payload) - - -def parse_from_benchmark(): - global counter, message_class, benchmark_dataset - m = message_class().ParseFromString(benchmark_dataset.payload[counter % len(benchmark_dataset.payload)]) - counter = counter + 1 - - -def serialize_to_benchmark(): - global counter, message_list, message_class - s = message_list[counter % len(benchmark_dataset.payload)].SerializeToString() - counter = counter + 1 - - -class Benchmark: - def __init__(self, module=None, test_method=None, - setup_method=None, total_bytes=None, full_iteration = 1): - self.full_iteration = full_iteration - self.module = module - self.test_method = test_method - self.setup_method = setup_method - self.total_bytes = total_bytes - - def set_test_method(self, test_method): - self.test_method = test_method - - def full_setup_code(self, setup_method_args=''): - setup_code = "" - setup_code += "from %s import %s\n" % (self.module, self.test_method) - setup_code += "from %s import %s\n" % (self.module, self.setup_method) - setup_code += "%s(%s)\n" % (self.setup_method, setup_method_args) - return setup_code - - def dry_run(self, test_method_args='', setup_method_args=''): - return timeit.timeit(stmt="%s(%s)" % (self.test_method, test_method_args), - setup=self.full_setup_code(setup_method_args), - number=self.full_iteration); - - def run_benchmark(self, test_method_args='', setup_method_args=''): - reps = self.full_iteration; - t = self.dry_run(test_method_args, setup_method_args); - if t < 3 : - reps = int(math.ceil(3 / t)) * self.full_iteration - if reps != self.full_iteration: - t = timeit.timeit(stmt="%s(%s)" % (self.test_method, test_method_args), - setup=self.full_setup_code(setup_method_args), - number=reps); - return self.total_bytes * 1.0 / 2 ** 20 / (1.0 * t / reps * self.full_iteration) - - -if __name__ == "__main__": - results = [] - for file in args.data_files: - results.append(run_one_test(file)) - - if args.json != "no": - print(json.dumps(results)) - else: - for result in results: - print("Message %s of dataset file %s" % \ - (result["message_name"], result["filename"])) - print("Average throughput for parse_from_benchmark: %.2f MB/s" % \ - (result["benchmarks"][ \ - args.behavior_prefix + "_parse_from_benchmark"])) - print("Average throughput for serialize_to_benchmark: %.2f MB/s" % \ - (result["benchmarks"][ \ - args.behavior_prefix + "_serialize_to_benchmark"])) - print("") diff --git a/lib/protobuf/benchmarks/python/python_benchmark_messages.cc b/lib/protobuf/benchmarks/python/python_benchmark_messages.cc deleted file mode 100644 index ded16fe..0000000 --- a/lib/protobuf/benchmarks/python/python_benchmark_messages.cc +++ /dev/null @@ -1,29 +0,0 @@ -#include - -#include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" - -static PyMethodDef python_benchmark_methods[] = { - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - - -PyMODINIT_FUNC -initlibbenchmark_messages() { - benchmarks::BenchmarkDataset().descriptor(); - benchmarks::proto3::GoogleMessage1().descriptor(); - benchmarks::proto2::GoogleMessage1().descriptor(); - benchmarks::proto2::GoogleMessage2().descriptor(); - benchmarks::google_message3::GoogleMessage3().descriptor(); - benchmarks::google_message4::GoogleMessage4().descriptor(); - - PyObject *m; - - m = Py_InitModule("libbenchmark_messages", python_benchmark_methods); - if (m == NULL) - return; -} diff --git a/lib/protobuf/benchmarks/util/__init__.py b/lib/protobuf/benchmarks/util/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/lib/protobuf/benchmarks/util/big_query_utils.py b/lib/protobuf/benchmarks/util/big_query_utils.py deleted file mode 100755 index aea55bb..0000000 --- a/lib/protobuf/benchmarks/util/big_query_utils.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/env python2.7 - -from __future__ import print_function -import argparse -import json -import uuid -import httplib2 - -from apiclient import discovery -from apiclient.errors import HttpError -from oauth2client.client import GoogleCredentials - -# 30 days in milliseconds -_EXPIRATION_MS = 30 * 24 * 60 * 60 * 1000 -NUM_RETRIES = 3 - - -def create_big_query(): - """Authenticates with cloud platform and gets a BiqQuery service object - """ - creds = GoogleCredentials.get_application_default() - return discovery.build( - 'bigquery', 'v2', credentials=creds, cache_discovery=False) - - -def create_dataset(biq_query, project_id, dataset_id): - is_success = True - body = { - 'datasetReference': { - 'projectId': project_id, - 'datasetId': dataset_id - } - } - - try: - dataset_req = biq_query.datasets().insert( - projectId=project_id, body=body) - dataset_req.execute(num_retries=NUM_RETRIES) - except HttpError as http_error: - if http_error.resp.status == 409: - print('Warning: The dataset %s already exists' % dataset_id) - else: - # Note: For more debugging info, print "http_error.content" - print('Error in creating dataset: %s. Err: %s' % (dataset_id, - http_error)) - is_success = False - return is_success - - -def create_table(big_query, project_id, dataset_id, table_id, table_schema, - description): - fields = [{ - 'name': field_name, - 'type': field_type, - 'description': field_description - } for (field_name, field_type, field_description) in table_schema] - return create_table2(big_query, project_id, dataset_id, table_id, fields, - description) - - -def create_partitioned_table(big_query, - project_id, - dataset_id, - table_id, - table_schema, - description, - partition_type='DAY', - expiration_ms=_EXPIRATION_MS): - """Creates a partitioned table. By default, a date-paritioned table is created with - each partition lasting 30 days after it was last modified. - """ - fields = [{ - 'name': field_name, - 'type': field_type, - 'description': field_description - } for (field_name, field_type, field_description) in table_schema] - return create_table2(big_query, project_id, dataset_id, table_id, fields, - description, partition_type, expiration_ms) - - -def create_table2(big_query, - project_id, - dataset_id, - table_id, - fields_schema, - description, - partition_type=None, - expiration_ms=None): - is_success = True - - body = { - 'description': description, - 'schema': { - 'fields': fields_schema - }, - 'tableReference': { - 'datasetId': dataset_id, - 'projectId': project_id, - 'tableId': table_id - } - } - - if partition_type and expiration_ms: - body["timePartitioning"] = { - "type": partition_type, - "expirationMs": expiration_ms - } - - try: - table_req = big_query.tables().insert( - projectId=project_id, datasetId=dataset_id, body=body) - res = table_req.execute(num_retries=NUM_RETRIES) - print('Successfully created %s "%s"' % (res['kind'], res['id'])) - except HttpError as http_error: - if http_error.resp.status == 409: - print('Warning: Table %s already exists' % table_id) - else: - print('Error in creating table: %s. Err: %s' % (table_id, - http_error)) - is_success = False - return is_success - - -def patch_table(big_query, project_id, dataset_id, table_id, fields_schema): - is_success = True - - body = { - 'schema': { - 'fields': fields_schema - }, - 'tableReference': { - 'datasetId': dataset_id, - 'projectId': project_id, - 'tableId': table_id - } - } - - try: - table_req = big_query.tables().patch( - projectId=project_id, - datasetId=dataset_id, - tableId=table_id, - body=body) - res = table_req.execute(num_retries=NUM_RETRIES) - print('Successfully patched %s "%s"' % (res['kind'], res['id'])) - except HttpError as http_error: - print('Error in creating table: %s. Err: %s' % (table_id, http_error)) - is_success = False - return is_success - - -def insert_rows(big_query, project_id, dataset_id, table_id, rows_list): - is_success = True - body = {'rows': rows_list} - try: - insert_req = big_query.tabledata().insertAll( - projectId=project_id, - datasetId=dataset_id, - tableId=table_id, - body=body) - res = insert_req.execute(num_retries=NUM_RETRIES) - if res.get('insertErrors', None): - print('Error inserting rows! Response: %s' % res) - is_success = False - except HttpError as http_error: - print('Error inserting rows to the table %s' % table_id) - is_success = False - - return is_success - - -def sync_query_job(big_query, project_id, query, timeout=5000): - query_data = {'query': query, 'timeoutMs': timeout} - query_job = None - try: - query_job = big_query.jobs().query( - projectId=project_id, - body=query_data).execute(num_retries=NUM_RETRIES) - except HttpError as http_error: - print('Query execute job failed with error: %s' % http_error) - print(http_error.content) - return query_job - - - # List of (column name, column type, description) tuples -def make_row(unique_row_id, row_values_dict): - """row_values_dict is a dictionary of column name and column value. - """ - return {'insertId': unique_row_id, 'json': row_values_dict} diff --git a/lib/protobuf/benchmarks/util/data_proto2_to_proto3_util.h b/lib/protobuf/benchmarks/util/data_proto2_to_proto3_util.h deleted file mode 100644 index 5eea850..0000000 --- a/lib/protobuf/benchmarks/util/data_proto2_to_proto3_util.h +++ /dev/null @@ -1,64 +0,0 @@ -#ifndef PROTOBUF_BENCHMARKS_UTIL_DATA_PROTO2_TO_PROTO3_UTIL_H_ -#define PROTOBUF_BENCHMARKS_UTIL_DATA_PROTO2_TO_PROTO3_UTIL_H_ - -#include "google/protobuf/message.h" -#include "google/protobuf/descriptor.h" - -using google::protobuf::FieldDescriptor; -using google::protobuf::Message; -using google::protobuf::Reflection; - -namespace google { -namespace protobuf { -namespace util { - -class DataStripper { - public: - void StripMessage(Message *message) { - std::vector set_fields; - const Reflection* reflection = message->GetReflection(); - reflection->ListFields(*message, &set_fields); - - for (size_t i = 0; i < set_fields.size(); i++) { - const FieldDescriptor* field = set_fields[i]; - if (ShouldBeClear(field)) { - reflection->ClearField(message, field); - continue; - } - if (field->type() == FieldDescriptor::TYPE_MESSAGE) { - if (field->is_repeated()) { - for (int j = 0; j < reflection->FieldSize(*message, field); j++) { - StripMessage(reflection->MutableRepeatedMessage(message, field, j)); - } - } else { - StripMessage(reflection->MutableMessage(message, field)); - } - } - } - - reflection->MutableUnknownFields(message)->Clear(); - } - private: - virtual bool ShouldBeClear(const FieldDescriptor *field) = 0; -}; - -class GogoDataStripper : public DataStripper { - private: - virtual bool ShouldBeClear(const FieldDescriptor *field) { - return field->type() == FieldDescriptor::TYPE_GROUP; - } -}; - -class Proto3DataStripper : public DataStripper { - private: - virtual bool ShouldBeClear(const FieldDescriptor *field) { - return field->type() == FieldDescriptor::TYPE_GROUP || - field->is_extension(); - } -}; - -} // namespace util -} // namespace protobuf -} // namespace google - -#endif // PROTOBUF_BENCHMARKS_UTIL_DATA_PROTO2_TO_PROTO3_UTIL_H_ diff --git a/lib/protobuf/benchmarks/util/gogo_data_scrubber.cc b/lib/protobuf/benchmarks/util/gogo_data_scrubber.cc deleted file mode 100644 index 9ef57b0..0000000 --- a/lib/protobuf/benchmarks/util/gogo_data_scrubber.cc +++ /dev/null @@ -1,74 +0,0 @@ -#include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" -#include "data_proto2_to_proto3_util.h" - -#include - -using google::protobuf::util::GogoDataStripper; - -std::string ReadFile(const std::string& name) { - std::ifstream file(name.c_str()); - GOOGLE_CHECK(file.is_open()) << "Couldn't find file '" - << name - << "', please make sure you are running this command from the benchmarks" - << " directory.\n"; - return std::string((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); -} - -int main(int argc, char *argv[]) { - if (argc % 2 == 0 || argc == 1) { - std::cerr << "Usage: [input_files] [output_file_names] where " << - "input_files are one to one mapping to output_file_names." << - std::endl; - return 1; - } - - for (int i = argc / 2; i > 0; i--) { - const std::string &input_file = argv[i]; - const std::string &output_file = argv[i + argc / 2]; - - std::cerr << "Generating " << input_file - << " to " << output_file << std::endl; - benchmarks::BenchmarkDataset dataset; - Message* message; - std::string dataset_payload = ReadFile(input_file); - GOOGLE_CHECK(dataset.ParseFromString(dataset_payload)) - << "Can' t parse data file " << input_file; - - if (dataset.message_name() == "benchmarks.proto3.GoogleMessage1") { - message = new benchmarks::proto3::GoogleMessage1; - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage1") { - message = new benchmarks::proto2::GoogleMessage1; - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage2") { - message = new benchmarks::proto2::GoogleMessage2; - } else if (dataset.message_name() == - "benchmarks.google_message3.GoogleMessage3") { - message = new benchmarks::google_message3::GoogleMessage3; - } else if (dataset.message_name() == - "benchmarks.google_message4.GoogleMessage4") { - message = new benchmarks::google_message4::GoogleMessage4; - } else { - std::cerr << "Unknown message type: " << dataset.message_name(); - exit(1); - } - - for (int i = 0; i < dataset.payload_size(); i++) { - message->ParseFromString(dataset.payload(i)); - GogoDataStripper stripper; - stripper.StripMessage(message); - dataset.set_payload(i, message->SerializeAsString()); - } - - std::ofstream ofs(output_file); - ofs << dataset.SerializeAsString(); - ofs.close(); - } - - - return 0; -} diff --git a/lib/protobuf/benchmarks/util/proto3_data_stripper.cc b/lib/protobuf/benchmarks/util/proto3_data_stripper.cc deleted file mode 100644 index 3096c4c..0000000 --- a/lib/protobuf/benchmarks/util/proto3_data_stripper.cc +++ /dev/null @@ -1,74 +0,0 @@ -#include "benchmarks.pb.h" -#include "datasets/google_message1/proto2/benchmark_message1_proto2.pb.h" -#include "datasets/google_message1/proto3/benchmark_message1_proto3.pb.h" -#include "datasets/google_message2/benchmark_message2.pb.h" -#include "datasets/google_message3/benchmark_message3.pb.h" -#include "datasets/google_message4/benchmark_message4.pb.h" -#include "data_proto2_to_proto3_util.h" - -#include - -using google::protobuf::util::Proto3DataStripper; - -std::string ReadFile(const std::string& name) { - std::ifstream file(name.c_str()); - GOOGLE_CHECK(file.is_open()) << "Couldn't find file '" - << name - << "', please make sure you are running this command from the benchmarks" - << " directory.\n"; - return std::string((std::istreambuf_iterator(file)), - std::istreambuf_iterator()); -} - -int main(int argc, char *argv[]) { - if (argc % 2 == 0 || argc == 1) { - std::cerr << "Usage: [input_files] [output_file_names] where " << - "input_files are one to one mapping to output_file_names." << - std::endl; - return 1; - } - - for (int i = argc / 2; i > 0; i--) { - const std::string &input_file = argv[i]; - const std::string &output_file = argv[i + argc / 2]; - - std::cerr << "Generating " << input_file - << " to " << output_file << std::endl; - benchmarks::BenchmarkDataset dataset; - Message* message; - std::string dataset_payload = ReadFile(input_file); - GOOGLE_CHECK(dataset.ParseFromString(dataset_payload)) - << "Can' t parse data file " << input_file; - - if (dataset.message_name() == "benchmarks.proto3.GoogleMessage1") { - message = new benchmarks::proto3::GoogleMessage1; - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage1") { - message = new benchmarks::proto2::GoogleMessage1; - } else if (dataset.message_name() == "benchmarks.proto2.GoogleMessage2") { - message = new benchmarks::proto2::GoogleMessage2; - } else if (dataset.message_name() == - "benchmarks.google_message3.GoogleMessage3") { - message = new benchmarks::google_message3::GoogleMessage3; - } else if (dataset.message_name() == - "benchmarks.google_message4.GoogleMessage4") { - message = new benchmarks::google_message4::GoogleMessage4; - } else { - std::cerr << "Unknown message type: " << dataset.message_name(); - exit(1); - } - - for (int i = 0; i < dataset.payload_size(); i++) { - message->ParseFromString(dataset.payload(i)); - Proto3DataStripper stripper; - stripper.StripMessage(message); - dataset.set_payload(i, message->SerializeAsString()); - } - - std::ofstream ofs(output_file); - ofs << dataset.SerializeAsString(); - ofs.close(); - } - - - return 0; -} diff --git a/lib/protobuf/benchmarks/util/protoc-gen-gogoproto.cc b/lib/protobuf/benchmarks/util/protoc-gen-gogoproto.cc deleted file mode 100644 index 9c1b3d0..0000000 --- a/lib/protobuf/benchmarks/util/protoc-gen-gogoproto.cc +++ /dev/null @@ -1,103 +0,0 @@ -#include "google/protobuf/compiler/code_generator.h" -#include "google/protobuf/io/zero_copy_stream.h" -#include "google/protobuf/io/printer.h" -#include "google/protobuf/descriptor.h" -#include "google/protobuf/descriptor.pb.h" -#include "schema_proto2_to_proto3_util.h" - -#include "google/protobuf/compiler/plugin.h" - -using google::protobuf::FileDescriptorProto; -using google::protobuf::FileDescriptor; -using google::protobuf::DescriptorPool; -using google::protobuf::io::Printer; -using google::protobuf::util::SchemaGroupStripper; -using google::protobuf::util::EnumScrubber; - -namespace google { -namespace protobuf { -namespace compiler { - -namespace { - -string StripProto(string filename) { - if (filename.substr(filename.size() - 11) == ".protodevel") { - // .protodevel - return filename.substr(0, filename.size() - 11); - } else { - // .proto - return filename.substr(0, filename.size() - 6); - } -} - -DescriptorPool new_pool_; - -} // namespace - -class GoGoProtoGenerator : public CodeGenerator { - public: - virtual bool GenerateAll(const std::vector& files, - const string& parameter, - GeneratorContext* context, - string* error) const { - for (int i = 0; i < files.size(); i++) { - for (auto file : files) { - bool can_generate = - (new_pool_.FindFileByName(file->name()) == nullptr); - for (int j = 0; j < file->dependency_count(); j++) { - can_generate &= (new_pool_.FindFileByName( - file->dependency(j)->name()) != nullptr); - } - for (int j = 0; j < file->public_dependency_count(); j++) { - can_generate &= (new_pool_.FindFileByName( - file->public_dependency(j)->name()) != nullptr); - } - for (int j = 0; j < file->weak_dependency_count(); j++) { - can_generate &= (new_pool_.FindFileByName( - file->weak_dependency(j)->name()) != nullptr); - } - if (can_generate) { - Generate(file, parameter, context, error); - break; - } - } - } - - return true; - } - - virtual bool Generate(const FileDescriptor* file, - const string& parameter, - GeneratorContext* context, - string* error) const { - FileDescriptorProto new_file; - file->CopyTo(&new_file); - SchemaGroupStripper::StripFile(file, &new_file); - - EnumScrubber enum_scrubber; - enum_scrubber.ScrubFile(&new_file); - - string filename = file->name(); - string basename = StripProto(filename); - - std::vector> option_pairs; - ParseGeneratorParameter(parameter, &option_pairs); - - std::unique_ptr output( - context->Open(basename + ".proto")); - string content = new_pool_.BuildFile(new_file)->DebugString(); - Printer printer(output.get(), '$'); - printer.WriteRaw(content.c_str(), content.size()); - - return true; - } -}; - -} // namespace compiler -} // namespace protobuf -} // namespace google - -int main(int argc, char* argv[]) { - google::protobuf::compiler::GoGoProtoGenerator generator; - return google::protobuf::compiler::PluginMain(argc, argv, &generator); -} diff --git a/lib/protobuf/benchmarks/util/protoc-gen-proto2_to_proto3.cc b/lib/protobuf/benchmarks/util/protoc-gen-proto2_to_proto3.cc deleted file mode 100644 index d0a8902..0000000 --- a/lib/protobuf/benchmarks/util/protoc-gen-proto2_to_proto3.cc +++ /dev/null @@ -1,115 +0,0 @@ -#include "google/protobuf/compiler/code_generator.h" -#include "google/protobuf/io/zero_copy_stream.h" -#include "google/protobuf/io/printer.h" -#include "google/protobuf/descriptor.h" -#include "google/protobuf/descriptor.pb.h" -#include "schema_proto2_to_proto3_util.h" - -#include "google/protobuf/compiler/plugin.h" - -using google::protobuf::FileDescriptorProto; -using google::protobuf::FileDescriptor; -using google::protobuf::DescriptorPool; -using google::protobuf::io::Printer; -using google::protobuf::util::SchemaGroupStripper; -using google::protobuf::util::EnumScrubber; -using google::protobuf::util::ExtensionStripper; -using google::protobuf::util::FieldScrubber; - -namespace google { -namespace protobuf { -namespace compiler { - -namespace { - -string StripProto(string filename) { - return filename.substr(0, filename.rfind(".proto")); -} - -DescriptorPool* GetPool() { - static DescriptorPool *pool = new DescriptorPool(); - return pool; -} - -} // namespace - -class Proto2ToProto3Generator final : public CodeGenerator { - public: - bool GenerateAll(const std::vector& files, - const string& parameter, - GeneratorContext* context, - string* error) const { - for (int i = 0; i < files.size(); i++) { - for (auto file : files) { - if (CanGenerate(file)) { - Generate(file, parameter, context, error); - break; - } - } - } - - return true; - } - - bool Generate(const FileDescriptor* file, - const string& parameter, - GeneratorContext* context, - string* error) const { - FileDescriptorProto new_file; - file->CopyTo(&new_file); - SchemaGroupStripper::StripFile(file, &new_file); - - EnumScrubber enum_scrubber; - enum_scrubber.ScrubFile(&new_file); - ExtensionStripper::StripFile(&new_file); - FieldScrubber::ScrubFile(&new_file); - new_file.set_syntax("proto3"); - - string filename = file->name(); - string basename = StripProto(filename); - - std::vector> option_pairs; - ParseGeneratorParameter(parameter, &option_pairs); - - std::unique_ptr output( - context->Open(basename + ".proto")); - string content = GetPool()->BuildFile(new_file)->DebugString(); - Printer printer(output.get(), '$'); - printer.WriteRaw(content.c_str(), content.size()); - - return true; - } - private: - bool CanGenerate(const FileDescriptor* file) const { - if (GetPool()->FindFileByName(file->name()) != nullptr) { - return false; - } - for (int j = 0; j < file->dependency_count(); j++) { - if (GetPool()->FindFileByName(file->dependency(j)->name()) == nullptr) { - return false; - } - } - for (int j = 0; j < file->public_dependency_count(); j++) { - if (GetPool()->FindFileByName( - file->public_dependency(j)->name()) == nullptr) { - return false; - } - } - for (int j = 0; j < file->weak_dependency_count(); j++) { - if (GetPool()->FindFileByName( - file->weak_dependency(j)->name()) == nullptr) { - return false; - } - } - return true; - } -}; - -} // namespace compiler -} // namespace protobuf -} // namespace google - -int main(int argc, char* argv[]) { - google::protobuf::compiler::Proto2ToProto3Generator generator; - return google::protobuf::compiler::PluginMain(argc, argv, &generator); -} diff --git a/lib/protobuf/benchmarks/util/result_parser.py b/lib/protobuf/benchmarks/util/result_parser.py deleted file mode 100755 index b09f387..0000000 --- a/lib/protobuf/benchmarks/util/result_parser.py +++ /dev/null @@ -1,300 +0,0 @@ -# This import depends on the automake rule protoc_middleman, please make sure -# protoc_middleman has been built before run this file. -import json -import re -import os.path -# BEGIN OPENSOURCE -import sys -sys.path.append(os.path.join(os.path.dirname(os.path.realpath(__file__)), os.pardir)) -# END OPENSOURCE -import tmp.benchmarks_pb2 as benchmarks_pb2 - -__file_size_map = {} - -def __get_data_size(filename): - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + "/../" + filename - if filename in __file_size_map: - return __file_size_map[filename] - benchmark_dataset = benchmarks_pb2.BenchmarkDataset() - benchmark_dataset.ParseFromString( - open(filename, "rb").read()) - size = 0 - count = 0 - for payload in benchmark_dataset.payload: - size += len(payload) - count += 1 - __file_size_map[filename] = (size, 1.0 * size / count) - return size, 1.0 * size / count - - -def __extract_file_name(file_name): - name_list = re.split(r"[/\.]", file_name) - short_file_name = "" - for name in name_list: - if name[:14] == "google_message": - short_file_name = name - return short_file_name - - -__results = [] - - -# CPP results example: -# [ -# "benchmarks": [ -# { -# "bytes_per_second": int, -# "cpu_time_ns": double, -# "iterations": int, -# "name: string, -# "real_time_ns: double, -# ... -# }, -# ... -# ], -# ... -# ] -def __parse_cpp_result(filename): - if filename == "": - return - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + '/' + filename - with open(filename, "rb") as f: - results = json.loads(f.read()) - for benchmark in results["benchmarks"]: - data_filename = "".join( - re.split("(_parse_|_serialize)", benchmark["name"])[0]) - behavior = benchmark["name"][len(data_filename) + 1:] - if data_filename[:2] == "BM": - data_filename = data_filename[3:] - __results.append({ - "language": "cpp", - "dataFilename": data_filename, - "behavior": behavior, - "throughput": benchmark["bytes_per_second"] / 2.0 ** 20 - }) - - -# Synthetic benchmark results example: -# [ -# "benchmarks": [ -# { -# "cpu_time_ns": double, -# "iterations": int, -# "name: string, -# "real_time_ns: double, -# ... -# }, -# ... -# ], -# ... -# ] -def __parse_synthetic_result(filename): - if filename == "": - return - if filename[0] != "/": - filename = os.path.dirname(os.path.abspath(__file__)) + "/" + filename - with open(filename, "rb") as f: - results = json.loads(f.read()) - for benchmark in results["benchmarks"]: - __results.append({ - "language": "cpp", - "dataFilename": "", - "behavior": "synthetic", - "throughput": 10.0**9 / benchmark["cpu_time_ns"] - }) - - -# Python results example: -# [ -# [ -# { -# "filename": string, -# "benchmarks": { -# behavior: results, -# ... -# }, -# }, -# ... -# ], #pure-python -# ... -# ] -def __parse_python_result(filename): - if filename == "": - return - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + '/' + filename - with open(filename, "rb") as f: - results_list = json.loads(f.read()) - for results in results_list: - for result in results: - _, avg_size = __get_data_size(result["filename"]) - for behavior in result["benchmarks"]: - __results.append({ - "language": "python", - "dataFilename": __extract_file_name(result["filename"]), - "behavior": behavior, - "throughput": result["benchmarks"][behavior] - }) - - -# Java results example: -# [ -# { -# "id": string, -# "instrumentSpec": {...}, -# "measurements": [ -# { -# "weight": float, -# "value": { -# "magnitude": float, -# "unit": string -# }, -# ... -# }, -# ... -# ], -# "run": {...}, -# "scenario": { -# "benchmarkSpec": { -# "methodName": string, -# "parameters": { -# defined parameters in the benchmark: parameters value -# }, -# ... -# }, -# ... -# } -# -# }, -# ... -# ] -def __parse_java_result(filename): - if filename == "": - return - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + '/' + filename - with open(filename, "rb") as f: - results = json.loads(f.read()) - for result in results: - total_weight = 0 - total_value = 0 - for measurement in result["measurements"]: - total_weight += measurement["weight"] - total_value += measurement["value"]["magnitude"] - avg_time = total_value * 1.0 / total_weight - total_size, _ = __get_data_size( - result["scenario"]["benchmarkSpec"]["parameters"]["dataFile"]) - __results.append({ - "language": "java", - "throughput": total_size / avg_time * 1e9 / 2 ** 20, - "behavior": result["scenario"]["benchmarkSpec"]["methodName"], - "dataFilename": __extract_file_name( - result["scenario"]["benchmarkSpec"]["parameters"]["dataFile"]) - }) - - -# Go benchmark results: -# -# goos: linux -# goarch: amd64 -# Benchmark/.././datasets/google_message2/dataset.google_message2.pb/Unmarshal-12 3000 705784 ns/op -# Benchmark/.././datasets/google_message2/dataset.google_message2.pb/Marshal-12 2000 634648 ns/op -# Benchmark/.././datasets/google_message2/dataset.google_message2.pb/Size-12 5000 244174 ns/op -# Benchmark/.././datasets/google_message2/dataset.google_message2.pb/Clone-12 300 4120954 ns/op -# Benchmark/.././datasets/google_message2/dataset.google_message2.pb/Merge-12 300 4108632 ns/op -# PASS -# ok _/usr/local/google/home/yilunchong/mygit/protobuf/benchmarks 124.173s -def __parse_go_result(filename): - if filename == "": - return - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + '/' + filename - with open(filename, "rb") as f: - for line in f: - result_list = re.split(r"[\ \t]+", line) - if result_list[0][:9] != "Benchmark": - continue - first_slash_index = result_list[0].find('/') - last_slash_index = result_list[0].rfind('/') - full_filename = result_list[0][first_slash_index+1:last_slash_index] - total_bytes, _ = __get_data_size(full_filename) - behavior_with_suffix = result_list[0][last_slash_index+1:] - last_dash = behavior_with_suffix.rfind("-") - if last_dash == -1: - behavior = behavior_with_suffix - else: - behavior = behavior_with_suffix[:last_dash] - __results.append({ - "dataFilename": __extract_file_name(full_filename), - "throughput": total_bytes / float(result_list[2]) * 1e9 / 2 ** 20, - "behavior": behavior, - "language": "go" - }) - - -# Self built json results example: -# -# [ -# { -# "filename": string, -# "benchmarks": { -# behavior: results, -# ... -# }, -# }, -# ... -# ] -def __parse_custom_result(filename, language): - if filename == "": - return - if filename[0] != '/': - filename = os.path.dirname(os.path.abspath(__file__)) + '/' + filename - with open(filename, "rb") as f: - results = json.loads(f.read()) - for result in results: - _, avg_size = __get_data_size(result["filename"]) - for behavior in result["benchmarks"]: - __results.append({ - "language": language, - "dataFilename": __extract_file_name(result["filename"]), - "behavior": behavior, - "throughput": result["benchmarks"][behavior] - }) - - -def __parse_js_result(filename, language): - return __parse_custom_result(filename, language) - -def __parse_php_result(filename, language): - return __parse_custom_result(filename, language) - - -def get_result_from_file(cpp_file="", - java_file="", - python_file="", - go_file="", - synthetic_file="", - node_file="", - php_c_file="", - php_file=""): - results = {} - if cpp_file != "": - __parse_cpp_result(cpp_file) - if java_file != "": - __parse_java_result(java_file) - if python_file != "": - __parse_python_result(python_file) - if go_file != "": - __parse_go_result(go_file) - if synthetic_file != "": - __parse_synthetic_result(synthetic_file) - if node_file != "": - __parse_js_result(node_file, "node") - if php_file != "": - __parse_php_result(php_file, "php") - if php_c_file != "": - __parse_php_result(php_c_file, "php") - - return __results diff --git a/lib/protobuf/benchmarks/util/result_uploader.py b/lib/protobuf/benchmarks/util/result_uploader.py deleted file mode 100755 index 2a35d96..0000000 --- a/lib/protobuf/benchmarks/util/result_uploader.py +++ /dev/null @@ -1,107 +0,0 @@ -from __future__ import print_function -from __future__ import absolute_import -import argparse -import os -import re -import copy -import uuid -import calendar -import time -import datetime - -from util import big_query_utils -from util import result_parser - -_PROJECT_ID = 'grpc-testing' -_DATASET = 'protobuf_benchmark_result' -_TABLE = 'opensource_result_v2' -_NOW = "%d%02d%02d" % (datetime.datetime.now().year, - datetime.datetime.now().month, - datetime.datetime.now().day) - -_INITIAL_TIME = calendar.timegm(time.gmtime()) - -def get_metadata(): - build_number = os.getenv('BUILD_NUMBER') - build_url = os.getenv('BUILD_URL') - job_name = os.getenv('JOB_NAME') - git_commit = os.getenv('GIT_COMMIT') - # actual commit is the actual head of PR that is getting tested - git_actual_commit = os.getenv('ghprbActualCommit') - - utc_timestamp = str(calendar.timegm(time.gmtime())) - metadata = {'created': utc_timestamp} - - if build_number: - metadata['buildNumber'] = build_number - if build_url: - metadata['buildUrl'] = build_url - if job_name: - metadata['jobName'] = job_name - if git_commit: - metadata['gitCommit'] = git_commit - if git_actual_commit: - metadata['gitActualCommit'] = git_actual_commit - - return metadata - - -def upload_result(result_list, metadata): - for result in result_list: - new_result = {} - new_result["metric"] = "throughput" - new_result["value"] = result["throughput"] - new_result["unit"] = "MB/s" - new_result["test"] = "protobuf_benchmark" - new_result["product_name"] = "protobuf" - labels_string = "" - for key in result: - labels_string += ",|%s:%s|" % (key, result[key]) - new_result["labels"] = labels_string[1:] - new_result["timestamp"] = _INITIAL_TIME - print(labels_string) - - bq = big_query_utils.create_big_query() - row = big_query_utils.make_row(str(uuid.uuid4()), new_result) - if not big_query_utils.insert_rows(bq, _PROJECT_ID, _DATASET, - _TABLE + "$" + _NOW, - [row]): - print('Error when uploading result', new_result) - - -if __name__ == "__main__": - parser = argparse.ArgumentParser() - parser.add_argument("-cpp", "--cpp_input_file", - help="The CPP benchmark result file's name", - default="") - parser.add_argument("-java", "--java_input_file", - help="The Java benchmark result file's name", - default="") - parser.add_argument("-python", "--python_input_file", - help="The Python benchmark result file's name", - default="") - parser.add_argument("-go", "--go_input_file", - help="The golang benchmark result file's name", - default="") - parser.add_argument("-node", "--node_input_file", - help="The node.js benchmark result file's name", - default="") - parser.add_argument("-php", "--php_input_file", - help="The pure php benchmark result file's name", - default="") - parser.add_argument("-php_c", "--php_c_input_file", - help="The php with c ext benchmark result file's name", - default="") - args = parser.parse_args() - - metadata = get_metadata() - print("uploading results...") - upload_result(result_parser.get_result_from_file( - cpp_file=args.cpp_input_file, - java_file=args.java_input_file, - python_file=args.python_input_file, - go_file=args.go_input_file, - node_file=args.node_input_file, - php_file=args.php_input_file, - php_c_file=args.php_c_input_file, - ), metadata) diff --git a/lib/protobuf/benchmarks/util/schema_proto2_to_proto3_util.h b/lib/protobuf/benchmarks/util/schema_proto2_to_proto3_util.h deleted file mode 100644 index 0079f6f..0000000 --- a/lib/protobuf/benchmarks/util/schema_proto2_to_proto3_util.h +++ /dev/null @@ -1,194 +0,0 @@ -#ifndef PROTOBUF_BENCHMARKS_UTIL_SCHEMA_PROTO2_TO_PROTO3_UTIL_H_ -#define PROTOBUF_BENCHMARKS_UTIL_SCHEMA_PROTO2_TO_PROTO3_UTIL_H_ - -#include "google/protobuf/message.h" -#include "google/protobuf/descriptor.h" -#include "google/protobuf/descriptor.pb.h" - -#include -#include - -using google::protobuf::Descriptor; -using google::protobuf::DescriptorProto; -using google::protobuf::FileDescriptorProto; -using google::protobuf::FieldDescriptorProto; -using google::protobuf::Message; -using google::protobuf::EnumValueDescriptorProto; - -namespace google { -namespace protobuf { -namespace util { - -class SchemaGroupStripper { - - public: - static void StripFile(const FileDescriptor* old_file, - FileDescriptorProto *file) { - for (int i = file->mutable_message_type()->size() - 1; i >= 0; i--) { - if (IsMessageSet(old_file->message_type(i))) { - file->mutable_message_type()->DeleteSubrange(i, 1); - continue; - } - StripMessage(old_file->message_type(i), file->mutable_message_type(i)); - } - for (int i = file->mutable_extension()->size() - 1; i >= 0; i--) { - auto field = old_file->extension(i); - if (field->type() == FieldDescriptor::TYPE_GROUP || - IsMessageSet(field->message_type()) || - IsMessageSet(field->containing_type())) { - file->mutable_extension()->DeleteSubrange(i, 1); - } - } - } - - private: - static bool IsMessageSet(const Descriptor *descriptor) { - if (descriptor != nullptr - && descriptor->options().message_set_wire_format()) { - return true; - } - return false; - } - - static void StripMessage(const Descriptor *old_message, - DescriptorProto *new_message) { - for (int i = new_message->mutable_field()->size() - 1; i >= 0; i--) { - if (old_message->field(i)->type() == FieldDescriptor::TYPE_GROUP || - IsMessageSet(old_message->field(i)->message_type())) { - new_message->mutable_field()->DeleteSubrange(i, 1); - } - } - for (int i = new_message->mutable_extension()->size() - 1; i >= 0; i--) { - auto field_type_name = new_message->mutable_extension(i)->type_name(); - if (old_message->extension(i)->type() == FieldDescriptor::TYPE_GROUP || - IsMessageSet(old_message->extension(i)->containing_type()) || - IsMessageSet(old_message->extension(i)->message_type())) { - new_message->mutable_extension()->DeleteSubrange(i, 1); - } - } - for (int i = 0; i < new_message->mutable_nested_type()->size(); i++) { - StripMessage(old_message->nested_type(i), - new_message->mutable_nested_type(i)); - } - } - -}; - -class EnumScrubber { - - public: - EnumScrubber() - : total_added_(0) { - } - - void ScrubFile(FileDescriptorProto *file) { - for (int i = 0; i < file->enum_type_size(); i++) { - ScrubEnum(file->mutable_enum_type(i)); - } - for (int i = 0; i < file->mutable_message_type()->size(); i++) { - ScrubMessage(file->mutable_message_type(i)); - } - } - - private: - void ScrubEnum(EnumDescriptorProto *enum_type) { - if (enum_type->value(0).number() != 0) { - bool has_zero = false; - for (int j = 0; j < enum_type->value().size(); j++) { - if (enum_type->value(j).number() == 0) { - EnumValueDescriptorProto temp_enum_value; - temp_enum_value.CopyFrom(enum_type->value(j)); - enum_type->mutable_value(j)->CopyFrom(enum_type->value(0)); - enum_type->mutable_value(0)->CopyFrom(temp_enum_value); - has_zero = true; - break; - } - } - if (!has_zero) { - enum_type->mutable_value()->Add(); - for (int i = enum_type->mutable_value()->size() - 1; i > 0; i--) { - enum_type->mutable_value(i)->CopyFrom( - *enum_type->mutable_value(i - 1)); - } - enum_type->mutable_value(0)->set_number(0); - enum_type->mutable_value(0)->set_name("ADDED_ZERO_VALUE_" + - std::to_string(total_added_++)); - } - } - - } - - void ScrubMessage(DescriptorProto *message_type) { - for (int i = 0; i < message_type->mutable_enum_type()->size(); i++) { - ScrubEnum(message_type->mutable_enum_type(i)); - } - for (int i = 0; i < message_type->mutable_nested_type()->size(); i++) { - ScrubMessage(message_type->mutable_nested_type(i)); - } - } - - int total_added_; -}; - -class ExtensionStripper { - public: - static void StripFile(FileDescriptorProto *file) { - for (int i = 0; i < file->mutable_message_type()->size(); i++) { - StripMessage(file->mutable_message_type(i)); - } - file->mutable_extension()->Clear(); - } - private: - static void StripMessage(DescriptorProto *message_type) { - message_type->mutable_extension()->Clear(); - message_type->clear_extension_range(); - for (int i = 0; i < message_type->mutable_nested_type()->size(); i++) { - StripMessage(message_type->mutable_nested_type(i)); - } - } -}; - - -class FieldScrubber { - public: - static void ScrubFile(FileDescriptorProto *file) { - for (int i = 0; i < file->mutable_message_type()->size(); i++) { - ScrubMessage(file->mutable_message_type(i)); - } - for (int i = 0; i < file->mutable_extension()->size(); i++) { - file->mutable_extension(i)->clear_default_value(); - if (ShouldClearLabel(file->mutable_extension(i))) { - file->mutable_extension(i)->clear_label(); - } - } - } - private: - static bool ShouldClearLabel(const FieldDescriptorProto *field) { - return field->label() == FieldDescriptorProto::LABEL_REQUIRED; - } - - static void ScrubMessage(DescriptorProto *message_type) { - message_type->mutable_extension()->Clear(); - for (int i = 0; i < message_type->mutable_extension()->size(); i++) { - message_type->mutable_extension(i)->clear_default_value(); - if (ShouldClearLabel(message_type->mutable_extension(i))) { - message_type->mutable_extension(i)->clear_label(); - } - } - for (int i = 0; i < message_type->mutable_field()->size(); i++) { - message_type->mutable_field(i)->clear_default_value(); - if (ShouldClearLabel(message_type->mutable_field(i))) { - message_type->mutable_field(i)->clear_label(); - } - } - for (int i = 0; i < message_type->mutable_nested_type()->size(); i++) { - ScrubMessage(message_type->mutable_nested_type(i)); - } - } -}; - -} // namespace util -} // namespace protobuf -} // namespace google - -#endif // PROTOBUF_BENCHMARKS_UTIL_SCHEMA_PROTO2_TO_PROTO3_UTIL_H_ diff --git a/lib/protobuf/build.gradle b/lib/protobuf/build.gradle deleted file mode 100644 index 273f6a4..0000000 --- a/lib/protobuf/build.gradle +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -apply plugin: 'java' - -configurations { - micro - nano - lite -} - -sourceSets { - - micro { - java { - srcDirs = ['javamicro/src/main/java/'] - include("com/google/protobuf/micro/*") - } - } - - lite { - java { - srcDirs = ['java/core/src/main/java/'] - include 'com/google/protobuf/AbstractMessageLite.java' - include 'com/google/protobuf/AbstractParser.java' - include 'com/google/protobuf/AbstractProtobufList.java' - include 'com/google/protobuf/ByteOutput.java' - include 'com/google/protobuf/ByteString.java' - include 'com/google/protobuf/BooleanArrayList.java' - include 'com/google/protobuf/CodedInputStream.java' - include 'com/google/protobuf/CodedOutputStream.java' - include 'com/google/protobuf/DoubleArrayList.java' - include 'com/google/protobuf/ExperimentalApi.java' - include 'com/google/protobuf/ExtensionLite.java' - include 'com/google/protobuf/ExtensionRegistryLite.java' - include 'com/google/protobuf/FieldSet.java' - include 'com/google/protobuf/FloatArrayList.java' - include 'com/google/protobuf/GeneratedMessageLite.java' - include 'com/google/protobuf/IntArrayList.java' - include 'com/google/protobuf/Internal.java' - include 'com/google/protobuf/InvalidProtocolBufferException.java' - include 'com/google/protobuf/LazyField.java' - include 'com/google/protobuf/LazyFieldLite.java' - include 'com/google/protobuf/LazyStringArrayList.java' - include 'com/google/protobuf/LazyStringList.java' - include 'com/google/protobuf/LongArrayList.java' - include 'com/google/protobuf/MapFieldLite.java' - include 'com/google/protobuf/MessageLite.java' - include 'com/google/protobuf/MessageLiteToString.java' - include 'com/google/protobuf/MessageLiteOrBuilder.java' - include 'com/google/protobuf/MutabilityOracle.java' - include 'com/google/protobuf/Parser.java' - include 'com/google/protobuf/ProtobufArrayList.java' - include 'com/google/protobuf/ProtocolStringList.java' - include 'com/google/protobuf/RopeByteString.java' - include 'com/google/protobuf/SmallSortedMap.java' - include 'com/google/protobuf/TextFormatEscaper.java' - include 'com/google/protobuf/UninitializedMessageException.java' - include 'com/google/protobuf/UnknownFieldSetLite.java' - include 'com/google/protobuf/UnmodifiableLazyStringList.java' - include 'com/google/protobuf/Utf8.java' - include 'com/google/protobuf/WireFormat.java' - } - } - - nano { - java { - srcDirs = [ - 'javanano/src/main/java/', - 'javanano/src/device/main/java/' - ] - include("com/google/protobuf/nano/**") - } - } -} - -if (project == rootProject) { - ext.getAndroidPrebuilt = { apiLevel -> - files("$rootDir/../../prebuilts/sdk/$apiLevel/public/android.jar") - } -} - -dependencies { - compile getAndroidPrebuilt('8') - nanoCompile getAndroidPrebuilt('8') -} - -jar { - from sourceSets.nano.output, sourceSets.micro.output - baseName "libprotobuf" - appendix "java" - version "3.0" - classifier "micronano" -} - -task nanoJar(type: Jar) { - from sourceSets.nano.output - dependsOn nanoClasses - baseName "libprotobuf" - appendix "java" - version "3.0" - classifier "nano" -} - -task microJar(type: Jar) { - from sourceSets.micro.output - dependsOn microClasses - baseName "libprotobuf" - appendix "java" - version "3.0" - classifier "micro" -} - -task liteJar(type: Jar) { - from sourceSets.lite.output - dependsOn liteClasses - baseName "libprotobuf" - appendix "java" - version "3.0" - classifier "lite" -} - -artifacts { - micro microJar - nano nanoJar - lite liteJar -} - diff --git a/lib/protobuf/cmake/CMakeLists.txt b/lib/protobuf/cmake/CMakeLists.txt deleted file mode 100644 index ebc7b0c..0000000 --- a/lib/protobuf/cmake/CMakeLists.txt +++ /dev/null @@ -1,240 +0,0 @@ -# Minimum CMake required -cmake_minimum_required(VERSION 3.1.3) - -if(protobuf_VERBOSE) - message(STATUS "Protocol Buffers Configuring...") -endif() - -# CMake policies -cmake_policy(SET CMP0022 NEW) -# On MacOS use @rpath/ for target's install name prefix path -if (POLICY CMP0042) - cmake_policy(SET CMP0042 NEW) -endif () -# Clear VERSION variables when no VERSION is given to project() -if(POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) -endif() - -# Project -project(protobuf C CXX) - -# Add c++11 flags -if (CYGWIN) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11") -else() - set(CMAKE_CXX_STANDARD 11) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CXX_EXTENSIONS OFF) -endif() - -# Options -option(protobuf_BUILD_TESTS "Build tests" ON) -option(protobuf_BUILD_CONFORMANCE "Build conformance tests" OFF) -option(protobuf_BUILD_EXAMPLES "Build examples" OFF) -option(protobuf_BUILD_PROTOC_BINARIES "Build libprotoc and protoc compiler" ON) -if (BUILD_SHARED_LIBS) - set(protobuf_BUILD_SHARED_LIBS_DEFAULT ON) -else (BUILD_SHARED_LIBS) - set(protobuf_BUILD_SHARED_LIBS_DEFAULT OFF) -endif (BUILD_SHARED_LIBS) -option(protobuf_BUILD_SHARED_LIBS "Build Shared Libraries" ${protobuf_BUILD_SHARED_LIBS_DEFAULT}) -include(CMakeDependentOption) -cmake_dependent_option(protobuf_MSVC_STATIC_RUNTIME "Link static runtime libraries" ON - "NOT protobuf_BUILD_SHARED_LIBS" OFF) -set(protobuf_WITH_ZLIB_DEFAULT ON) -option(protobuf_WITH_ZLIB "Build with zlib support" ${protobuf_WITH_ZLIB_DEFAULT}) -set(protobuf_DEBUG_POSTFIX "d" - CACHE STRING "Default debug postfix") -mark_as_advanced(protobuf_DEBUG_POSTFIX) -# User options -include(protobuf-options.cmake) - -# Path to main configure script -set(protobuf_CONFIGURE_SCRIPT "../configure.ac") - -# Parse configure script -set(protobuf_AC_INIT_REGEX - "^AC_INIT\\(\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\],\\[([^]]+)\\]\\)$") -file(STRINGS "${protobuf_CONFIGURE_SCRIPT}" protobuf_AC_INIT_LINE - LIMIT_COUNT 1 REGEX "^AC_INIT") -# Description -string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\1" - protobuf_DESCRIPTION "${protobuf_AC_INIT_LINE}") -# Version -string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\2" - protobuf_VERSION_STRING "${protobuf_AC_INIT_LINE}") -# Contact -string(REGEX REPLACE "${protobuf_AC_INIT_REGEX}" "\\3" - protobuf_CONTACT "${protobuf_AC_INIT_LINE}") -# Parse version tweaks -set(protobuf_VERSION_REGEX "^([0-9]+)\\.([0-9]+)\\.([0-9]+)([-]rc[-]|\\.)?([0-9]*)$") -string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\1" - protobuf_VERSION_MAJOR "${protobuf_VERSION_STRING}") -string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\2" - protobuf_VERSION_MINOR "${protobuf_VERSION_STRING}") -string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\3" - protobuf_VERSION_PATCH "${protobuf_VERSION_STRING}") -string(REGEX REPLACE "${protobuf_VERSION_REGEX}" "\\5" - protobuf_VERSION_PRERELEASE "${protobuf_VERSION_STRING}") - -message(STATUS "${protobuf_VERSION_PRERELEASE}") - -# Package version -set(protobuf_VERSION - "${protobuf_VERSION_MAJOR}.${protobuf_VERSION_MINOR}.${protobuf_VERSION_PATCH}") - -if(protobuf_VERSION_PRERELEASE) - set(protobuf_VERSION "${protobuf_VERSION}.${protobuf_VERSION_PRERELEASE}") -else() - set(protobuf_VERSION "${protobuf_VERSION}.0") -endif() -message(STATUS "${protobuf_VERSION}") - -if(protobuf_VERBOSE) - message(STATUS "Configuration script parsing status [") - message(STATUS " Description : ${protobuf_DESCRIPTION}") - message(STATUS " Version : ${protobuf_VERSION} (${protobuf_VERSION_STRING})") - message(STATUS " Contact : ${protobuf_CONTACT}") - message(STATUS "]") -endif() - -add_definitions(-DGOOGLE_PROTOBUF_CMAKE_BUILD) - -find_package(Threads REQUIRED) -if (CMAKE_USE_PTHREADS_INIT) - add_definitions(-DHAVE_PTHREAD) -endif (CMAKE_USE_PTHREADS_INIT) - -set(_protobuf_FIND_ZLIB) -if (protobuf_WITH_ZLIB) - find_package(ZLIB) - if (ZLIB_FOUND) - set(HAVE_ZLIB 1) - # FindZLIB module define ZLIB_INCLUDE_DIRS variable - # Set ZLIB_INCLUDE_DIRECTORIES for compatible - set(ZLIB_INCLUDE_DIRECTORIES ${ZLIB_INCLUDE_DIRECTORIES} ${ZLIB_INCLUDE_DIRS}) - # Using imported target if exists - if (TARGET ZLIB::ZLIB) - set(ZLIB_LIBRARIES ZLIB::ZLIB) - set(_protobuf_FIND_ZLIB "if(NOT ZLIB_FOUND)\n find_package(ZLIB)\nendif()") - endif (TARGET ZLIB::ZLIB) - else (ZLIB_FOUND) - set(HAVE_ZLIB 0) - # Explicitly set these to empty (override NOT_FOUND) so cmake doesn't - # complain when we use them later. - set(ZLIB_INCLUDE_DIRECTORIES) - set(ZLIB_LIBRARIES) - endif (ZLIB_FOUND) -endif (protobuf_WITH_ZLIB) - -if (HAVE_ZLIB) - add_definitions(-DHAVE_ZLIB) -endif (HAVE_ZLIB) - -if (protobuf_BUILD_SHARED_LIBS) - set(protobuf_SHARED_OR_STATIC "SHARED") -else (protobuf_BUILD_SHARED_LIBS) - set(protobuf_SHARED_OR_STATIC "STATIC") - # In case we are building static libraries, link also the runtime library statically - # so that MSVCR*.DLL is not required at runtime. - # https://msdn.microsoft.com/en-us/library/2kzt1wy3.aspx - # This is achieved by replacing msvc option /MD with /MT and /MDd with /MTd - # http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F - if (MSVC AND protobuf_MSVC_STATIC_RUNTIME) - foreach(flag_var - CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) - if(${flag_var} MATCHES "/MD") - string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endif(${flag_var} MATCHES "/MD") - endforeach(flag_var) - endif (MSVC AND protobuf_MSVC_STATIC_RUNTIME) -endif (protobuf_BUILD_SHARED_LIBS) - -if (MSVC) - # Build with multiple processes - add_definitions(/MP) - # MSVC warning suppressions - add_definitions( - /wd4018 # 'expression' : signed/unsigned mismatch - /wd4065 # switch statement contains 'default' but no 'case' labels - /wd4146 # unary minus operator applied to unsigned type, result still unsigned - /wd4244 # 'conversion' conversion from 'type1' to 'type2', possible loss of data - /wd4251 # 'identifier' : class 'type' needs to have dll-interface to be used by clients of class 'type2' - /wd4267 # 'var' : conversion from 'size_t' to 'type', possible loss of data - /wd4305 # 'identifier' : truncation from 'type1' to 'type2' - /wd4307 # 'operator' : integral constant overflow - /wd4309 # 'conversion' : truncation of constant value - /wd4334 # 'operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?) - /wd4355 # 'this' : used in base member initializer list - /wd4506 # no definition for inline function 'function' - /wd4800 # 'type' : forcing value to bool 'true' or 'false' (performance warning) - /wd4996 # The compiler encountered a deprecated declaration. - ) - # Allow big object - add_definitions(/bigobj) - string(REPLACE "/" "\\" PROTOBUF_SOURCE_WIN32_PATH ${protobuf_SOURCE_DIR}) - string(REPLACE "/" "\\" PROTOBUF_BINARY_WIN32_PATH ${protobuf_BINARY_DIR}) - string(REPLACE "." "," protobuf_RC_FILEVERSION "${protobuf_VERSION}") - configure_file(extract_includes.bat.in extract_includes.bat) - - # Suppress linker warnings about files with no symbols defined. - set(CMAKE_STATIC_LINKER_FLAGS /ignore:4221) - - # Configure Resource Compiler - enable_language(RC) - # use English language (0x409) in resource compiler - set(rc_flags "/l0x409") - # fix rc.exe invocations because of usage of add_definitions() - set(CMAKE_RC_COMPILE_OBJECT " ${rc_flags} /fo ") - - configure_file(version.rc.in ${CMAKE_CURRENT_BINARY_DIR}/version.rc @ONLY) -endif (MSVC) - - -get_filename_component(protobuf_source_dir ${protobuf_SOURCE_DIR} PATH) - -include_directories( - ${ZLIB_INCLUDE_DIRECTORIES} - ${protobuf_BINARY_DIR} - ${protobuf_source_dir}/android - ${protobuf_source_dir}/src) - -if (MSVC) - # Add the "lib" prefix for generated .lib outputs. - set(LIB_PREFIX lib) -else (MSVC) - # When building with "make", "lib" prefix will be added automatically by - # the build tool. - set(LIB_PREFIX) -endif (MSVC) - -if (protobuf_UNICODE) - add_definitions(-DUNICODE -D_UNICODE) -endif (protobuf_UNICODE) - -include(libprotobuf-lite.cmake) -include(libprotobuf.cmake) -if (protobuf_BUILD_PROTOC_BINARIES) - include(libprotoc.cmake) - include(protoc.cmake) -endif (protobuf_BUILD_PROTOC_BINARIES) - -if (protobuf_BUILD_TESTS) - include(tests.cmake) -endif (protobuf_BUILD_TESTS) - -if (protobuf_BUILD_CONFORMANCE) - include(conformance.cmake) -endif (protobuf_BUILD_CONFORMANCE) - -include(install.cmake) - -if (protobuf_BUILD_EXAMPLES) - include(examples.cmake) -endif (protobuf_BUILD_EXAMPLES) - -if(protobuf_VERBOSE) - message(STATUS "Protocol Buffers Configuring done") -endif() diff --git a/lib/protobuf/cmake/README.md b/lib/protobuf/cmake/README.md deleted file mode 100644 index 96aaf4f..0000000 --- a/lib/protobuf/cmake/README.md +++ /dev/null @@ -1,345 +0,0 @@ -This directory contains *CMake* files that can be used to build protobuf -with *MSVC* on *Windows*. You can build the project from *Command Prompt* -and using an *Visual Studio* IDE. - -You need to have [CMake](http://www.cmake.org), [Visual Studio](https://www.visualstudio.com) -and optionally [Git](http://git-scm.com) installed on your computer before proceeding. - -Most of the instructions will be given to the *Сommand Prompt*, but the same -actions can be performed using appropriate GUI tools. - -Environment Setup -================= - -Open the appropriate *Command Prompt* from the *Start* menu. - -For example *VS2013 x64 Native Tools Command Prompt*: - - C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64> - -Change to your working directory: - - C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64>cd C:\Path\to - C:\Path\to> - -Where *C:\Path\to* is path to your real working directory. - -Create a folder where protobuf headers/libraries/binaries will be installed after built: - - C:\Path\to>mkdir install - -If *cmake* command is not available from *Command Prompt*, add it to system *PATH* variable: - - C:\Path\to>set PATH=%PATH%;C:\Program Files (x86)\CMake\bin - -If *git* command is not available from *Command Prompt*, add it to system *PATH* variable: - - C:\Path\to>set PATH=%PATH%;C:\Program Files\Git\cmd - -Good. Now you are ready to continue. - -Getting Sources -=============== - -You can get the latest stable source packages from the release page: - - https://github.com/protocolbuffers/protobuf/releases/latest - -For example: if you only need C++, download `protobuf-cpp-[VERSION].tar.gz`; if -you need C++ and Java, download `protobuf-java-[VERSION].tar.gz` (every package -contains C++ source already); if you need C++ and multiple other languages, -download `protobuf-all-[VERSION].tar.gz`. - -Or you can use git to clone from protobuf git repository. - - C:\Path\to> git clone -b [release_tag] https://github.com/protocolbuffers/protobuf.git - -Where *[release_tag]* is a git tag like *v3.0.0-beta-1* or a branch name like *master* -if you want to get the latest code. - -Go to the project folder: - - C:\Path\to>cd protobuf - C:\Path\to\protobuf> - -Remember to update any submodules if you are using git clone (you can skip this -step if you are using a release .tar.gz or .zip package): - -```console -C:\Path\to> git submodule update --init --recursive -``` - -Now go to *cmake* folder in protobuf sources: - - C:\Path\to\protobuf>cd cmake - C:\Path\to\protobuf\cmake> - -Good. Now you are ready to *CMake* configuration. - -CMake Configuration -=================== - -*CMake* supports a lot of different -[generators](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html) -for various native build systems. -We are only interested in -[Makefile](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html#makefile-generators) -and -[Visual Studio](http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators) -generators. - -We will use shadow building to separate the temporary files from the protobuf source code. - -Create a temporary *build* folder and change your working directory to it: - - C:\Path\to\protobuf\cmake>mkdir build & cd build - C:\Path\to\protobuf\cmake\build> - -The *Makefile* generator can build the project in only one configuration, so you need to build -a separate folder for each configuration. - -To start using a *Release* configuration: - - C:\Path\to\protobuf\cmake\build>mkdir release & cd release - C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^ - -DCMAKE_BUILD_TYPE=Release ^ - -DCMAKE_INSTALL_PREFIX=../../../../install ^ - ../.. - -It will generate *nmake* *Makefile* in current directory. - -To use *Debug* configuration: - - C:\Path\to\protobuf\cmake\build>mkdir debug & cd debug - C:\Path\to\protobuf\cmake\build\debug>cmake -G "NMake Makefiles" ^ - -DCMAKE_BUILD_TYPE=Debug ^ - -DCMAKE_INSTALL_PREFIX=../../../../install ^ - ../.. - -It will generate *nmake* *Makefile* in current directory. - -To create *Visual Studio* solution file: - - C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution - C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 14 2015 Win64" ^ - -DCMAKE_INSTALL_PREFIX=../../../../install ^ - ../.. - -It will generate *Visual Studio* solution file *protobuf.sln* in current directory. - -If the *gmock* directory does not exist, and you do not want to build protobuf unit tests, -you need to add *cmake* command argument `-Dprotobuf_BUILD_TESTS=OFF` to disable testing. - -To make a *Visual Studio* file for Visual Studio 15 2017, create the *Visual Studio* -solution file above and edit the CmakeCache file. - - C:Path\to\protobuf\cmake\build\solution\CMakeCache - -Then create the *Visual Studio* solution file again - -Compiling -========= - -To compile protobuf: - - C:\Path\to\protobuf\cmake\build\release>nmake - -or - - C:\Path\to\protobuf\cmake\build\debug>nmake - -And wait for the compilation to finish. - -If you prefer to use the IDE: - - * Open the generated protobuf.sln file in Microsoft Visual Studio. - * Choose "Debug" or "Release" configuration as desired. - * From the Build menu, choose "Build Solution". - -And wait for the compilation to finish. - -Testing -======= - -To run unit-tests, first you must compile protobuf as described above. -Then run: - - C:\Path\to\protobuf\cmake\build\release>nmake check - -or - - C:\Path\to\protobuf\cmake\build\debug>nmake check - -You can also build project *check* from Visual Studio solution. -Yes, it may sound strange, but it works. - -You should see output similar to: - - Running main() from gmock_main.cc - [==========] Running 1546 tests from 165 test cases. - - ... - - [==========] 1546 tests from 165 test cases ran. (2529 ms total) - [ PASSED ] 1546 tests. - -To run specific tests: - - C:\Path\to\protobuf>cmake\build\release\tests.exe --gtest_filter=AnyTest* - Running main() from gmock_main.cc - Note: Google Test filter = AnyTest* - [==========] Running 3 tests from 1 test case. - [----------] Global test environment set-up. - [----------] 3 tests from AnyTest - [ RUN ] AnyTest.TestPackAndUnpack - [ OK ] AnyTest.TestPackAndUnpack (0 ms) - [ RUN ] AnyTest.TestPackAndUnpackAny - [ OK ] AnyTest.TestPackAndUnpackAny (0 ms) - [ RUN ] AnyTest.TestIs - [ OK ] AnyTest.TestIs (0 ms) - [----------] 3 tests from AnyTest (1 ms total) - - [----------] Global test environment tear-down - [==========] 3 tests from 1 test case ran. (2 ms total) - [ PASSED ] 3 tests. - -Note that the tests must be run from the source folder. - -If all tests are passed, safely continue. - -Installing -========== - -To install protobuf to the specified *install* folder: - - C:\Path\to\protobuf\cmake\build\release>nmake install - -or - - C:\Path\to\protobuf\cmake\build\debug>nmake install - -You can also build project *INSTALL* from Visual Studio solution. -It sounds not so strange and it works. - -This will create the following folders under the *install* location: - * bin - that contains protobuf *protoc.exe* compiler; - * include - that contains C++ headers and protobuf *.proto files; - * lib - that contains linking libraries and *CMake* configuration files for *protobuf* package. - -Now you can if needed: - * Copy the contents of the include directory to wherever you want to put headers. - * Copy protoc.exe wherever you put build tools (probably somewhere in your PATH). - * Copy linking libraries libprotobuf[d].lib, libprotobuf-lite[d].lib, and libprotoc[d].lib wherever you put libraries. - -To avoid conflicts between the MSVC debug and release runtime libraries, when -compiling a debug build of your application, you may need to link against a -debug build of libprotobufd.lib with "d" postfix. Similarly, release builds should link against -release libprotobuf.lib library. - -DLLs vs. static linking -======================= - -Static linking is now the default for the Protocol Buffer libraries. Due to -issues with Win32's use of a separate heap for each DLL, as well as binary -compatibility issues between different versions of MSVC's STL library, it is -recommended that you use static linkage only. However, it is possible to -build libprotobuf and libprotoc as DLLs if you really want. To do this, -do the following: - - * Add an additional flag `-Dprotobuf_BUILD_SHARED_LIBS=ON` when invoking cmake - * Follow the same steps as described in the above section. - * When compiling your project, make sure to `#define PROTOBUF_USE_DLLS`. - -When distributing your software to end users, we strongly recommend that you -do NOT install libprotobuf.dll or libprotoc.dll to any shared location. -Instead, keep these libraries next to your binaries, in your application's -own install directory. C++ makes it very difficult to maintain binary -compatibility between releases, so it is likely that future versions of these -libraries will *not* be usable as drop-in replacements. - -If your project is itself a DLL intended for use by third-party software, we -recommend that you do NOT expose protocol buffer objects in your library's -public interface, and that you statically link protocol buffers into your -library. - -ZLib support -============ - -If you want to include GzipInputStream and GzipOutputStream -(google/protobuf/io/gzip_stream.h) in libprotobuf, you will need to do a few -additional steps. - -Obtain a copy of the zlib library. The pre-compiled DLL at zlib.net works. -You need prepare it: - - * Make sure zlib's two headers are in your `C:\Path\to\install\include` path - * Make sure zlib's linking libraries (*.lib file) is in your - `C:\Path\to\install\lib` library path. - -You can also compile it from source by yourself. - -Getting sources: - - C:\Path\to>git clone -b v1.2.8 https://github.com/madler/zlib.git - C:\Path\to>cd zlib - -Compiling and Installing: - - C:\Path\to\zlib>mkdir build & cd build - C:\Path\to\zlib\build>mkdir release & cd release - C:\Path\to\zlib\build\release>cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release ^ - -DCMAKE_INSTALL_PREFIX=../../../install ../.. - C:\Path\to\zlib\build\release>nmake & nmake install - -You can make *debug* version or use *Visual Studio* generator also as before for the -protobuf project. - -Now add *bin* folder from *install* to system *PATH*: - - C:\Path\to>set PATH=%PATH%;C:\Path\to\install\bin - -You need reconfigure protobuf with flag `-Dprotobuf_WITH_ZLIB=ON` when invoking cmake. - -Note that if you have compiled ZLIB yourself, as stated above, -further disable the option `-Dprotobuf_MSVC_STATIC_RUNTIME=OFF`. - -If it reports NOTFOUND for zlib_include or zlib_lib, you might haven't put -the headers or the .lib file in the right directory. - -If you already have ZLIB library and headers at some other location on your system then alternatively you can define following configuration flags to locate them: - - -DZLIB_INCLUDE_DIR= - -DZLIB_LIB= - -Build and testing protobuf as usual. - -Notes on Compiler Warnings -========================== - -The following warnings have been disabled while building the protobuf libraries -and compiler. You may have to disable some of them in your own project as -well, or live with them. - -* C4018 - 'expression' : signed/unsigned mismatch -* C4146 - unary minus operator applied to unsigned type, result still unsigned -* C4244 - Conversion from 'type1' to 'type2', possible loss of data. -* C4251 - 'identifier' : class 'type' needs to have dll-interface to be used by - clients of class 'type2' -* C4267 - Conversion from 'size_t' to 'type', possible loss of data. -* C4305 - 'identifier' : truncation from 'type1' to 'type2' -* C4355 - 'this' : used in base member initializer list -* C4800 - 'type' : forcing value to bool 'true' or 'false' (performance warning) -* C4996 - 'function': was declared deprecated - -C4251 is of particular note, if you are compiling the Protocol Buffer library -as a DLL (see previous section). The protocol buffer library uses templates in -its public interfaces. MSVC does not provide any reasonable way to export -template classes from a DLL. However, in practice, it appears that exporting -templates is not necessary anyway. Since the complete definition of any -template is available in the header files, anyone importing the DLL will just -end up compiling instances of the templates into their own binary. The -Protocol Buffer implementation does not rely on static template members being -unique, so there should be no problem with this, but MSVC prints warning -nevertheless. So, we disable it. Unfortunately, this warning will also be -produced when compiling code which merely uses protocol buffers, meaning you -may have to disable it in your code too. diff --git a/lib/protobuf/cmake/conformance.cmake b/lib/protobuf/cmake/conformance.cmake deleted file mode 100644 index 82b4cf5..0000000 --- a/lib/protobuf/cmake/conformance.cmake +++ /dev/null @@ -1,50 +0,0 @@ - -add_custom_command( - OUTPUT ${protobuf_source_dir}/conformance/conformance.pb.cc - DEPENDS protoc ${protobuf_source_dir}/conformance/conformance.proto - COMMAND protoc ${protobuf_source_dir}/conformance/conformance.proto - --proto_path=${protobuf_source_dir}/conformance - --cpp_out=${protobuf_source_dir}/conformance -) - -add_custom_command( - OUTPUT ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc - DEPENDS protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.proto - protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.proto - COMMAND protoc ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.proto - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.proto - --proto_path=${protobuf_source_dir}/src - --cpp_out=${protobuf_source_dir}/src -) - -add_executable(conformance_test_runner - ${protobuf_source_dir}/conformance/conformance.pb.cc - ${protobuf_source_dir}/conformance/conformance_test.cc - ${protobuf_source_dir}/conformance/binary_json_conformance_main.cc - ${protobuf_source_dir}/conformance/binary_json_conformance_suite.cc - ${protobuf_source_dir}/conformance/binary_json_conformance_suite.h - ${protobuf_source_dir}/conformance/conformance_test_runner.cc - ${protobuf_source_dir}/conformance/third_party/jsoncpp/json.h - ${protobuf_source_dir}/conformance/third_party/jsoncpp/jsoncpp.cpp - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc -) - -add_executable(conformance_cpp - ${protobuf_source_dir}/conformance/conformance.pb.cc - ${protobuf_source_dir}/conformance/conformance_cpp.cc - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto3.pb.cc - ${protobuf_source_dir}/src/google/protobuf/test_messages_proto2.pb.cc -) - -target_include_directories( - conformance_test_runner - PUBLIC ${protobuf_source_dir}/conformance) - -target_include_directories( - conformance_cpp - PUBLIC ${protobuf_source_dir}/conformance) - -target_link_libraries(conformance_test_runner libprotobuf) -target_link_libraries(conformance_cpp libprotobuf) diff --git a/lib/protobuf/cmake/examples.cmake b/lib/protobuf/cmake/examples.cmake deleted file mode 100644 index e5cad63..0000000 --- a/lib/protobuf/cmake/examples.cmake +++ /dev/null @@ -1,57 +0,0 @@ -if(protobuf_VERBOSE) - message(STATUS "Protocol Buffers Examples Configuring...") -endif() - -get_filename_component(examples_dir "../examples" ABSOLUTE) - -if(protobuf_VERBOSE) - message(STATUS "Protocol Buffers Examples Configuring done") -endif() -include(ExternalProject) - -# Internal utility function: Create a custom target representing a build of examples with custom options. -function(add_examples_build NAME) - - ExternalProject_Add(${NAME} - PREFIX ${NAME} - SOURCE_DIR "${examples_dir}" - BINARY_DIR ${NAME} - STAMP_DIR ${NAME}/logs - INSTALL_COMMAND "" #Skip - LOG_CONFIGURE 1 - CMAKE_CACHE_ARGS "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" - "-Dprotobuf_VERBOSE:BOOL=${protobuf_VERBOSE}" - ${ARGN} - ) - set_property(TARGET ${NAME} PROPERTY FOLDER "Examples") - set_property(TARGET ${NAME} PROPERTY EXCLUDE_FROM_ALL TRUE) -endfunction() - -# Add examples as an external project. -# sub_directory cannot be used because the find_package(protobuf) call would cause failures with redefined targets. -add_examples_build(examples "-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}") -add_dependencies(examples libprotobuf protoc) - -option(protobuf_BUILD_EXAMPLES_MULTITEST "Build Examples in multiple configurations. Useful for testing." OFF) -mark_as_advanced(protobuf_BUILD_EXAMPLES_MULTITEST) -if(protobuf_BUILD_EXAMPLES_MULTITEST) - set_property(GLOBAL PROPERTY USE_FOLDERS ON) - - #Build using the legacy compatibility module. - add_examples_build(examples-legacy - "-Dprotobuf_DIR:PATH=${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}" - "-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" - ) - add_dependencies(examples-legacy libprotobuf protoc) - - #Build using the installed library. - add_examples_build(examples-installed - "-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" - ) - - #Build using the installed library in legacy compatibility mode. - add_examples_build(examples-installed-legacy - "-Dprotobuf_DIR:PATH=${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_CMAKEDIR}" - "-Dprotobuf_MODULE_COMPATIBLE:BOOL=TRUE" - ) -endif() diff --git a/lib/protobuf/cmake/extract_includes.bat.in b/lib/protobuf/cmake/extract_includes.bat.in deleted file mode 100644 index 7c97f20..0000000 --- a/lib/protobuf/cmake/extract_includes.bat.in +++ /dev/null @@ -1,130 +0,0 @@ -mkdir include -mkdir include\google -mkdir include\google\protobuf -mkdir include\google\protobuf\compiler -mkdir include\google\protobuf\compiler\cpp -mkdir include\google\protobuf\compiler\csharp -mkdir include\google\protobuf\compiler\java -mkdir include\google\protobuf\compiler\js -mkdir include\google\protobuf\compiler\objectivec -mkdir include\google\protobuf\compiler\php -mkdir include\google\protobuf\compiler\python -mkdir include\google\protobuf\compiler\ruby -mkdir include\google\protobuf\io -mkdir include\google\protobuf\stubs -mkdir include\google\protobuf\util -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\any.h" include\google\protobuf\any.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\any.pb.h" include\google\protobuf\any.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\api.pb.h" include\google\protobuf\api.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\arena.h" include\google\protobuf\arena.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\arena_impl.h" include\google\protobuf\arena_impl.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\arenastring.h" include\google\protobuf\arenastring.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\code_generator.h" include\google\protobuf\compiler\code_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\command_line_interface.h" include\google\protobuf\compiler\command_line_interface.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\cpp\cpp_generator.h" include\google\protobuf\compiler\cpp\cpp_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_generator.h" include\google\protobuf\compiler\csharp\csharp_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\csharp\csharp_names.h" include\google\protobuf\compiler\csharp\csharp_names.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\importer.h" include\google\protobuf\compiler\importer.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\java\java_generator.h" include\google\protobuf\compiler\java\java_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\java\java_names.h" include\google\protobuf\compiler\java\java_names.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\js\js_generator.h" include\google\protobuf\compiler\js\js_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\js\well_known_types_embed.h" include\google\protobuf\compiler\js\well_known_types_embed.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\objectivec\objectivec_generator.h" include\google\protobuf\compiler\objectivec\objectivec_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\objectivec\objectivec_helpers.h" include\google\protobuf\compiler\objectivec\objectivec_helpers.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\parser.h" include\google\protobuf\compiler\parser.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\php\php_generator.h" include\google\protobuf\compiler\php\php_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\plugin.h" include\google\protobuf\compiler\plugin.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\plugin.pb.h" include\google\protobuf\compiler\plugin.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\python\python_generator.h" include\google\protobuf\compiler\python\python_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\ruby\ruby_generator.h" include\google\protobuf\compiler\ruby\ruby_generator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\descriptor.h" include\google\protobuf\descriptor.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\descriptor.pb.h" include\google\protobuf\descriptor.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\descriptor_database.h" include\google\protobuf\descriptor_database.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\duration.pb.h" include\google\protobuf\duration.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\dynamic_message.h" include\google\protobuf\dynamic_message.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\empty.pb.h" include\google\protobuf\empty.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\extension_set.h" include\google\protobuf\extension_set.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\extension_set_inl.h" include\google\protobuf\extension_set_inl.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\field_mask.pb.h" include\google\protobuf\field_mask.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_reflection.h" include\google\protobuf\generated_enum_reflection.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_enum_util.h" include\google\protobuf\generated_enum_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_reflection.h" include\google\protobuf\generated_message_reflection.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_table_driven.h" include\google\protobuf\generated_message_table_driven.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\generated_message_util.h" include\google\protobuf\generated_message_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\has_bits.h" include\google\protobuf\has_bits.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\implicit_weak_message.h" include\google\protobuf\implicit_weak_message.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\inlined_string_field.h" include\google\protobuf\inlined_string_field.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\coded_stream.h" include\google\protobuf\io\coded_stream.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\gzip_stream.h" include\google\protobuf\io\gzip_stream.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\io_win32.h" include\google\protobuf\io\io_win32.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\printer.h" include\google\protobuf\io\printer.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\strtod.h" include\google\protobuf\io\strtod.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\tokenizer.h" include\google\protobuf\io\tokenizer.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\zero_copy_stream.h" include\google\protobuf\io\zero_copy_stream.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\zero_copy_stream_impl.h" include\google\protobuf\io\zero_copy_stream_impl.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\io\zero_copy_stream_impl_lite.h" include\google\protobuf\io\zero_copy_stream_impl_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map.h" include\google\protobuf\map.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_entry.h" include\google\protobuf\map_entry.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_entry_lite.h" include\google\protobuf\map_entry_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_field.h" include\google\protobuf\map_field.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_field_inl.h" include\google\protobuf\map_field_inl.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_field_lite.h" include\google\protobuf\map_field_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\map_type_handler.h" include\google\protobuf\map_type_handler.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message.h" include\google\protobuf\message.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\message_lite.h" include\google\protobuf\message_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\metadata.h" include\google\protobuf\metadata.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\metadata_lite.h" include\google\protobuf\metadata_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\parse_context.h" include\google\protobuf\parse_context.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\port.h" include\google\protobuf\port.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\port_def.inc" include\google\protobuf\port_def.inc -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\port_undef.inc" include\google\protobuf\port_undef.inc -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection.h" include\google\protobuf\reflection.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\reflection_ops.h" include\google\protobuf\reflection_ops.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\repeated_field.h" include\google\protobuf\repeated_field.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\service.h" include\google\protobuf\service.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\source_context.pb.h" include\google\protobuf\source_context.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\struct.pb.h" include\google\protobuf\struct.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\bytestream.h" include\google\protobuf\stubs\bytestream.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\callback.h" include\google\protobuf\stubs\callback.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\casts.h" include\google\protobuf\stubs\casts.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\common.h" include\google\protobuf\stubs\common.h -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\logging.h" include\google\protobuf\stubs\logging.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\macros.h" include\google\protobuf\stubs\macros.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\mutex.h" include\google\protobuf\stubs\mutex.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\platform_macros.h" include\google\protobuf\stubs\platform_macros.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\port.h" include\google\protobuf\stubs\port.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\status.h" include\google\protobuf\stubs\status.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\stl_util.h" include\google\protobuf\stubs\stl_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\stringpiece.h" include\google\protobuf\stubs\stringpiece.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\strutil.h" include\google\protobuf\stubs\strutil.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\stubs\template_util.h" include\google\protobuf\stubs\template_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\text_format.h" include\google\protobuf\text_format.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\timestamp.pb.h" include\google\protobuf\timestamp.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\type.pb.h" include\google\protobuf\type.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\unknown_field_set.h" include\google\protobuf\unknown_field_set.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\delimited_message_util.h" include\google\protobuf\util\delimited_message_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\field_comparator.h" include\google\protobuf\util\field_comparator.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\field_mask_util.h" include\google\protobuf\util\field_mask_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\json_util.h" include\google\protobuf\util\json_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\message_differencer.h" include\google\protobuf\util\message_differencer.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\time_util.h" include\google\protobuf\util\time_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\type_resolver.h" include\google\protobuf\util\type_resolver.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\util\type_resolver_util.h" include\google\protobuf\util\type_resolver_util.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\wire_format.h" include\google\protobuf\wire_format.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\wire_format_lite.h" include\google\protobuf\wire_format_lite.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\wrappers.pb.h" include\google\protobuf\wrappers.pb.h -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\any.proto" include\google\protobuf\any.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\api.proto" include\google\protobuf\api.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\compiler\plugin.proto" include\google\protobuf\compiler\plugin.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\descriptor.proto" include\google\protobuf\descriptor.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\duration.proto" include\google\protobuf\duration.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\empty.proto" include\google\protobuf\empty.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\field_mask.proto" include\google\protobuf\field_mask.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\source_context.proto" include\google\protobuf\source_context.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\struct.proto" include\google\protobuf\struct.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\timestamp.proto" include\google\protobuf\timestamp.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\type.proto" include\google\protobuf\type.proto -copy "${PROTOBUF_SOURCE_WIN32_PATH}\..\src\google\protobuf\wrappers.proto" include\google\protobuf\wrappers.proto diff --git a/lib/protobuf/cmake/install.cmake b/lib/protobuf/cmake/install.cmake deleted file mode 100644 index be47c54..0000000 --- a/lib/protobuf/cmake/install.cmake +++ /dev/null @@ -1,150 +0,0 @@ -include(GNUInstallDirs) - -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf.pc.cmake - ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc @ONLY) -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/protobuf-lite.pc.cmake - ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc @ONLY) - -set(_protobuf_libraries libprotobuf-lite libprotobuf) -if (protobuf_BUILD_PROTOC_BINARIES) - list(APPEND _protobuf_libraries libprotoc) -endif (protobuf_BUILD_PROTOC_BINARIES) - -foreach(_library ${_protobuf_libraries}) - set_property(TARGET ${_library} - PROPERTY INTERFACE_INCLUDE_DIRECTORIES - $ - $) - if (UNIX AND NOT APPLE) - set_property(TARGET ${_library} - PROPERTY INSTALL_RPATH "$ORIGIN") - elseif (APPLE) - set_property(TARGET ${_library} - PROPERTY INSTALL_RPATH "@loader_path") - endif() - install(TARGETS ${_library} EXPORT protobuf-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT ${_library} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${_library} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT ${_library}) -endforeach() - -if (protobuf_BUILD_PROTOC_BINARIES) - install(TARGETS protoc EXPORT protobuf-targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT protoc) - if (UNIX AND NOT APPLE) - set_property(TARGET protoc - PROPERTY INSTALL_RPATH "$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") - elseif (APPLE) - set_property(TARGET protoc - PROPERTY INSTALL_RPATH "@loader_path/../lib") - endif() -endif (protobuf_BUILD_PROTOC_BINARIES) - -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/protobuf.pc ${CMAKE_CURRENT_BINARY_DIR}/protobuf-lite.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") - -file(STRINGS extract_includes.bat.in _extract_strings - REGEX "^copy") -foreach(_extract_string ${_extract_strings}) - string(REGEX REPLACE "^.* .+ include\\\\(.+)$" "\\1" - _header ${_extract_string}) - string(REPLACE "\\" "/" _header ${_header}) - get_filename_component(_extract_from "${protobuf_SOURCE_DIR}/../src/${_header}" ABSOLUTE) - get_filename_component(_extract_name ${_header} NAME) - get_filename_component(_extract_to "${CMAKE_INSTALL_INCLUDEDIR}/${_header}" PATH) - if(EXISTS "${_extract_from}") - install(FILES "${_extract_from}" - DESTINATION "${_extract_to}" - COMPONENT protobuf-headers - RENAME "${_extract_name}") - else() - message(AUTHOR_WARNING "The file \"${_extract_from}\" is listed in " - "\"${protobuf_SOURCE_DIR}/cmake/extract_includes.bat.in\" " - "but there not exists. The file will not be installed.") - endif() -endforeach() - -# Internal function for parsing auto tools scripts -function(_protobuf_auto_list FILE_NAME VARIABLE) - file(STRINGS ${FILE_NAME} _strings) - set(_list) - foreach(_string ${_strings}) - set(_found) - string(REGEX MATCH "^[ \t]*${VARIABLE}[ \t]*=[ \t]*" _found "${_string}") - if(_found) - string(LENGTH "${_found}" _length) - string(SUBSTRING "${_string}" ${_length} -1 _draft_list) - foreach(_item ${_draft_list}) - string(STRIP "${_item}" _item) - list(APPEND _list "${_item}") - endforeach() - endif() - endforeach() - set(${VARIABLE} ${_list} PARENT_SCOPE) -endfunction() - -# Install well-known type proto files -_protobuf_auto_list("../src/Makefile.am" nobase_dist_proto_DATA) -foreach(_file ${nobase_dist_proto_DATA}) - get_filename_component(_file_from "../src/${_file}" ABSOLUTE) - get_filename_component(_file_name ${_file} NAME) - get_filename_component(_file_path ${_file} PATH) - if(EXISTS "${_file_from}") - install(FILES "${_file_from}" - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${_file_path}" - COMPONENT protobuf-protos - RENAME "${_file_name}") - else() - message(AUTHOR_WARNING "The file \"${_file_from}\" is listed in " - "\"${protobuf_SOURCE_DIR}/../src/Makefile.am\" as nobase_dist_proto_DATA " - "but there not exists. The file will not be installed.") - endif() -endforeach() - -# Install configuration -set(_cmakedir_desc "Directory relative to CMAKE_INSTALL to install the cmake configuration files") -if(NOT MSVC) - set(CMAKE_INSTALL_CMAKEDIR "${CMAKE_INSTALL_LIBDIR}/cmake/protobuf" CACHE STRING "${_cmakedir_desc}") -else() - set(CMAKE_INSTALL_CMAKEDIR "cmake" CACHE STRING "${_cmakedir_desc}") -endif() -mark_as_advanced(CMAKE_INSTALL_CMAKEDIR) - -configure_file(protobuf-config.cmake.in - ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config.cmake @ONLY) -configure_file(protobuf-config-version.cmake.in - ${CMAKE_INSTALL_CMAKEDIR}/protobuf-config-version.cmake @ONLY) -configure_file(protobuf-module.cmake.in - ${CMAKE_INSTALL_CMAKEDIR}/protobuf-module.cmake @ONLY) -configure_file(protobuf-options.cmake - ${CMAKE_INSTALL_CMAKEDIR}/protobuf-options.cmake @ONLY) - -# Allows the build directory to be used as a find directory. - -if (protobuf_BUILD_PROTOC_BINARIES) - export(TARGETS libprotobuf-lite libprotobuf libprotoc protoc - NAMESPACE protobuf:: - FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake - ) -else (protobuf_BUILD_PROTOC_BINARIES) - export(TARGETS libprotobuf-lite libprotobuf - NAMESPACE protobuf:: - FILE ${CMAKE_INSTALL_CMAKEDIR}/protobuf-targets.cmake - ) -endif (protobuf_BUILD_PROTOC_BINARIES) - -install(EXPORT protobuf-targets - DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" - NAMESPACE protobuf:: - COMPONENT protobuf-export) - -install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_INSTALL_CMAKEDIR}/ - DESTINATION "${CMAKE_INSTALL_CMAKEDIR}" - COMPONENT protobuf-export - PATTERN protobuf-targets.cmake EXCLUDE -) - -option(protobuf_INSTALL_EXAMPLES "Install the examples folder" OFF) -if(protobuf_INSTALL_EXAMPLES) - install(DIRECTORY ../examples/ DESTINATION examples - COMPONENT protobuf-examples) -endif() diff --git a/lib/protobuf/cmake/libprotobuf-lite.cmake b/lib/protobuf/cmake/libprotobuf-lite.cmake deleted file mode 100644 index c06cf96..0000000 --- a/lib/protobuf/cmake/libprotobuf-lite.cmake +++ /dev/null @@ -1,77 +0,0 @@ -set(libprotobuf_lite_files - ${protobuf_source_dir}/src/google/protobuf/any_lite.cc - ${protobuf_source_dir}/src/google/protobuf/arena.cc - ${protobuf_source_dir}/src/google/protobuf/extension_set.cc - ${protobuf_source_dir}/src/google/protobuf/generated_enum_util.cc - ${protobuf_source_dir}/src/google/protobuf/generated_message_table_driven_lite.cc - ${protobuf_source_dir}/src/google/protobuf/generated_message_util.cc - ${protobuf_source_dir}/src/google/protobuf/implicit_weak_message.cc - ${protobuf_source_dir}/src/google/protobuf/io/coded_stream.cc - ${protobuf_source_dir}/src/google/protobuf/io/io_win32.cc - ${protobuf_source_dir}/src/google/protobuf/io/strtod.cc - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream.cc - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream_impl.cc - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream_impl_lite.cc - ${protobuf_source_dir}/src/google/protobuf/message_lite.cc - ${protobuf_source_dir}/src/google/protobuf/parse_context.cc - ${protobuf_source_dir}/src/google/protobuf/repeated_field.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/bytestream.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/common.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/int128.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/status.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/statusor.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/stringpiece.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/stringprintf.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/structurally_valid.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/strutil.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/time.cc - ${protobuf_source_dir}/src/google/protobuf/wire_format_lite.cc -) - -set(libprotobuf_lite_includes - ${protobuf_source_dir}/src/google/protobuf/arena.h - ${protobuf_source_dir}/src/google/protobuf/arenastring.h - ${protobuf_source_dir}/src/google/protobuf/extension_set.h - ${protobuf_source_dir}/src/google/protobuf/generated_message_util.h - ${protobuf_source_dir}/src/google/protobuf/implicit_weak_message.h - ${protobuf_source_dir}/src/google/protobuf/parse_context.h - ${protobuf_source_dir}/src/google/protobuf/io/coded_stream.h - ${protobuf_source_dir}/src/google/protobuf/io/strtod.h - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream.h - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream_impl.h - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream_impl_lite.h - ${protobuf_source_dir}/src/google/protobuf/message_lite.h - ${protobuf_source_dir}/src/google/protobuf/repeated_field.h - ${protobuf_source_dir}/src/google/protobuf/stubs/bytestream.h - ${protobuf_source_dir}/src/google/protobuf/stubs/common.h - ${protobuf_source_dir}/src/google/protobuf/stubs/int128.h - ${protobuf_source_dir}/src/google/protobuf/stubs/once.h - ${protobuf_source_dir}/src/google/protobuf/stubs/status.h - ${protobuf_source_dir}/src/google/protobuf/stubs/statusor.h - ${protobuf_source_dir}/src/google/protobuf/stubs/stringpiece.h - ${protobuf_source_dir}/src/google/protobuf/stubs/stringprintf.h - ${protobuf_source_dir}/src/google/protobuf/stubs/strutil.h - ${protobuf_source_dir}/src/google/protobuf/stubs/time.h - ${protobuf_source_dir}/src/google/protobuf/wire_format_lite.h -) - -if (MSVC) -set(libprotobuf_lite_rc_files - ${CMAKE_CURRENT_BINARY_DIR}/version.rc -) -endif() - -add_library(libprotobuf-lite ${protobuf_SHARED_OR_STATIC} - ${libprotobuf_lite_files} ${libprotobuf_lite_includes} ${libprotobuf_lite_rc_files}) -target_link_libraries(libprotobuf-lite ${CMAKE_THREAD_LIBS_INIT}) -target_include_directories(libprotobuf-lite PUBLIC ${protobuf_source_dir}/src) -if(MSVC AND protobuf_BUILD_SHARED_LIBS) - target_compile_definitions(libprotobuf-lite - PUBLIC PROTOBUF_USE_DLLS - PRIVATE LIBPROTOBUF_EXPORTS) -endif() -set_target_properties(libprotobuf-lite PROPERTIES - VERSION ${protobuf_VERSION} - OUTPUT_NAME ${LIB_PREFIX}protobuf-lite - DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}") -add_library(protobuf::libprotobuf-lite ALIAS libprotobuf-lite) diff --git a/lib/protobuf/cmake/libprotobuf.cmake b/lib/protobuf/cmake/libprotobuf.cmake deleted file mode 100644 index fd70da7..0000000 --- a/lib/protobuf/cmake/libprotobuf.cmake +++ /dev/null @@ -1,133 +0,0 @@ -set(libprotobuf_files - ${protobuf_source_dir}/src/google/protobuf/any.cc - ${protobuf_source_dir}/src/google/protobuf/any.pb.cc - ${protobuf_source_dir}/src/google/protobuf/api.pb.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/importer.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/parser.cc - ${protobuf_source_dir}/src/google/protobuf/descriptor.cc - ${protobuf_source_dir}/src/google/protobuf/descriptor.pb.cc - ${protobuf_source_dir}/src/google/protobuf/descriptor_database.cc - ${protobuf_source_dir}/src/google/protobuf/duration.pb.cc - ${protobuf_source_dir}/src/google/protobuf/dynamic_message.cc - ${protobuf_source_dir}/src/google/protobuf/empty.pb.cc - ${protobuf_source_dir}/src/google/protobuf/extension_set_heavy.cc - ${protobuf_source_dir}/src/google/protobuf/field_mask.pb.cc - ${protobuf_source_dir}/src/google/protobuf/generated_message_reflection.cc - ${protobuf_source_dir}/src/google/protobuf/generated_message_table_driven.cc - ${protobuf_source_dir}/src/google/protobuf/io/gzip_stream.cc - ${protobuf_source_dir}/src/google/protobuf/io/printer.cc - ${protobuf_source_dir}/src/google/protobuf/io/tokenizer.cc - ${protobuf_source_dir}/src/google/protobuf/map_field.cc - ${protobuf_source_dir}/src/google/protobuf/message.cc - ${protobuf_source_dir}/src/google/protobuf/reflection_ops.cc - ${protobuf_source_dir}/src/google/protobuf/service.cc - ${protobuf_source_dir}/src/google/protobuf/source_context.pb.cc - ${protobuf_source_dir}/src/google/protobuf/struct.pb.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/mathlimits.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/substitute.cc - ${protobuf_source_dir}/src/google/protobuf/text_format.cc - ${protobuf_source_dir}/src/google/protobuf/timestamp.pb.cc - ${protobuf_source_dir}/src/google/protobuf/type.pb.cc - ${protobuf_source_dir}/src/google/protobuf/unknown_field_set.cc - ${protobuf_source_dir}/src/google/protobuf/util/delimited_message_util.cc - ${protobuf_source_dir}/src/google/protobuf/util/field_comparator.cc - ${protobuf_source_dir}/src/google/protobuf/util/field_mask_util.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/datapiece.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/default_value_objectwriter.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/error_listener.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/field_mask_utility.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_escaping.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_objectwriter.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_stream_parser.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/object_writer.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/proto_writer.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectsource.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectwriter.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/type_info.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/type_info_test_helper.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/utility.cc - ${protobuf_source_dir}/src/google/protobuf/util/json_util.cc - ${protobuf_source_dir}/src/google/protobuf/util/message_differencer.cc - ${protobuf_source_dir}/src/google/protobuf/util/time_util.cc - ${protobuf_source_dir}/src/google/protobuf/util/type_resolver_util.cc - ${protobuf_source_dir}/src/google/protobuf/wire_format.cc - ${protobuf_source_dir}/src/google/protobuf/wrappers.pb.cc -) - -set(libprotobuf_includes - ${protobuf_source_dir}/src/google/protobuf/any.h - ${protobuf_source_dir}/src/google/protobuf/any.pb.h - ${protobuf_source_dir}/src/google/protobuf/api.pb.h - ${protobuf_source_dir}/src/google/protobuf/compiler/importer.h - ${protobuf_source_dir}/src/google/protobuf/compiler/parser.h - ${protobuf_source_dir}/src/google/protobuf/descriptor.h - ${protobuf_source_dir}/src/google/protobuf/descriptor.pb.h - ${protobuf_source_dir}/src/google/protobuf/descriptor_database.h - ${protobuf_source_dir}/src/google/protobuf/duration.pb.h - ${protobuf_source_dir}/src/google/protobuf/dynamic_message.h - ${protobuf_source_dir}/src/google/protobuf/empty.pb.h - ${protobuf_source_dir}/src/google/protobuf/field_mask.pb.h - ${protobuf_source_dir}/src/google/protobuf/generated_message_reflection.h - ${protobuf_source_dir}/src/google/protobuf/io/gzip_stream.h - ${protobuf_source_dir}/src/google/protobuf/io/printer.h - ${protobuf_source_dir}/src/google/protobuf/io/tokenizer.h - ${protobuf_source_dir}/src/google/protobuf/map_field.h - ${protobuf_source_dir}/src/google/protobuf/message.h - ${protobuf_source_dir}/src/google/protobuf/reflection_ops.h - ${protobuf_source_dir}/src/google/protobuf/service.h - ${protobuf_source_dir}/src/google/protobuf/source_context.pb.h - ${protobuf_source_dir}/src/google/protobuf/struct.pb.h - ${protobuf_source_dir}/src/google/protobuf/stubs/mathlimits.h - ${protobuf_source_dir}/src/google/protobuf/stubs/substitute.h - ${protobuf_source_dir}/src/google/protobuf/text_format.h - ${protobuf_source_dir}/src/google/protobuf/timestamp.pb.h - ${protobuf_source_dir}/src/google/protobuf/type.pb.h - ${protobuf_source_dir}/src/google/protobuf/unknown_field_set.h - ${protobuf_source_dir}/src/google/protobuf/util/delimited_message_util.h - ${protobuf_source_dir}/src/google/protobuf/util/field_comparator.h - ${protobuf_source_dir}/src/google/protobuf/util/field_mask_util.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/datapiece.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/default_value_objectwriter.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/error_listener.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/field_mask_utility.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_escaping.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_objectwriter.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_stream_parser.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/object_writer.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/proto_writer.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectsource.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectwriter.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/type_info.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/type_info_test_helper.h - ${protobuf_source_dir}/src/google/protobuf/util/internal/utility.h - ${protobuf_source_dir}/src/google/protobuf/util/json_util.h - ${protobuf_source_dir}/src/google/protobuf/util/message_differencer.h - ${protobuf_source_dir}/src/google/protobuf/util/time_util.h - ${protobuf_source_dir}/src/google/protobuf/util/type_resolver_util.h - ${protobuf_source_dir}/src/google/protobuf/wire_format.h - ${protobuf_source_dir}/src/google/protobuf/wrappers.pb.h -) - -if (MSVC) -set(libprotobuf_rc_files - ${CMAKE_CURRENT_BINARY_DIR}/version.rc -) -endif() - -add_library(libprotobuf ${protobuf_SHARED_OR_STATIC} - ${libprotobuf_lite_files} ${libprotobuf_files} ${libprotobuf_includes} ${libprotobuf_rc_files}) -target_link_libraries(libprotobuf ${CMAKE_THREAD_LIBS_INIT}) -if(protobuf_WITH_ZLIB) - target_link_libraries(libprotobuf ${ZLIB_LIBRARIES}) -endif() -target_include_directories(libprotobuf PUBLIC ${protobuf_source_dir}/src) -if(MSVC AND protobuf_BUILD_SHARED_LIBS) - target_compile_definitions(libprotobuf - PUBLIC PROTOBUF_USE_DLLS - PRIVATE LIBPROTOBUF_EXPORTS) -endif() -set_target_properties(libprotobuf PROPERTIES - VERSION ${protobuf_VERSION} - OUTPUT_NAME ${LIB_PREFIX}protobuf - DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}") -add_library(protobuf::libprotobuf ALIAS libprotobuf) diff --git a/lib/protobuf/cmake/libprotoc.cmake b/lib/protobuf/cmake/libprotoc.cmake deleted file mode 100644 index b71f2f1..0000000 --- a/lib/protobuf/cmake/libprotoc.cmake +++ /dev/null @@ -1,182 +0,0 @@ -set(libprotoc_files - ${protobuf_source_dir}/src/google/protobuf/compiler/code_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/command_line_interface.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_enum.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_extension.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_file.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_helpers.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_map_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_message.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_service.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_string_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_enum.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_field_base.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_helpers.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_map_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_message.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_context.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_doc_comment.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_extension.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_extension_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_file.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator_factory.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_helpers.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_builder.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_builder_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_field_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_name_resolver.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_primitive_field_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_service.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_shared_code_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_string_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_string_field_lite.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/js/js_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/js/well_known_types_embed.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_extension.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_file.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/php/php_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/plugin.pb.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/python/python_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/ruby/ruby_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/subprocess.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/zip_writer.cc -) - -set(libprotoc_headers - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_enum.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_enum_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_extension.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_file.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_helpers.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_map_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_message.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_message_layout_helper.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_options.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_primitive_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_service.h - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_string_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_doc_comment.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_enum.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_enum_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_field_base.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_helpers.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_map_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_message.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_options.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_primitive_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_reflection_class.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_source_generator_base.h - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_wrapper_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_context.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_doc_comment.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_field_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_enum_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_extension.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_extension_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_file.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_generator_factory.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_helpers.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_map_field_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_builder.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_builder_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_field_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_message_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_name_resolver.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_options.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_primitive_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_primitive_field_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_service.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_shared_code_generator.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_string_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_string_field_lite.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_enum_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_extension.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_file.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_map_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_message_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_nsobject_methods.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_oneof.h - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.h - ${protobuf_source_dir}/src/google/protobuf/compiler/scc.h - ${protobuf_source_dir}/src/google/protobuf/compiler/subprocess.h - ${protobuf_source_dir}/src/google/protobuf/compiler/zip_writer.h -) - -if (MSVC) -set(libprotoc_rc_files - ${CMAKE_CURRENT_BINARY_DIR}/version.rc -) -endif() - -add_library(libprotoc ${protobuf_SHARED_OR_STATIC} - ${libprotoc_files} ${libprotoc_headers} ${libprotoc_rc_files}) -target_link_libraries(libprotoc libprotobuf) -if(MSVC AND protobuf_BUILD_SHARED_LIBS) - target_compile_definitions(libprotoc - PUBLIC PROTOBUF_USE_DLLS - PRIVATE LIBPROTOC_EXPORTS) -endif() -set_target_properties(libprotoc PROPERTIES - COMPILE_DEFINITIONS LIBPROTOC_EXPORTS - VERSION ${protobuf_VERSION} - OUTPUT_NAME ${LIB_PREFIX}protoc - DEBUG_POSTFIX "${protobuf_DEBUG_POSTFIX}") -add_library(protobuf::libprotoc ALIAS libprotoc) - diff --git a/lib/protobuf/cmake/protobuf-config-version.cmake.in b/lib/protobuf/cmake/protobuf-config-version.cmake.in deleted file mode 100644 index 3fa0176..0000000 --- a/lib/protobuf/cmake/protobuf-config-version.cmake.in +++ /dev/null @@ -1,60 +0,0 @@ -set(PACKAGE_VERSION "@protobuf_VERSION@") -set(${PACKAGE_FIND_NAME}_VERSION_PRERELEASE "@protobuf_VERSION_PRERELEASE@" PARENT_SCOPE) - -# Prerelease versions cannot be passed in directly via the find_package command, -# so we allow users to specify it in a variable -if(NOT DEFINED "${PACKAGE_FIND_NAME}_FIND_VERSION_PRERELEASE") - set("${${PACKAGE_FIND_NAME}_FIND_VERSION_PRERELEASE}" "") -else() - set(PACKAGE_FIND_VERSION ${PACKAGE_FIND_VERSION}-${${PACKAGE_FIND_NAME}_FIND_VERSION_PRERELEASE}) -endif() -set(PACKAGE_FIND_VERSION_PRERELEASE "${${PACKAGE_FIND_NAME}_FIND_VERSION_PRERELEASE}") - -# VERSION_EQUAL ignores the prerelease strings, so we use STREQUAL. -if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) - set(PACKAGE_VERSION_EXACT TRUE) -endif() - -set(PACKAGE_VERSION_COMPATIBLE TRUE) #Assume true until shown otherwise - -if(PACKAGE_FIND_VERSION) #Only perform version checks if one is given - if(NOT PACKAGE_FIND_VERSION_MAJOR EQUAL "@protobuf_VERSION_MAJOR@") - set(PACKAGE_VERSION_COMPATIBLE FALSE) - elseif(PACKAGE_FIND_VERSION VERSION_GREATER PACKAGE_VERSION) - set(PACKAGE_VERSION_COMPATIBLE FALSE) - elseif(PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) - # Do not match prerelease versions to non-prerelease version requests. - if(NOT "@protobuf_VERSION_PRERELEASE@" STREQUAL "" AND PACKAGE_FIND_VERSION_PRERELEASE STREQUAL "") - message(AUTHOR_WARNING "To use this prerelease version of ${PACKAGE_FIND_NAME}, set ${PACKAGE_FIND_NAME}_FIND_VERSION_PRERELEASE to '@protobuf_VERSION_PRERELEASE@' or greater.") - set(PACKAGE_VERSION_COMPATIBLE FALSE) - endif() - - # Not robustly SemVer compliant, but protobuf never uses '.' separated prerelease identifiers. - if(PACKAGE_FIND_VERSION_PRERELEASE STRGREATER "@protobuf_VERSION_PRERELEASE@") - set(PACKAGE_VERSION_COMPATIBLE FALSE) - endif() - endif() -endif() - -# Check and save build options used to create this package -macro(_check_and_save_build_option OPTION VALUE) - if(DEFINED ${PACKAGE_FIND_NAME}_${OPTION} AND - NOT ${PACKAGE_FIND_NAME}_${OPTION} STREQUAL ${VALUE}) - set(PACKAGE_VERSION_UNSUITABLE TRUE) - endif() - set(${PACKAGE_FIND_NAME}_${OPTION} ${VALUE} PARENT_SCOPE) -endmacro() -_check_and_save_build_option(WITH_ZLIB @protobuf_WITH_ZLIB@) -_check_and_save_build_option(MSVC_STATIC_RUNTIME @protobuf_MSVC_STATIC_RUNTIME@) -_check_and_save_build_option(BUILD_SHARED_LIBS @protobuf_BUILD_SHARED_LIBS@) - -# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it: -if(CMAKE_SIZEOF_VOID_P AND "@CMAKE_SIZEOF_VOID_P@") - # check that the installed version has the same 32/64bit-ness as the one which is currently searching: - if(NOT CMAKE_SIZEOF_VOID_P EQUAL "@CMAKE_SIZEOF_VOID_P@") - math(EXPR installedBits "@CMAKE_SIZEOF_VOID_P@ * 8") - set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)") - set(PACKAGE_VERSION_UNSUITABLE TRUE) - endif() -endif() - diff --git a/lib/protobuf/cmake/protobuf-config.cmake.in b/lib/protobuf/cmake/protobuf-config.cmake.in deleted file mode 100644 index 29e39d8..0000000 --- a/lib/protobuf/cmake/protobuf-config.cmake.in +++ /dev/null @@ -1,127 +0,0 @@ -# User options -include("${CMAKE_CURRENT_LIST_DIR}/protobuf-options.cmake") - -# Depend packages -@_protobuf_FIND_ZLIB@ - -# Imported targets -include("${CMAKE_CURRENT_LIST_DIR}/protobuf-targets.cmake") - -function(protobuf_generate) - include(CMakeParseArguments) - - set(_options APPEND_PATH) - set(_singleargs LANGUAGE OUT_VAR EXPORT_MACRO PROTOC_OUT_DIR) - if(COMMAND target_sources) - list(APPEND _singleargs TARGET) - endif() - set(_multiargs PROTOS IMPORT_DIRS GENERATE_EXTENSIONS) - - cmake_parse_arguments(protobuf_generate "${_options}" "${_singleargs}" "${_multiargs}" "${ARGN}") - - if(NOT protobuf_generate_PROTOS AND NOT protobuf_generate_TARGET) - message(SEND_ERROR "Error: protobuf_generate called without any targets or source files") - return() - endif() - - if(NOT protobuf_generate_OUT_VAR AND NOT protobuf_generate_TARGET) - message(SEND_ERROR "Error: protobuf_generate called without a target or output variable") - return() - endif() - - if(NOT protobuf_generate_LANGUAGE) - set(protobuf_generate_LANGUAGE cpp) - endif() - string(TOLOWER ${protobuf_generate_LANGUAGE} protobuf_generate_LANGUAGE) - - if(NOT protobuf_generate_PROTOC_OUT_DIR) - set(protobuf_generate_PROTOC_OUT_DIR ${CMAKE_CURRENT_BINARY_DIR}) - endif() - - if(protobuf_generate_EXPORT_MACRO AND protobuf_generate_LANGUAGE STREQUAL cpp) - set(_dll_export_decl "dllexport_decl=${protobuf_generate_EXPORT_MACRO}:") - endif() - - if(NOT protobuf_generate_GENERATE_EXTENSIONS) - if(protobuf_generate_LANGUAGE STREQUAL cpp) - set(protobuf_generate_GENERATE_EXTENSIONS .pb.h .pb.cc) - elseif(protobuf_generate_LANGUAGE STREQUAL python) - set(protobuf_generate_GENERATE_EXTENSIONS _pb2.py) - else() - message(SEND_ERROR "Error: protobuf_generate given unknown Language ${LANGUAGE}, please provide a value for GENERATE_EXTENSIONS") - return() - endif() - endif() - - if(protobuf_generate_TARGET) - get_target_property(_source_list ${protobuf_generate_TARGET} SOURCES) - foreach(_file ${_source_list}) - if(_file MATCHES "proto$") - list(APPEND protobuf_generate_PROTOS ${_file}) - endif() - endforeach() - endif() - - if(NOT protobuf_generate_PROTOS) - message(SEND_ERROR "Error: protobuf_generate could not find any .proto files") - return() - endif() - - if(protobuf_generate_APPEND_PATH) - # Create an include path for each file specified - foreach(_file ${protobuf_generate_PROTOS}) - get_filename_component(_abs_file ${_file} ABSOLUTE) - get_filename_component(_abs_path ${_abs_file} PATH) - list(FIND _protobuf_include_path ${_abs_path} _contains_already) - if(${_contains_already} EQUAL -1) - list(APPEND _protobuf_include_path -I ${_abs_path}) - endif() - endforeach() - else() - set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR}) - endif() - - foreach(DIR ${protobuf_generate_IMPORT_DIRS}) - get_filename_component(ABS_PATH ${DIR} ABSOLUTE) - list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) - if(${_contains_already} EQUAL -1) - list(APPEND _protobuf_include_path -I ${ABS_PATH}) - endif() - endforeach() - - set(_generated_srcs_all) - foreach(_proto ${protobuf_generate_PROTOS}) - get_filename_component(_abs_file ${_proto} ABSOLUTE) - get_filename_component(_abs_dir ${_abs_file} DIRECTORY) - get_filename_component(_basename ${_proto} NAME_WE) - file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir}) - - set(_generated_srcs) - foreach(_ext ${protobuf_generate_GENERATE_EXTENSIONS}) - list(APPEND _generated_srcs "${protobuf_generate_PROTOC_OUT_DIR}/${_rel_dir}/${_basename}${_ext}") - endforeach() - list(APPEND _generated_srcs_all ${_generated_srcs}) - - add_custom_command( - OUTPUT ${_generated_srcs} - COMMAND protobuf::protoc - ARGS --${protobuf_generate_LANGUAGE}_out ${_dll_export_decl}${protobuf_generate_PROTOC_OUT_DIR} ${_protobuf_include_path} ${_abs_file} - DEPENDS ${_abs_file} protobuf::protoc - COMMENT "Running ${protobuf_generate_LANGUAGE} protocol buffer compiler on ${_proto}" - VERBATIM ) - endforeach() - - set_source_files_properties(${_generated_srcs_all} PROPERTIES GENERATED TRUE) - if(protobuf_generate_OUT_VAR) - set(${protobuf_generate_OUT_VAR} ${_generated_srcs_all} PARENT_SCOPE) - endif() - if(protobuf_generate_TARGET) - target_sources(${protobuf_generate_TARGET} PRIVATE ${_generated_srcs_all}) - endif() - -endfunction() - -# CMake FindProtobuf module compatible file -if(protobuf_MODULE_COMPATIBLE) - include("${CMAKE_CURRENT_LIST_DIR}/protobuf-module.cmake") -endif() diff --git a/lib/protobuf/cmake/protobuf-lite.pc.cmake b/lib/protobuf/cmake/protobuf-lite.pc.cmake deleted file mode 100644 index cbe5426..0000000 --- a/lib/protobuf/cmake/protobuf-lite.pc.cmake +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: Protocol Buffers -Description: Google's Data Interchange Format -Version: @protobuf_VERSION@ -Libs: -L${libdir} -lprotobuf-lite @CMAKE_THREAD_LIBS_INIT@ -Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@ -Conflicts: protobuf diff --git a/lib/protobuf/cmake/protobuf-module.cmake.in b/lib/protobuf/cmake/protobuf-module.cmake.in deleted file mode 100644 index 74c5488..0000000 --- a/lib/protobuf/cmake/protobuf-module.cmake.in +++ /dev/null @@ -1,189 +0,0 @@ -# This file contains backwards compatibility patches for various legacy functions and variables -# Functions - -function(PROTOBUF_GENERATE_CPP SRCS HDRS) - cmake_parse_arguments(protobuf_generate_cpp "" "EXPORT_MACRO" "" ${ARGN}) - - set(_proto_files "${protobuf_generate_cpp_UNPARSED_ARGUMENTS}") - if(NOT _proto_files) - message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") - return() - endif() - - if(PROTOBUF_GENERATE_CPP_APPEND_PATH) - set(_append_arg APPEND_PATH) - endif() - - if(DEFINED Protobuf_IMPORT_DIRS) - set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS}) - endif() - - set(_outvar) - protobuf_generate(${_append_arg} LANGUAGE cpp EXPORT_MACRO ${protobuf_generate_cpp_EXPORT_MACRO} OUT_VAR _outvar ${_import_arg} PROTOS ${_proto_files}) - - set(${SRCS}) - set(${HDRS}) - foreach(_file ${_outvar}) - if(_file MATCHES "cc$") - list(APPEND ${SRCS} ${_file}) - else() - list(APPEND ${HDRS} ${_file}) - endif() - endforeach() - set(${SRCS} ${${SRCS}} PARENT_SCOPE) - set(${HDRS} ${${HDRS}} PARENT_SCOPE) -endfunction() - -function(PROTOBUF_GENERATE_PYTHON SRCS) - if(NOT ARGN) - message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any proto files") - return() - endif() - - if(PROTOBUF_GENERATE_CPP_APPEND_PATH) - set(_append_arg APPEND_PATH) - endif() - - if(DEFINED Protobuf_IMPORT_DIRS) - set(_import_arg IMPORT_DIRS ${Protobuf_IMPORT_DIRS}) - endif() - - set(_outvar) - protobuf_generate(${_append_arg} LANGUAGE python OUT_VAR _outvar ${_import_arg} PROTOS ${ARGN}) - set(${SRCS} ${_outvar} PARENT_SCOPE) -endfunction() - -# Environment - -# Backwards compatibility -# Define camel case versions of input variables -foreach(UPPER - PROTOBUF_SRC_ROOT_FOLDER - PROTOBUF_IMPORT_DIRS - PROTOBUF_DEBUG - PROTOBUF_LIBRARY - PROTOBUF_PROTOC_LIBRARY - PROTOBUF_INCLUDE_DIR - PROTOBUF_PROTOC_EXECUTABLE - PROTOBUF_LIBRARY_DEBUG - PROTOBUF_PROTOC_LIBRARY_DEBUG - PROTOBUF_LITE_LIBRARY - PROTOBUF_LITE_LIBRARY_DEBUG - ) - if (DEFINED ${UPPER}) - string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER}) - if (NOT DEFINED ${Camel}) - set(${Camel} ${${UPPER}}) - endif() - endif() -endforeach() - -if(DEFINED Protobuf_SRC_ROOT_FOLDER) - message(AUTHOR_WARNING "Variable Protobuf_SRC_ROOT_FOLDER defined, but not" - " used in CONFIG mode") -endif() - -include(SelectLibraryConfigurations) - -# Internal function: search for normal library as well as a debug one -# if the debug one is specified also include debug/optimized keywords -# in *_LIBRARIES variable -function(_protobuf_find_libraries name filename) - if(${name}_LIBRARIES) - # Use result recorded by a previous call. - elseif(${name}_LIBRARY) - # Honor cache entry used by CMake 3.5 and lower. - set(${name}_LIBRARIES "${${name}_LIBRARY}" PARENT_SCOPE) - else() - get_target_property(${name}_LIBRARY_RELEASE protobuf::lib${filename} - LOCATION_RELEASE) - get_target_property(${name}_LIBRARY_DEBUG protobuf::lib${filename} - LOCATION_DEBUG) - - select_library_configurations(${name}) - set(${name}_LIBRARY ${${name}_LIBRARY} PARENT_SCOPE) - set(${name}_LIBRARIES ${${name}_LIBRARIES} PARENT_SCOPE) - endif() -endfunction() - -# Internal function: find threads library -function(_protobuf_find_threads) - set(CMAKE_THREAD_PREFER_PTHREAD TRUE) - find_package(Threads) - if(Threads_FOUND) - list(APPEND PROTOBUF_LIBRARIES ${CMAKE_THREAD_LIBS_INIT}) - set(PROTOBUF_LIBRARIES "${PROTOBUF_LIBRARIES}" PARENT_SCOPE) - endif() -endfunction() - -# -# Main. -# - -# By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc -# for each directory where a proto file is referenced. -if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH) - set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) -endif() - -# The Protobuf library -_protobuf_find_libraries(Protobuf protobuf) - -# The Protobuf Lite library -_protobuf_find_libraries(Protobuf_LITE protobuf-lite) - -# The Protobuf Protoc Library -_protobuf_find_libraries(Protobuf_PROTOC protoc) - -if(UNIX) - _protobuf_find_threads() -endif() - -# Set the include directory -get_target_property(Protobuf_INCLUDE_DIRS protobuf::libprotobuf - INTERFACE_INCLUDE_DIRECTORIES) - -# Set the protoc Executable -get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc - IMPORTED_LOCATION_RELEASE) -if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") - get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc - IMPORTED_LOCATION_DEBUG) -endif() -if(NOT EXISTS "${Protobuf_PROTOC_EXECUTABLE}") - get_target_property(Protobuf_PROTOC_EXECUTABLE protobuf::protoc - IMPORTED_LOCATION_NOCONFIG) -endif() - -# Version info variable -set(Protobuf_VERSION "@protobuf_VERSION@") - -include(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(Protobuf - REQUIRED_VARS Protobuf_PROTOC_EXECUTABLE Protobuf_LIBRARIES Protobuf_INCLUDE_DIRS - VERSION_VAR Protobuf_VERSION -) - -# Backwards compatibility -# Define upper case versions of output variables -foreach(Camel - Protobuf_VERSION - Protobuf_SRC_ROOT_FOLDER - Protobuf_IMPORT_DIRS - Protobuf_DEBUG - Protobuf_INCLUDE_DIRS - Protobuf_LIBRARIES - Protobuf_PROTOC_LIBRARIES - Protobuf_LITE_LIBRARIES - Protobuf_LIBRARY - Protobuf_PROTOC_LIBRARY - Protobuf_INCLUDE_DIR - Protobuf_PROTOC_EXECUTABLE - Protobuf_LIBRARY_DEBUG - Protobuf_PROTOC_LIBRARY_DEBUG - Protobuf_LITE_LIBRARY - Protobuf_LITE_LIBRARY_DEBUG - ) - string(TOUPPER ${Camel} UPPER) - set(${UPPER} ${${Camel}}) -endforeach() diff --git a/lib/protobuf/cmake/protobuf-options.cmake b/lib/protobuf/cmake/protobuf-options.cmake deleted file mode 100644 index 47fb158..0000000 --- a/lib/protobuf/cmake/protobuf-options.cmake +++ /dev/null @@ -1,7 +0,0 @@ -# Verbose output -option(protobuf_VERBOSE "Enable for verbose output" OFF) -mark_as_advanced(protobuf_VERBOSE) - -# FindProtobuf module compatibel -option(protobuf_MODULE_COMPATIBLE "CMake build-in FindProtobuf.cmake module compatible" OFF) -mark_as_advanced(protobuf_MODULE_COMPATIBLE) diff --git a/lib/protobuf/cmake/protobuf.pc.cmake b/lib/protobuf/cmake/protobuf.pc.cmake deleted file mode 100644 index d33e98c..0000000 --- a/lib/protobuf/cmake/protobuf.pc.cmake +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@CMAKE_INSTALL_PREFIX@ -exec_prefix=@CMAKE_INSTALL_PREFIX@ -libdir=@CMAKE_INSTALL_FULL_LIBDIR@ -includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@ - -Name: Protocol Buffers -Description: Google's Data Interchange Format -Version: @protobuf_VERSION@ -Libs: -L${libdir} -lprotobuf @CMAKE_THREAD_LIBS_INIT@ -Cflags: -I${includedir} @CMAKE_THREAD_LIBS_INIT@ -Conflicts: protobuf-lite diff --git a/lib/protobuf/cmake/protoc.cmake b/lib/protobuf/cmake/protoc.cmake deleted file mode 100644 index f90e525..0000000 --- a/lib/protobuf/cmake/protoc.cmake +++ /dev/null @@ -1,16 +0,0 @@ -set(protoc_files - ${protobuf_source_dir}/src/google/protobuf/compiler/main.cc -) - -if (MSVC) -set(protoc_rc_files - ${CMAKE_CURRENT_BINARY_DIR}/version.rc -) -endif() - -add_executable(protoc ${protoc_files} ${protoc_rc_files}) -target_link_libraries(protoc libprotoc libprotobuf) -add_executable(protobuf::protoc ALIAS protoc) - -set_target_properties(protoc PROPERTIES - VERSION ${protobuf_VERSION}) diff --git a/lib/protobuf/cmake/tests.cmake b/lib/protobuf/cmake/tests.cmake deleted file mode 100644 index 7226961..0000000 --- a/lib/protobuf/cmake/tests.cmake +++ /dev/null @@ -1,249 +0,0 @@ -if (NOT EXISTS "${PROJECT_SOURCE_DIR}/../third_party/googletest/CMakeLists.txt") - message(FATAL_ERROR - "Cannot find third_party/googletest directory that's needed to " - "build tests. If you use git, make sure you have cloned submodules:\n" - " git submodule update --init --recursive\n" - "If instead you want to skip tests, run cmake with:\n" - " cmake -Dprotobuf_BUILD_TESTS=OFF\n") -endif() - -option(protobuf_ABSOLUTE_TEST_PLUGIN_PATH - "Using absolute test_plugin path in tests" ON) -mark_as_advanced(protobuf_ABSOLUTE_TEST_PLUGIN_PATH) - -set(googlemock_source_dir "${protobuf_source_dir}/third_party/googletest/googlemock") -set(googletest_source_dir "${protobuf_source_dir}/third_party/googletest/googletest") -include_directories( - ${googlemock_source_dir} - ${googletest_source_dir} - ${googletest_source_dir}/include - ${googlemock_source_dir}/include -) - -add_library(gmock STATIC - "${googlemock_source_dir}/src/gmock-all.cc" - "${googletest_source_dir}/src/gtest-all.cc" -) -target_link_libraries(gmock ${CMAKE_THREAD_LIBS_INIT}) -add_library(gmock_main STATIC "${googlemock_source_dir}/src/gmock_main.cc") -target_link_libraries(gmock_main gmock) - -set(lite_test_protos - google/protobuf/map_lite_unittest.proto - google/protobuf/unittest_import_lite.proto - google/protobuf/unittest_import_public_lite.proto - google/protobuf/unittest_lite.proto - google/protobuf/unittest_no_arena_lite.proto -) - -set(tests_protos - google/protobuf/any_test.proto - google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto - google/protobuf/compiler/cpp/cpp_test_large_enum_value.proto - google/protobuf/map_proto2_unittest.proto - google/protobuf/map_unittest.proto - google/protobuf/unittest.proto - google/protobuf/unittest_arena.proto - google/protobuf/unittest_custom_options.proto - google/protobuf/unittest_drop_unknown_fields.proto - google/protobuf/unittest_embed_optimize_for.proto - google/protobuf/unittest_empty.proto - google/protobuf/unittest_import.proto - google/protobuf/unittest_import_public.proto - google/protobuf/unittest_lazy_dependencies.proto - google/protobuf/unittest_lazy_dependencies_custom_option.proto - google/protobuf/unittest_lazy_dependencies_enum.proto - google/protobuf/unittest_lite_imports_nonlite.proto - google/protobuf/unittest_mset.proto - google/protobuf/unittest_mset_wire_format.proto - google/protobuf/unittest_no_arena.proto - google/protobuf/unittest_no_arena_import.proto - google/protobuf/unittest_no_field_presence.proto - google/protobuf/unittest_no_generic_services.proto - google/protobuf/unittest_optimize_for.proto - google/protobuf/unittest_preserve_unknown_enum.proto - google/protobuf/unittest_preserve_unknown_enum2.proto - google/protobuf/unittest_proto3.proto - google/protobuf/unittest_proto3_arena.proto - google/protobuf/unittest_proto3_arena_lite.proto - google/protobuf/unittest_proto3_lite.proto - google/protobuf/unittest_well_known_types.proto - google/protobuf/util/internal/testdata/anys.proto - google/protobuf/util/internal/testdata/books.proto - google/protobuf/util/internal/testdata/default_value.proto - google/protobuf/util/internal/testdata/default_value_test.proto - google/protobuf/util/internal/testdata/field_mask.proto - google/protobuf/util/internal/testdata/maps.proto - google/protobuf/util/internal/testdata/oneofs.proto - google/protobuf/util/internal/testdata/proto3.proto - google/protobuf/util/internal/testdata/struct.proto - google/protobuf/util/internal/testdata/timestamp_duration.proto - google/protobuf/util/internal/testdata/wrappers.proto - google/protobuf/util/json_format.proto - google/protobuf/util/json_format_proto3.proto - google/protobuf/util/message_differencer_unittest.proto -) - -macro(compile_proto_file filename) - get_filename_component(dirname ${filename} PATH) - get_filename_component(basename ${filename} NAME_WE) - add_custom_command( - OUTPUT ${protobuf_source_dir}/src/${dirname}/${basename}.pb.cc - DEPENDS protoc ${protobuf_source_dir}/src/${dirname}/${basename}.proto - COMMAND protoc ${protobuf_source_dir}/src/${dirname}/${basename}.proto - --proto_path=${protobuf_source_dir}/src - --cpp_out=${protobuf_source_dir}/src - ) -endmacro(compile_proto_file) - -set(lite_test_proto_files) -foreach(proto_file ${lite_test_protos}) - compile_proto_file(${proto_file}) - string(REPLACE .proto .pb.cc pb_file ${proto_file}) - set(lite_test_proto_files ${lite_test_proto_files} - ${protobuf_source_dir}/src/${pb_file}) -endforeach(proto_file) - -set(tests_proto_files) -foreach(proto_file ${tests_protos}) - compile_proto_file(${proto_file}) - string(REPLACE .proto .pb.cc pb_file ${proto_file}) - set(tests_proto_files ${tests_proto_files} - ${protobuf_source_dir}/src/${pb_file}) -endforeach(proto_file) - -set(common_test_files - ${protobuf_source_dir}/src/google/protobuf/arena_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/map_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/test_util.cc - ${protobuf_source_dir}/src/google/protobuf/test_util.inc - ${protobuf_source_dir}/src/google/protobuf/testing/file.cc - ${protobuf_source_dir}/src/google/protobuf/testing/googletest.cc -) - -set(common_lite_test_files - ${protobuf_source_dir}/src/google/protobuf/arena_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/map_lite_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/test_util_lite.cc -) - -set(tests_files - ${protobuf_source_dir}/src/google/protobuf/any_test.cc - ${protobuf_source_dir}/src/google/protobuf/arena_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/arenastring_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/annotation_test_util.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/command_line_interface_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_move_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/cpp_unittest.inc - ${protobuf_source_dir}/src/google/protobuf/compiler/cpp/metadata_test.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_bootstrap_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/csharp/csharp_generator_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/importer_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/java/java_plugin_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/mock_code_generator.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/objectivec/objectivec_helpers_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/parser_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/python/python_plugin_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/compiler/ruby/ruby_generator_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/descriptor_database_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/descriptor_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/drop_unknown_fields_test.cc - ${protobuf_source_dir}/src/google/protobuf/dynamic_message_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/extension_set_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/generated_message_reflection_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/io/coded_stream_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/io/io_win32_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/io/printer_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/io/tokenizer_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/io/zero_copy_stream_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/map_field_test.cc - ${protobuf_source_dir}/src/google/protobuf/map_test.cc - ${protobuf_source_dir}/src/google/protobuf/message_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/message_unittest.inc - ${protobuf_source_dir}/src/google/protobuf/no_field_presence_test.cc - ${protobuf_source_dir}/src/google/protobuf/preserve_unknown_enum_test.cc - ${protobuf_source_dir}/src/google/protobuf/proto3_arena_lite_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/proto3_arena_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/proto3_lite_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/proto3_lite_unittest.inc - ${protobuf_source_dir}/src/google/protobuf/reflection_ops_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/repeated_field_reflection_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/repeated_field_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/bytestream_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/common_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/int128_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/status_test.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/statusor_test.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/stringpiece_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/stringprintf_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/structurally_valid_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/strutil_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/template_util_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/stubs/time_test.cc - ${protobuf_source_dir}/src/google/protobuf/text_format_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/unknown_field_set_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/util/delimited_message_util_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/field_comparator_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/field_mask_util_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/default_value_objectwriter_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_objectwriter_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/json_stream_parser_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectsource_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/protostream_objectwriter_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/internal/type_info_test_helper.cc - ${protobuf_source_dir}/src/google/protobuf/util/json_util_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/message_differencer_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/util/time_util_test.cc - ${protobuf_source_dir}/src/google/protobuf/util/type_resolver_util_test.cc - ${protobuf_source_dir}/src/google/protobuf/well_known_types_unittest.cc - ${protobuf_source_dir}/src/google/protobuf/wire_format_unittest.cc -) - -if(protobuf_ABSOLUTE_TEST_PLUGIN_PATH) - add_compile_options(-DGOOGLE_PROTOBUF_TEST_PLUGIN_PATH="$") -endif() - -if(MINGW) - set_source_files_properties(${tests_files} PROPERTIES COMPILE_FLAGS "-Wno-narrowing") - - # required for tests on MinGW Win64 - if (CMAKE_SIZEOF_VOID_P EQUAL 8) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--stack,16777216") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wa,-mbig-obj") - endif() - -endif() - -add_executable(tests ${tests_files} ${common_test_files} ${tests_proto_files} ${lite_test_proto_files}) -target_link_libraries(tests libprotoc libprotobuf gmock_main) - -set(test_plugin_files - ${protobuf_source_dir}/src/google/protobuf/compiler/mock_code_generator.cc - ${protobuf_source_dir}/src/google/protobuf/testing/file.cc - ${protobuf_source_dir}/src/google/protobuf/testing/file.h - ${protobuf_source_dir}/src/google/protobuf/compiler/test_plugin.cc -) - -add_executable(test_plugin ${test_plugin_files}) -target_link_libraries(test_plugin libprotoc libprotobuf gmock) - -set(lite_test_files - ${protobuf_source_dir}/src/google/protobuf/lite_unittest.cc -) -add_executable(lite-test ${lite_test_files} ${common_lite_test_files} ${lite_test_proto_files}) -target_link_libraries(lite-test libprotobuf-lite gmock_main) - -set(lite_arena_test_files - ${protobuf_source_dir}/src/google/protobuf/lite_arena_unittest.cc -) -add_executable(lite-arena-test ${lite_arena_test_files} ${common_lite_test_files} ${lite_test_proto_files}) -target_link_libraries(lite-arena-test libprotobuf-lite gmock_main) - -add_custom_target(check - COMMAND tests - DEPENDS tests test_plugin - WORKING_DIRECTORY ${protobuf_source_dir}) diff --git a/lib/protobuf/cmake/version.rc.in b/lib/protobuf/cmake/version.rc.in deleted file mode 100644 index f6e7c4a..0000000 --- a/lib/protobuf/cmake/version.rc.in +++ /dev/null @@ -1,45 +0,0 @@ -#define VS_FF_DEBUG 0x1L -#define VS_VERSION_INFO 0x1L -#define VS_FFI_FILEFLAGSMASK 0x17L -#define VER_PRIVATEBUILD 0x0L -#define VER_PRERELEASE 0x0L -#define VOS__WINDOWS32 0x4L -#define VFT_DLL 0x2L -#define VFT2_UNKNOWN 0x0L - -#ifndef DEBUG -#define VER_DEBUG 0 -#else -#define VER_DEBUG VS_FF_DEBUG -#endif - - -VS_VERSION_INFO VERSIONINFO - FILEVERSION @protobuf_RC_FILEVERSION@ - PRODUCTVERSION @protobuf_RC_FILEVERSION@ - FILEFLAGSMASK VS_FFI_FILEFLAGSMASK - FILEFLAGS VER_DEBUG - FILEOS VOS__WINDOWS32 - FILETYPE VFT_DLL -BEGIN - BLOCK "VarFileInfo" - BEGIN - // English language (0x409) and the Windows Unicode codepage (1200) - VALUE "Translation", 0x409, 1200 - END - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "FileDescription", "Compiled with @CMAKE_CXX_COMPILER_ID@ @CMAKE_CXX_COMPILER_VERSION@\0" - VALUE "ProductVersion", "@protobuf_VERSION@\0" - VALUE "FileVersion", "@protobuf_VERSION@\0" - VALUE "InternalName", "protobuf\0" - VALUE "ProductName", "Protocol Buffers - Google's Data Interchange Format\0" - VALUE "CompanyName", "Google Inc.\0" - VALUE "LegalCopyright", "Copyright 2008 Google Inc. All rights reserved.\0" - VALUE "Licence", "BSD\0" - VALUE "Info", "https://developers.google.com/protocol-buffers/\0" - END - END -END diff --git a/lib/protobuf/compiler_config_setting.bzl b/lib/protobuf/compiler_config_setting.bzl deleted file mode 100644 index 5e52a65..0000000 --- a/lib/protobuf/compiler_config_setting.bzl +++ /dev/null @@ -1,21 +0,0 @@ -"""Creates config_setting that allows selecting based on 'compiler' value.""" - -def create_compiler_config_setting(name, value): - # The "do_not_use_tools_cpp_compiler_present" attribute exists to - # distinguish between older versions of Bazel that do not support - # "@bazel_tools//tools/cpp:compiler" flag_value, and newer ones that do. - # In the future, the only way to select on the compiler will be through - # flag_values{"@bazel_tools//tools/cpp:compiler"} and the else branch can - # be removed. - if hasattr(cc_common, "do_not_use_tools_cpp_compiler_present"): - native.config_setting( - name = name, - flag_values = { - "@bazel_tools//tools/cpp:compiler": value, - }, - ) - else: - native.config_setting( - name = name, - values = {"compiler": value}, - ) diff --git a/lib/protobuf/composer.json b/lib/protobuf/composer.json deleted file mode 100644 index 2c64ad2..0000000 --- a/lib/protobuf/composer.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "google/protobuf", - "type": "library", - "description": "proto library for PHP", - "keywords": ["proto"], - "homepage": "https://developers.google.com/protocol-buffers/", - "license": "BSD-3-Clause", - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.8.0" - }, - "suggest": { - "ext-bcmath": "Need to support JSON deserialization" - }, - "autoload": { - "psr-4": { - "Google\\Protobuf\\": "php/src/Google/Protobuf", - "GPBMetadata\\Google\\Protobuf\\": "php/src/GPBMetadata/Google/Protobuf" - } - } -} diff --git a/lib/protobuf/config/config.h b/lib/protobuf/config/config.h deleted file mode 100644 index 79219e4..0000000 --- a/lib/protobuf/config/config.h +++ /dev/null @@ -1,155 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* the name of */ -#define HASH_MAP_CLASS unordered_map - -/* the location of or */ -#define HASH_MAP_H - -/* the namespace of hash_map/hash_set */ -#define HASH_NAMESPACE std - -/* the name of */ -#define HASH_SET_CLASS unordered_set - -/* the location of or */ -#define HASH_SET_H - -/* define if the compiler supports basic C++11 syntax */ -#define HAVE_CXX11 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_DLFCN_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `ftruncate' function. */ -#define HAVE_FTRUNCATE 1 - -/* define if the compiler has hash_map */ -#define HAVE_HASH_MAP 1 - -/* define if the compiler has hash_set */ -#define HAVE_HASH_SET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `memset' function. */ -#define HAVE_MEMSET 1 - -/* Define to 1 if you have the `mkdir' function. */ -#define HAVE_MKDIR 1 - -/* Define if you have POSIX threads libraries and header files. */ -#define HAVE_PTHREAD 1 - -/* Have PTHREAD_PRIO_INHERIT. */ -#define HAVE_PTHREAD_PRIO_INHERIT 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strchr' function. */ -#define HAVE_STRCHR 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strtol' function. */ -#define HAVE_STRTOL 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 1 - -/* Enable classes using zlib compression. */ -#define HAVE_ZLIB 1 - -/* Define to the sub-directory where libtool stores uninstalled libraries. */ -#define LT_OBJDIR ".libs/" - -/* Name of package */ -#define PACKAGE "protobuf" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "protobuf@googlegroups.com" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "Protocol Buffers" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "Protocol Buffers 3.9.1" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "protobuf" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "3.9.1" - -/* Define to necessary symbol if this constant uses a non-standard name on - your system. */ -/* #undef PTHREAD_CREATE_JOINABLE */ - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Enable extensions on AIX 3, Interix. */ -#ifndef _ALL_SOURCE -# define _ALL_SOURCE 1 -#endif -/* Enable GNU extensions on systems that have them. */ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -#endif -/* Enable threading extensions on Solaris. */ -#ifndef _POSIX_PTHREAD_SEMANTICS -# define _POSIX_PTHREAD_SEMANTICS 1 -#endif -/* Enable extensions on HP NonStop. */ -#ifndef _TANDEM_SOURCE -# define _TANDEM_SOURCE 1 -#endif -/* Enable general extensions on Solaris. */ -#ifndef __EXTENSIONS__ -# define __EXTENSIONS__ 1 -#endif - - -/* Version number of package */ -#define VERSION "3.9.1" - -/* Define to 1 if on MINIX. */ -/* #undef _MINIX */ - -/* Define to 2 if the system does not provide POSIX.1 features except with - this defined. */ -/* #undef _POSIX_1_SOURCE */ - -/* Define to 1 if you need to in order for `stat' and other things to work. */ -/* #undef _POSIX_SOURCE */ diff --git a/lib/protobuf/configure.ac b/lib/protobuf/configure.ac deleted file mode 100644 index 6dc48da..0000000 --- a/lib/protobuf/configure.ac +++ /dev/null @@ -1,234 +0,0 @@ -## Process this file with autoconf to produce configure. -## In general, the safest way to proceed is to run ./autogen.sh - -AC_PREREQ(2.59) - -# Note: If you change the version, you must also update it in: -# * Protobuf.podspec -# * csharp/Google.Protobuf.Tools.nuspec -# * csharp/src/*/AssemblyInfo.cs -# * csharp/src/Google.Protobuf/Google.Protobuf.nuspec -# * java/*/pom.xml -# * python/google/protobuf/__init__.py -# * protoc-artifacts/pom.xml -# * src/google/protobuf/stubs/common.h -# * src/Makefile.am (Update -version-info for LDFLAGS if needed) -# -# In the SVN trunk, the version should always be the next anticipated release -# version with the "-pre" suffix. (We used to use "-SNAPSHOT" but this pushed -# the size of one file name in the dist tarfile over the 99-char limit.) -AC_INIT([Protocol Buffers],[3.9.1],[protobuf@googlegroups.com],[protobuf]) - -AM_MAINTAINER_MODE([enable]) - -AC_CONFIG_SRCDIR(src/google/protobuf/message.cc) -# The config file is generated but not used by the source code, since we only -# need very few of them, e.g. HAVE_PTHREAD and HAVE_ZLIB. Those macros are -# passed down in CXXFLAGS manually in src/Makefile.am -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_MACRO_DIR([m4]) - -AC_ARG_VAR(DIST_LANG, [language to include in the distribution package (i.e., make dist)]) -case "$DIST_LANG" in - "") DIST_LANG=all ;; - all | cpp | csharp | java | python | javanano | objectivec | ruby | js | php) ;; - *) AC_MSG_FAILURE([unknown language: $DIST_LANG]) ;; -esac -AC_SUBST(DIST_LANG) - -# autoconf's default CXXFLAGS are usually "-g -O2". These aren't necessarily -# the best choice for libprotobuf. -AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"], - [CFLAGS=""]) -AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"], - [CXXFLAGS=""]) - -AC_CANONICAL_TARGET - -AM_INIT_AUTOMAKE([1.9 tar-ustar subdir-objects]) - -# Silent rules enabled: the output is minimal but informative. -# In particular, the warnings from the compiler stick out very clearly. -# To see all logs, use the --disable-silent-rules on configure or via make V=1 -AM_SILENT_RULES([yes]) - -AC_ARG_WITH([zlib], - [AS_HELP_STRING([--with-zlib], - [include classes for streaming compressed data in and out @<:@default=check@:>@])], - [],[with_zlib=check]) - -AC_ARG_WITH([zlib-include], - [AS_HELP_STRING([--with-zlib-include=PATH], - [zlib include directory])], - [CPPFLAGS="-I$withval $CPPFLAGS"]) - -AC_ARG_WITH([zlib-lib], - [AS_HELP_STRING([--with-zlib-lib=PATH], - [zlib lib directory])], - [LDFLAGS="-L$withval $LDFLAGS"]) - -AC_ARG_WITH([protoc], - [AS_HELP_STRING([--with-protoc=COMMAND], - [use the given protoc command instead of building a new one when building tests (useful for cross-compiling)])], - [],[with_protoc=no]) - -# Checks for programs. -AC_PROG_CC -AC_PROG_CXX -AC_PROG_CXX_FOR_BUILD -AC_LANG([C++]) -ACX_USE_SYSTEM_EXTENSIONS -m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) -AM_CONDITIONAL(GCC, test "$GCC" = yes) # let the Makefile know if we're gcc -AC_PROG_OBJC - -# test_util.cc takes forever to compile with GCC and optimization turned on. -AC_MSG_CHECKING([C++ compiler flags...]) -AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"],[ - AS_IF([test "$GCC" = "yes"],[ - PROTOBUF_OPT_FLAG="-O2" - CXXFLAGS="${CXXFLAGS} -g" - ]) - - # Protocol Buffers contains several checks that are intended to be used only - # for debugging and which might hurt performance. Most users are probably - # end users who don't want these checks, so add -DNDEBUG by default. - CXXFLAGS="$CXXFLAGS -std=c++11 -DNDEBUG" - - AC_MSG_RESULT([use default: $PROTOBUF_OPT_FLAG $CXXFLAGS]) -],[ - AC_MSG_RESULT([use user-supplied: $CXXFLAGS]) -]) - -AC_SUBST(PROTOBUF_OPT_FLAG) - -ACX_CHECK_SUNCC - -# Have to do libtool after SUNCC, other wise it "helpfully" adds Crun Cstd -# to the link -AC_PROG_LIBTOOL - -# Check whether the linker supports version scripts -AC_MSG_CHECKING([whether the linker supports version scripts]) -save_LDFLAGS=$LDFLAGS -LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" -cat > conftest.map < - #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1204) - # error zlib version too old - #endif - ]], [])], [ - AC_MSG_RESULT([ok (1.2.0.4 or later)]) - - # Also need to add -lz to the linker flags and make sure this succeeds. - AC_SEARCH_LIBS([zlibVersion], [z], [ - AC_DEFINE([HAVE_ZLIB], [1], [Enable classes using zlib compression.]) - HAVE_ZLIB=1 - ], [ - AS_IF([test "$with_zlib" != check], [ - AC_MSG_FAILURE([--with-zlib was given, but no working zlib library was found]) - ]) - ]) - ], [ - AS_IF([test "$with_zlib" = check], [ - AC_MSG_RESULT([headers missing or too old (requires 1.2.0.4)]) - ], [ - AC_MSG_FAILURE([--with-zlib was given, but zlib headers were not present or were too old (requires 1.2.0.4)]) - ]) - ]) -]) -AM_CONDITIONAL([HAVE_ZLIB], [test $HAVE_ZLIB = 1]) - -# Add -std=c++11 if necesssary. It is important for us to do this before the -# libatomic check below, since that also depends on C++11. -AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) - -dnl On some platforms, std::atomic needs a helper library -AC_MSG_CHECKING(whether -latomic is needed) -AC_LINK_IFELSE([AC_LANG_SOURCE([[ - #include - #include - std::atomic v; - int main() { - return v; - } -]])], STD_ATOMIC_NEED_LIBATOMIC=no, STD_ATOMIC_NEED_LIBATOMIC=yes) -AC_MSG_RESULT($STD_ATOMIC_NEED_LIBATOMIC) -if test "x$STD_ATOMIC_NEED_LIBATOMIC" = xyes; then - LIBATOMIC_LIBS="-latomic" -fi -AC_SUBST([LIBATOMIC_LIBS]) - -AS_IF([test "$with_protoc" != "no"], [ - PROTOC=$with_protoc - AS_IF([test "$with_protoc" = "yes"], [ - # No argument given. Use system protoc. - PROTOC=protoc - ]) - AS_IF([echo "$PROTOC" | grep -q '^@<:@^/@:>@.*/'], [ - # Does not start with a slash, but contains a slash. So, it's a relative - # path (as opposed to an absolute path or an executable in $PATH). - # Since it will actually be executed from the src directory, prefix with - # the current directory. We also insert $ac_top_build_prefix in case this - # is a nested package and --with-protoc was actually given on the outer - # package's configure script. - PROTOC=`pwd`/${ac_top_build_prefix}$PROTOC - ]) - AC_SUBST([PROTOC]) -]) -AM_CONDITIONAL([USE_EXTERNAL_PROTOC], [test "$with_protoc" != "no"]) - -AX_PTHREAD -AM_CONDITIONAL([HAVE_PTHREAD], [test "x$ax_pthread_ok" = "xyes"]) -# We still keep this for improving pbconfig.h for unsupported platforms. -AC_CXX_STL_HASH - -# Enable ObjC support for conformance directory on OS X. -OBJC_CONFORMANCE_TEST=0 -case "$target_os" in - darwin*) - OBJC_CONFORMANCE_TEST=1 - ;; -esac -AM_CONDITIONAL([OBJC_CONFORMANCE_TEST], [test $OBJC_CONFORMANCE_TEST = 1]) - -# HACK: Make gmock's configure script pick up our copy of CFLAGS and CXXFLAGS, -# since the flags added by ACX_CHECK_SUNCC must be used when compiling gmock -# too. -export CFLAGS -export CXXFLAGS -AC_CONFIG_SUBDIRS([third_party/googletest]) - -AC_CONFIG_FILES([Makefile src/Makefile benchmarks/Makefile conformance/Makefile protobuf.pc protobuf-lite.pc]) -AC_OUTPUT diff --git a/lib/protobuf/conformance/ConformanceJava.java b/lib/protobuf/conformance/ConformanceJava.java deleted file mode 100644 index c5b3f4e..0000000 --- a/lib/protobuf/conformance/ConformanceJava.java +++ /dev/null @@ -1,354 +0,0 @@ -import com.google.protobuf.AbstractMessage; -import com.google.protobuf.ByteString; -import com.google.protobuf.CodedInputStream; -import com.google.protobuf.ExtensionRegistry; -import com.google.protobuf.InvalidProtocolBufferException; -import com.google.protobuf.Parser; -import com.google.protobuf.TextFormat; -import com.google.protobuf.conformance.Conformance; -import com.google.protobuf.util.JsonFormat; -import com.google.protobuf.util.JsonFormat.TypeRegistry; -import com.google.protobuf_test_messages.proto2.TestMessagesProto2; -import com.google.protobuf_test_messages.proto2.TestMessagesProto2.TestAllTypesProto2; -import com.google.protobuf_test_messages.proto3.TestMessagesProto3; -import com.google.protobuf_test_messages.proto3.TestMessagesProto3.TestAllTypesProto3; -import java.nio.ByteBuffer; -import java.util.ArrayList; - -class ConformanceJava { - private int testCount = 0; - private TypeRegistry typeRegistry; - - private boolean readFromStdin(byte[] buf, int len) throws Exception { - int ofs = 0; - while (len > 0) { - int read = System.in.read(buf, ofs, len); - if (read == -1) { - return false; // EOF - } - ofs += read; - len -= read; - } - - return true; - } - - private void writeToStdout(byte[] buf) throws Exception { - System.out.write(buf); - } - - // Returns -1 on EOF (the actual values will always be positive). - private int readLittleEndianIntFromStdin() throws Exception { - byte[] buf = new byte[4]; - if (!readFromStdin(buf, 4)) { - return -1; - } - return (buf[0] & 0xff) - | ((buf[1] & 0xff) << 8) - | ((buf[2] & 0xff) << 16) - | ((buf[3] & 0xff) << 24); - } - - private void writeLittleEndianIntToStdout(int val) throws Exception { - byte[] buf = new byte[4]; - buf[0] = (byte)val; - buf[1] = (byte)(val >> 8); - buf[2] = (byte)(val >> 16); - buf[3] = (byte)(val >> 24); - writeToStdout(buf); - } - - private enum BinaryDecoderType { - BTYE_STRING_DECODER, - BYTE_ARRAY_DECODER, - ARRAY_BYTE_BUFFER_DECODER, - READONLY_ARRAY_BYTE_BUFFER_DECODER, - DIRECT_BYTE_BUFFER_DECODER, - READONLY_DIRECT_BYTE_BUFFER_DECODER, - INPUT_STREAM_DECODER; - } - - private static class BinaryDecoder { - public MessageType decode (ByteString bytes, BinaryDecoderType type, - Parser parser, ExtensionRegistry extensions) - throws InvalidProtocolBufferException { - switch (type) { - case BTYE_STRING_DECODER: - return parser.parseFrom(bytes, extensions); - case BYTE_ARRAY_DECODER: - return parser.parseFrom(bytes.toByteArray(), extensions); - case ARRAY_BYTE_BUFFER_DECODER: { - ByteBuffer buffer = ByteBuffer.allocate(bytes.size()); - bytes.copyTo(buffer); - buffer.flip(); - try { - return parser.parseFrom(CodedInputStream.newInstance(buffer), extensions); - } catch (InvalidProtocolBufferException e) { - throw e; - } - } - case READONLY_ARRAY_BYTE_BUFFER_DECODER: { - try { - return parser.parseFrom( - CodedInputStream.newInstance(bytes.asReadOnlyByteBuffer()), extensions); - } catch (InvalidProtocolBufferException e) { - throw e; - } - } - case DIRECT_BYTE_BUFFER_DECODER: { - ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size()); - bytes.copyTo(buffer); - buffer.flip(); - try { - return parser.parseFrom(CodedInputStream.newInstance(buffer), extensions); - } catch (InvalidProtocolBufferException e) { - throw e; - } - } - case READONLY_DIRECT_BYTE_BUFFER_DECODER: { - ByteBuffer buffer = ByteBuffer.allocateDirect(bytes.size()); - bytes.copyTo(buffer); - buffer.flip(); - try { - return parser.parseFrom( - CodedInputStream.newInstance(buffer.asReadOnlyBuffer()), extensions); - } catch (InvalidProtocolBufferException e) { - throw e; - } - } - case INPUT_STREAM_DECODER: { - try { - return parser.parseFrom(bytes.newInput(), extensions); - } catch (InvalidProtocolBufferException e) { - throw e; - } - } - default : - return null; - } - } - } - - private MessageType parseBinary( - ByteString bytes, Parser parser, ExtensionRegistry extensions) - throws InvalidProtocolBufferException { - ArrayList messages = new ArrayList (); - ArrayList exceptions = - new ArrayList (); - - for (int i = 0; i < BinaryDecoderType.values().length; i++) { - messages.add(null); - exceptions.add(null); - } - BinaryDecoder decoder = new BinaryDecoder (); - - boolean hasMessage = false; - boolean hasException = false; - for (int i = 0; i < BinaryDecoderType.values().length; ++i) { - try { - //= BinaryDecoderType.values()[i].parseProto3(bytes); - messages.set(i, decoder.decode(bytes, BinaryDecoderType.values()[i], parser, extensions)); - hasMessage = true; - } catch (InvalidProtocolBufferException e) { - exceptions.set(i, e); - hasException = true; - } - } - - if (hasMessage && hasException) { - StringBuilder sb = - new StringBuilder("Binary decoders disagreed on whether the payload was valid.\n"); - for (int i = 0; i < BinaryDecoderType.values().length; ++i) { - sb.append(BinaryDecoderType.values()[i].name()); - if (messages.get(i) != null) { - sb.append(" accepted the payload.\n"); - } else { - sb.append(" rejected the payload.\n"); - } - } - throw new RuntimeException(sb.toString()); - } - - if (hasException) { - // We do not check if exceptions are equal. Different implementations may return different - // exception messages. Throw an arbitrary one out instead. - throw exceptions.get(0); - } - - // Fast path comparing all the messages with the first message, assuming equality being - // symmetric and transitive. - boolean allEqual = true; - for (int i = 1; i < messages.size(); ++i) { - if (!messages.get(0).equals(messages.get(i))) { - allEqual = false; - break; - } - } - - // Slow path: compare and find out all unequal pairs. - if (!allEqual) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < messages.size() - 1; ++i) { - for (int j = i + 1; j < messages.size(); ++j) { - if (!messages.get(i).equals(messages.get(j))) { - sb.append(BinaryDecoderType.values()[i].name()) - .append(" and ") - .append(BinaryDecoderType.values()[j].name()) - .append(" parsed the payload differently.\n"); - } - } - } - throw new RuntimeException(sb.toString()); - } - - return messages.get(0); - } - - private Conformance.ConformanceResponse doTest(Conformance.ConformanceRequest request) { - com.google.protobuf.AbstractMessage testMessage; - boolean isProto3 = request.getMessageType().equals("protobuf_test_messages.proto3.TestAllTypesProto3"); - boolean isProto2 = request.getMessageType().equals("protobuf_test_messages.proto2.TestAllTypesProto2"); - - switch (request.getPayloadCase()) { - case PROTOBUF_PAYLOAD: { - if (isProto3) { - try { - ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - TestMessagesProto3.registerAllExtensions(extensions); - testMessage = parseBinary(request.getProtobufPayload(), TestAllTypesProto3.parser(), extensions); - } catch (InvalidProtocolBufferException e) { - return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build(); - } - } else if (isProto2) { - try { - ExtensionRegistry extensions = ExtensionRegistry.newInstance(); - TestMessagesProto2.registerAllExtensions(extensions); - testMessage = parseBinary(request.getProtobufPayload(), TestAllTypesProto2.parser(), extensions); - } catch (InvalidProtocolBufferException e) { - return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build(); - } - } else { - throw new RuntimeException("Protobuf request doesn't have specific payload type."); - } - break; - } - case JSON_PAYLOAD: { - try { - TestMessagesProto3.TestAllTypesProto3.Builder builder = - TestMessagesProto3.TestAllTypesProto3.newBuilder(); - JsonFormat.Parser parser = JsonFormat.parser().usingTypeRegistry(typeRegistry); - if (request.getTestCategory() - == Conformance.TestCategory.JSON_IGNORE_UNKNOWN_PARSING_TEST) { - parser = parser.ignoringUnknownFields(); - } - parser.merge(request.getJsonPayload(), builder); - testMessage = builder.build(); - } catch (InvalidProtocolBufferException e) { - return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build(); - } - break; - } - case TEXT_PAYLOAD: { - if (isProto3) { - try { - TestMessagesProto3.TestAllTypesProto3.Builder builder = - TestMessagesProto3.TestAllTypesProto3.newBuilder(); - TextFormat.merge(request.getTextPayload(), builder); - testMessage = builder.build(); - } catch (TextFormat.ParseException e) { - return Conformance.ConformanceResponse.newBuilder() - .setParseError(e.getMessage()) - .build(); - } - } else if (isProto2) { - try { - TestMessagesProto2.TestAllTypesProto2.Builder builder = - TestMessagesProto2.TestAllTypesProto2.newBuilder(); - TextFormat.merge(request.getTextPayload(), builder); - testMessage = builder.build(); - } catch (TextFormat.ParseException e) { - return Conformance.ConformanceResponse.newBuilder() - .setParseError(e.getMessage()) - .build(); - } - } else { - throw new RuntimeException("Protobuf request doesn't have specific payload type."); - } - break; - } - case PAYLOAD_NOT_SET: { - throw new RuntimeException("Request didn't have payload."); - } - - default: { - throw new RuntimeException("Unexpected payload case."); - } - } - - switch (request.getRequestedOutputFormat()) { - case UNSPECIFIED: - throw new RuntimeException("Unspecified output format."); - - case PROTOBUF: { - ByteString MessageString = testMessage.toByteString(); - return Conformance.ConformanceResponse.newBuilder().setProtobufPayload(MessageString).build(); - } - - case JSON: - try { - return Conformance.ConformanceResponse.newBuilder().setJsonPayload( - JsonFormat.printer().usingTypeRegistry(typeRegistry).print(testMessage)).build(); - } catch (InvalidProtocolBufferException | IllegalArgumentException e) { - return Conformance.ConformanceResponse.newBuilder().setSerializeError( - e.getMessage()).build(); - } - - case TEXT_FORMAT: - return Conformance.ConformanceResponse.newBuilder().setTextPayload( - TextFormat.printToString(testMessage)).build(); - - default: { - throw new RuntimeException("Unexpected request output."); - } - } - } - - private boolean doTestIo() throws Exception { - int bytes = readLittleEndianIntFromStdin(); - - if (bytes == -1) { - return false; // EOF - } - - byte[] serializedInput = new byte[bytes]; - - if (!readFromStdin(serializedInput, bytes)) { - throw new RuntimeException("Unexpected EOF from test program."); - } - - Conformance.ConformanceRequest request = - Conformance.ConformanceRequest.parseFrom(serializedInput); - Conformance.ConformanceResponse response = doTest(request); - byte[] serializedOutput = response.toByteArray(); - - writeLittleEndianIntToStdout(serializedOutput.length); - writeToStdout(serializedOutput); - - return true; - } - - public void run() throws Exception { - typeRegistry = TypeRegistry.newBuilder().add( - TestMessagesProto3.TestAllTypesProto3.getDescriptor()).build(); - while (doTestIo()) { - this.testCount++; - } - - System.err.println("ConformanceJava: received EOF from test runner after " + - this.testCount + " tests"); - } - - public static void main(String[] args) throws Exception { - new ConformanceJava().run(); - } -} diff --git a/lib/protobuf/conformance/ConformanceJavaLite.java b/lib/protobuf/conformance/ConformanceJavaLite.java deleted file mode 100644 index 016f793..0000000 --- a/lib/protobuf/conformance/ConformanceJavaLite.java +++ /dev/null @@ -1,125 +0,0 @@ - -import com.google.protobuf.conformance.Conformance; -import com.google.protobuf.InvalidProtocolBufferException; - -class ConformanceJavaLite { - private int testCount = 0; - - private boolean readFromStdin(byte[] buf, int len) throws Exception { - int ofs = 0; - while (len > 0) { - int read = System.in.read(buf, ofs, len); - if (read == -1) { - return false; // EOF - } - ofs += read; - len -= read; - } - - return true; - } - - private void writeToStdout(byte[] buf) throws Exception { - System.out.write(buf); - } - - // Returns -1 on EOF (the actual values will always be positive). - private int readLittleEndianIntFromStdin() throws Exception { - byte[] buf = new byte[4]; - if (!readFromStdin(buf, 4)) { - return -1; - } - return (buf[0] & 0xff) - | ((buf[1] & 0xff) << 8) - | ((buf[2] & 0xff) << 16) - | ((buf[3] & 0xff) << 24); - } - - private void writeLittleEndianIntToStdout(int val) throws Exception { - byte[] buf = new byte[4]; - buf[0] = (byte)val; - buf[1] = (byte)(val >> 8); - buf[2] = (byte)(val >> 16); - buf[3] = (byte)(val >> 24); - writeToStdout(buf); - } - - private Conformance.ConformanceResponse doTest(Conformance.ConformanceRequest request) { - Conformance.TestAllTypes testMessage; - - switch (request.getPayloadCase()) { - case PROTOBUF_PAYLOAD: { - try { - testMessage = Conformance.TestAllTypes.parseFrom(request.getProtobufPayload()); - } catch (InvalidProtocolBufferException e) { - return Conformance.ConformanceResponse.newBuilder().setParseError(e.getMessage()).build(); - } - break; - } - case JSON_PAYLOAD: { - return Conformance.ConformanceResponse.newBuilder().setSkipped( - "Lite runtime does not support JSON format.").build(); - } - case PAYLOAD_NOT_SET: { - throw new RuntimeException("Request didn't have payload."); - } - - default: { - throw new RuntimeException("Unexpected payload case."); - } - } - - switch (request.getRequestedOutputFormat()) { - case UNSPECIFIED: - throw new RuntimeException("Unspecified output format."); - - case PROTOBUF: - return Conformance.ConformanceResponse.newBuilder().setProtobufPayload(testMessage.toByteString()).build(); - - case JSON: - return Conformance.ConformanceResponse.newBuilder().setSkipped( - "Lite runtime does not support JSON format.").build(); - - default: { - throw new RuntimeException("Unexpected request output."); - } - } - } - - private boolean doTestIo() throws Exception { - int bytes = readLittleEndianIntFromStdin(); - - if (bytes == -1) { - return false; // EOF - } - - byte[] serializedInput = new byte[bytes]; - - if (!readFromStdin(serializedInput, bytes)) { - throw new RuntimeException("Unexpected EOF from test program."); - } - - Conformance.ConformanceRequest request = - Conformance.ConformanceRequest.parseFrom(serializedInput); - Conformance.ConformanceResponse response = doTest(request); - byte[] serializedOutput = response.toByteArray(); - - writeLittleEndianIntToStdout(serializedOutput.length); - writeToStdout(serializedOutput); - - return true; - } - - public void run() throws Exception { - while (doTestIo()) { - this.testCount++; - } - - System.err.println("ConformanceJavaLite: received EOF from test runner after " + - this.testCount + " tests"); - } - - public static void main(String[] args) throws Exception { - new ConformanceJavaLite().run(); - } -} diff --git a/lib/protobuf/conformance/Makefile.am b/lib/protobuf/conformance/Makefile.am deleted file mode 100644 index e47fd10..0000000 --- a/lib/protobuf/conformance/Makefile.am +++ /dev/null @@ -1,378 +0,0 @@ -## Process this file with automake to produce Makefile.in - -conformance_protoc_inputs = \ - conformance.proto \ - $(top_srcdir)/src/google/protobuf/test_messages_proto3.proto - -# proto2 input files, should be separated with proto3, as we -# can't generate proto2 files for ruby, php and objc -conformance_proto2_protoc_inputs = \ - $(top_srcdir)/src/google/protobuf/test_messages_proto2.proto - -well_known_type_protoc_inputs = \ - $(top_srcdir)/src/google/protobuf/any.proto \ - $(top_srcdir)/src/google/protobuf/duration.proto \ - $(top_srcdir)/src/google/protobuf/field_mask.proto \ - $(top_srcdir)/src/google/protobuf/struct.proto \ - $(top_srcdir)/src/google/protobuf/timestamp.proto \ - $(top_srcdir)/src/google/protobuf/wrappers.proto - - -protoc_outputs = \ - conformance.pb.cc \ - conformance.pb.h - -other_language_protoc_outputs = \ - conformance_pb2.py \ - Conformance.pbobjc.h \ - Conformance.pbobjc.m \ - conformance_pb.js \ - conformance_pb.rb \ - com/google/protobuf/Any.java \ - com/google/protobuf/AnyOrBuilder.java \ - com/google/protobuf/AnyProto.java \ - com/google/protobuf/BoolValue.java \ - com/google/protobuf/BoolValueOrBuilder.java \ - com/google/protobuf/BytesValue.java \ - com/google/protobuf/BytesValueOrBuilder.java \ - com/google/protobuf/conformance/Conformance.java \ - com/google/protobuf/DoubleValue.java \ - com/google/protobuf/DoubleValueOrBuilder.java \ - com/google/protobuf/Duration.java \ - com/google/protobuf/DurationOrBuilder.java \ - com/google/protobuf/DurationProto.java \ - com/google/protobuf/FieldMask.java \ - com/google/protobuf/FieldMaskOrBuilder.java \ - com/google/protobuf/FieldMaskProto.java \ - com/google/protobuf/FloatValue.java \ - com/google/protobuf/FloatValueOrBuilder.java \ - com/google/protobuf/Int32Value.java \ - com/google/protobuf/Int32ValueOrBuilder.java \ - com/google/protobuf/Int64Value.java \ - com/google/protobuf/Int64ValueOrBuilder.java \ - com/google/protobuf/ListValue.java \ - com/google/protobuf/ListValueOrBuilder.java \ - com/google/protobuf/NullValue.java \ - com/google/protobuf/StringValue.java \ - com/google/protobuf/StringValueOrBuilder.java \ - com/google/protobuf/Struct.java \ - com/google/protobuf/StructOrBuilder.java \ - com/google/protobuf/StructProto.java \ - com/google/protobuf/Timestamp.java \ - com/google/protobuf/TimestampOrBuilder.java \ - com/google/protobuf/TimestampProto.java \ - com/google/protobuf/UInt32Value.java \ - com/google/protobuf/UInt32ValueOrBuilder.java \ - com/google/protobuf/UInt64Value.java \ - com/google/protobuf/UInt64ValueOrBuilder.java \ - com/google/protobuf/Value.java \ - com/google/protobuf/ValueOrBuilder.java \ - com/google/protobuf/WrappersProto.java \ - com/google/protobuf_test_messages/proto3/TestMessagesProto3.java \ - com/google/protobuf_test_messages/proto2/TestMessagesProto2.java \ - google/protobuf/any.pb.cc \ - google/protobuf/any.pb.h \ - google/protobuf/any.rb \ - google/protobuf/any_pb2.py \ - google/protobuf/duration.pb.cc \ - google/protobuf/duration.pb.h \ - google/protobuf/duration.rb \ - google/protobuf/duration_pb2.py \ - google/protobuf/field_mask.pb.cc \ - google/protobuf/field_mask.pb.h \ - google/protobuf/field_mask.rb \ - google/protobuf/field_mask_pb2.py \ - google/protobuf/struct.pb.cc \ - google/protobuf/struct.pb.h \ - google/protobuf/struct.rb \ - google/protobuf/struct_pb2.py \ - google/protobuf/TestMessagesProto2.pbobjc.h \ - google/protobuf/TestMessagesProto2.pbobjc.m \ - google/protobuf/TestMessagesProto3.pbobjc.h \ - google/protobuf/TestMessagesProto3.pbobjc.m \ - google/protobuf/test_messages_proto3.pb.cc \ - google/protobuf/test_messages_proto3.pb.h \ - google/protobuf/test_messages_proto2.pb.cc \ - google/protobuf/test_messages_proto2.pb.h \ - google/protobuf/test_messages_proto3_pb.rb \ - google/protobuf/test_messages_proto3_pb2.py \ - google/protobuf/test_messages_proto2_pb2.py \ - google/protobuf/timestamp.pb.cc \ - google/protobuf/timestamp.pb.h \ - google/protobuf/timestamp.rb \ - google/protobuf/timestamp_pb2.py \ - google/protobuf/wrappers.pb.cc \ - google/protobuf/wrappers.pb.h \ - google/protobuf/wrappers.rb \ - google/protobuf/wrappers_pb2.py \ - Conformance/ConformanceRequest.php \ - Conformance/ConformanceResponse.php \ - Conformance/FailureSet.php \ - Conformance/WireFormat.php \ - GPBMetadata/Conformance.php \ - GPBMetadata/Google/Protobuf/Any.php \ - GPBMetadata/Google/Protobuf/Duration.php \ - GPBMetadata/Google/Protobuf/FieldMask.php \ - GPBMetadata/Google/Protobuf/Struct.php \ - GPBMetadata/Google/Protobuf/TestMessagesProto3.php \ - GPBMetadata/Google/Protobuf/Timestamp.php \ - GPBMetadata/Google/Protobuf/Wrappers.php \ - Google/Protobuf/Any.php \ - Google/Protobuf/BoolValue.php \ - Google/Protobuf/BytesValue.php \ - Google/Protobuf/DoubleValue.php \ - Google/Protobuf/Duration.php \ - Google/Protobuf/FieldMask.php \ - Google/Protobuf/FloatValue.php \ - Google/Protobuf/Int32Value.php \ - Google/Protobuf/Int64Value.php \ - Google/Protobuf/ListValue.php \ - Google/Protobuf/NullValue.php \ - Google/Protobuf/StringValue.php \ - Google/Protobuf/Struct.php \ - Google/Protobuf/Timestamp.php \ - Google/Protobuf/UInt32Value.php \ - Google/Protobuf/UInt64Value.php \ - Google/Protobuf/Value.php \ - Protobuf_test_messages/Proto3/ForeignEnum.php \ - Protobuf_test_messages/Proto3/ForeignMessage.php \ - Protobuf_test_messages/Proto3/TestAllTypes_NestedEnum.php \ - Protobuf_test_messages/Proto3/TestAllTypes_NestedMessage.php \ - Protobuf_test_messages/Proto3/TestAllTypes.php - # lite/com/google/protobuf/Any.java \ - # lite/com/google/protobuf/AnyOrBuilder.java \ - # lite/com/google/protobuf/AnyProto.java \ - # lite/com/google/protobuf/BoolValue.java \ - # lite/com/google/protobuf/BoolValueOrBuilder.java \ - # lite/com/google/protobuf/BytesValue.java \ - # lite/com/google/protobuf/BytesValueOrBuilder.java \ - # lite/com/google/protobuf/conformance/Conformance.java \ - # lite/com/google/protobuf/DoubleValue.java \ - # lite/com/google/protobuf/DoubleValueOrBuilder.java \ - # lite/com/google/protobuf/Duration.java \ - # lite/com/google/protobuf/DurationOrBuilder.java \ - # lite/com/google/protobuf/DurationProto.java \ - # lite/com/google/protobuf/FieldMask.java \ - # lite/com/google/protobuf/FieldMaskOrBuilder.java \ - # lite/com/google/protobuf/FieldMaskProto.java \ - # lite/com/google/protobuf/FloatValue.java \ - # lite/com/google/protobuf/FloatValueOrBuilder.java \ - # lite/com/google/protobuf/Int32Value.java \ - # lite/com/google/protobuf/Int32ValueOrBuilder.java \ - # lite/com/google/protobuf/Int64Value.java \ - # lite/com/google/protobuf/Int64ValueOrBuilder.java \ - # lite/com/google/protobuf/ListValue.java \ - # lite/com/google/protobuf/ListValueOrBuilder.java \ - # lite/com/google/protobuf/NullValue.java \ - # lite/com/google/protobuf/StringValue.java \ - # lite/com/google/protobuf/StringValueOrBuilder.java \ - # lite/com/google/protobuf/Struct.java \ - # lite/com/google/protobuf/StructOrBuilder.java \ - # lite/com/google/protobuf/StructProto.java \ - # lite/com/google/protobuf/Timestamp.java \ - # lite/com/google/protobuf/TimestampOrBuilder.java \ - # lite/com/google/protobuf/TimestampProto.java \ - # lite/com/google/protobuf/UInt32Value.java \ - # lite/com/google/protobuf/UInt32ValueOrBuilder.java \ - # lite/com/google/protobuf/UInt64Value.java \ - # lite/com/google/protobuf/UInt64ValueOrBuilder.java \ - # lite/com/google/protobuf/Value.java \ - # lite/com/google/protobuf/ValueOrBuilder.java \ - # lite/com/google/protobuf/WrappersProto.java - -bin_PROGRAMS = conformance-test-runner conformance-cpp - -# All source files excepet C++/Objective-C ones should be explicitly listed -# here because the autoconf tools don't include files of other languages -# automatically. -EXTRA_DIST = \ - ConformanceJava.java \ - ConformanceJavaLite.java \ - README.md \ - conformance.proto \ - conformance_python.py \ - conformance_ruby.rb \ - conformance_php.php \ - failure_list_cpp.txt \ - failure_list_csharp.txt \ - failure_list_java.txt \ - failure_list_js.txt \ - failure_list_objc.txt \ - failure_list_python.txt \ - failure_list_python_cpp.txt \ - failure_list_python-post26.txt \ - failure_list_ruby.txt \ - failure_list_php.txt \ - failure_list_php_c.txt - -conformance_test_runner_LDADD = $(top_srcdir)/src/libprotobuf.la -conformance_test_runner_SOURCES = conformance_test.h conformance_test.cc \ - conformance_test_main.cc \ - binary_json_conformance_suite.h \ - binary_json_conformance_suite.cc \ - text_format_conformance_suite.h \ - text_format_conformance_suite.cc \ - conformance_test_runner.cc \ - third_party/jsoncpp/json.h \ - third_party/jsoncpp/jsoncpp.cpp -nodist_conformance_test_runner_SOURCES = conformance.pb.cc google/protobuf/test_messages_proto3.pb.cc google/protobuf/test_messages_proto2.pb.cc -conformance_test_runner_CPPFLAGS = -I$(top_srcdir)/src -I$(srcdir) -conformance_test_runner_CXXFLAGS = -std=c++11 -# Explicit deps beacuse BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_cpp" could fail if parallel enough. -conformance_test_runner-conformance_test.$(OBJEXT): conformance.pb.h -conformance_test_runner-conformance_test_runner.$(OBJEXT): conformance.pb.h - -conformance_cpp_LDADD = $(top_srcdir)/src/libprotobuf.la -conformance_cpp_SOURCES = conformance_cpp.cc -nodist_conformance_cpp_SOURCES = conformance.pb.cc google/protobuf/test_messages_proto3.pb.cc google/protobuf/test_messages_proto2.pb.cc -conformance_cpp_CPPFLAGS = -I$(top_srcdir)/src -# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_cpp" could fail if parallel enough. -conformance_cpp-conformance_cpp.$(OBJEXT): conformance.pb.h - -if OBJC_CONFORMANCE_TEST - -bin_PROGRAMS += conformance-objc - -conformance_objc_SOURCES = conformance_objc.m ../objectivec/GPBProtocolBuffers.m -nodist_conformance_objc_SOURCES = Conformance.pbobjc.m google/protobuf/TestMessagesProto2.pbobjc.m google/protobuf/TestMessagesProto3.pbobjc.m -# On travis, the build fails without the isysroot because whatever system -# headers are being found don't include generics support for -# NSArray/NSDictionary, the only guess is their image at one time had an odd -# setup for Xcode and old frameworks are being found. -conformance_objc_CPPFLAGS = -I$(top_srcdir)/objectivec -isysroot `xcrun --sdk macosx --show-sdk-path` -conformance_objc_LDFLAGS = -framework Foundation -# Explicit dep beacuse BUILT_SOURCES are only done before a "make all/check" -# so a direct "make test_objc" could fail if parallel enough. -conformance_objc-conformance_objc.$(OBJEXT): Conformance.pbobjc.h google/protobuf/TestMessagesProto2.pbobjc.h google/protobuf/TestMessagesProto3.pbobjc.h - -endif - -# JavaScript well-known types are expected to be in a directory called -# google-protobuf, because they are usually in the google-protobuf npm -# package. But we want to use the sources from our tree, so we recreate -# that directory structure here. -google-protobuf: - mkdir google-protobuf - -if USE_EXTERNAL_PROTOC - -# Some implementations include pre-generated versions of well-known types. -protoc_middleman: $(conformance_protoc_inputs) $(conformance_proto2_protoc_inputs) $(well_known_type_protoc_inputs) google-protobuf - $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --objc_out=. --python_out=. --php_out=. --js_out=import_style=commonjs,binary:. $(conformance_protoc_inputs) - $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --objc_out=. --python_out=. --js_out=import_style=commonjs,binary:. $(conformance_proto2_protoc_inputs) - $(PROTOC) -I$(srcdir) -I$(top_srcdir) --cpp_out=. --java_out=. --ruby_out=. --python_out=. --js_out=import_style=commonjs,binary:google-protobuf $(well_known_type_protoc_inputs) - ## $(PROTOC) -I$(srcdir) -I$(top_srcdir) --java_out=lite:lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs) - touch protoc_middleman - -else - -# We have to cd to $(srcdir) before executing protoc because $(protoc_inputs) is -# relative to srcdir, which may not be the same as the current directory when -# building out-of-tree. -protoc_middleman: $(top_srcdir)/src/protoc$(EXEEXT) $(conformance_protoc_inputs) $(conformance_proto2_protoc_inputs) $(well_known_type_protoc_inputs) google-protobuf - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --objc_out=$$oldpwd --python_out=$$oldpwd --php_out=$$oldpwd --js_out=import_style=commonjs,binary:$$oldpwd $(conformance_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --objc_out=. --python_out=$$oldpwd --js_out=import_style=commonjs,binary:$$oldpwd $(conformance_proto2_protoc_inputs) ) - oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --cpp_out=$$oldpwd --java_out=$$oldpwd --ruby_out=$$oldpwd --python_out=$$oldpwd --js_out=import_style=commonjs,binary:$$oldpwd/google-protobuf $(well_known_type_protoc_inputs) ) - ## @mkdir -p lite - ## oldpwd=`pwd` && ( cd $(srcdir) && $$oldpwd/../src/protoc$(EXEEXT) -I. -I$(top_srcdir)/src --java_out=lite:$$oldpwd/lite $(conformance_protoc_inputs) $(well_known_type_protoc_inputs) ) - touch protoc_middleman - -endif - -$(protoc_outputs): protoc_middleman - -$(other_language_protoc_outputs): protoc_middleman - -CLEANFILES = $(protoc_outputs) protoc_middleman javac_middleman conformance-java javac_middleman_lite conformance-java-lite conformance-csharp conformance-php conformance-php-c $(other_language_protoc_outputs) - -MAINTAINERCLEANFILES = \ - Makefile.in - -javac_middleman: ConformanceJava.java protoc_middleman $(other_language_protoc_outputs) - jar=`ls ../java/util/target/*jar-with-dependencies.jar` && javac -classpath ../java/target/classes:$$jar ConformanceJava.java com/google/protobuf/conformance/Conformance.java com/google/protobuf_test_messages/proto3/TestMessagesProto3.java com/google/protobuf_test_messages/proto2/TestMessagesProto2.java - @touch javac_middleman - -conformance-java: javac_middleman - @echo "Writing shortcut script conformance-java..." - @echo '#! /bin/sh' > conformance-java - @jar=`ls ../java/util/target/*jar-with-dependencies.jar` && echo java -classpath .:../java/target/classes:$$jar ConformanceJava '$$@' >> conformance-java - @chmod +x conformance-java - -javac_middleman_lite: ConformanceJavaLite.java protoc_middleman $(other_language_protoc_outputs) - javac -classpath ../java/lite/target/classes:lite ConformanceJavaLite.java lite/com/google/protobuf/conformance/Conformance.java - @touch javac_middleman_lite - -conformance-java-lite: javac_middleman_lite - @echo "Writing shortcut script conformance-java-lite..." - @echo '#! /bin/sh' > conformance-java-lite - @echo java -classpath .:../java/lite/target/classes:lite ConformanceJavaLite '$$@' >> conformance-java-lite - @chmod +x conformance-java-lite - -# Currently the conformance code is alongside the rest of the C# -# source, as it's easier to maintain there. We assume we've already -# built that, so we just need a script to run it. -conformance-csharp: $(other_language_protoc_outputs) - @echo "Writing shortcut script conformance-csharp..." - @echo '#! /bin/sh' > conformance-csharp - @echo 'dotnet ../csharp/src/Google.Protobuf.Conformance/bin/Release/netcoreapp2.1/Google.Protobuf.Conformance.dll "$$@"' >> conformance-csharp - @chmod +x conformance-csharp - -conformance-php: - @echo "Writing shortcut script conformance-php..." - @echo '#! /bin/sh' > conformance-php - @echo 'php -d auto_prepend_file=autoload.php ./conformance_php.php' >> conformance-php - @chmod +x conformance-php - -conformance-php-c: - @echo "Writing shortcut script conformance-php-c..." - @echo '#! /bin/sh' > conformance-php-c - @echo 'php -dextension=../php/ext/google/protobuf/modules/protobuf.so ./conformance_php.php' >> conformance-php-c - @chmod +x conformance-php-c - -# Targets for actually running tests. -test_cpp: protoc_middleman conformance-test-runner conformance-cpp - ./conformance-test-runner --enforce_recommended --failure_list failure_list_cpp.txt ./conformance-cpp - -test_java: protoc_middleman conformance-test-runner conformance-java - ./conformance-test-runner --enforce_recommended --failure_list failure_list_java.txt --text_format_failure_list text_format_failure_list_java.txt ./conformance-java - -test_java_lite: protoc_middleman conformance-test-runner conformance-java-lite - ./conformance-test-runner --enforce_recommended ./conformance-java-lite - -test_csharp: protoc_middleman conformance-test-runner conformance-csharp - ./conformance-test-runner --enforce_recommended --failure_list failure_list_csharp.txt --text_format_failure_list text_format_failure_list_csharp.txt ./conformance-csharp - -test_ruby: protoc_middleman conformance-test-runner $(other_language_protoc_outputs) - RUBYLIB=../ruby/lib:. ./conformance-test-runner --enforce_recommended --failure_list failure_list_ruby.txt --text_format_failure_list text_format_failure_list_ruby.txt ./conformance_ruby.rb - -test_ruby_mac: protoc_middleman conformance-test-runner $(other_language_protoc_outputs) - RUBYLIB=../ruby/lib:. ./conformance-test-runner --enforce_recommended --failure_list failure_list_ruby_mac.txt --text_format_failure_list text_format_failure_list_ruby.txt ./conformance_ruby.rb - -test_php: protoc_middleman conformance-test-runner conformance-php $(other_language_protoc_outputs) - ./conformance-test-runner --enforce_recommended --failure_list failure_list_php.txt --text_format_failure_list text_format_failure_list_php.txt ./conformance-php - -test_php_c: protoc_middleman conformance-test-runner conformance-php-c $(other_language_protoc_outputs) - ./conformance-test-runner --enforce_recommended --failure_list failure_list_php_c.txt --text_format_failure_list text_format_failure_list_php.txt ./conformance-php-c - -test_php_zts_c: protoc_middleman conformance-test-runner conformance-php-c $(other_language_protoc_outputs) - ./conformance-test-runner --enforce_recommended --failure_list failure_list_php_zts_c.txt --text_format_failure_list text_format_failure_list_php.txt ./conformance-php-c - -# These depend on library paths being properly set up. The easiest way to -# run them is to just use "tox" from the python dir. -test_python: protoc_middleman conformance-test-runner - ./conformance-test-runner --enforce_recommended --failure_list failure_list_python.txt --text_format_failure_list text_format_failure_list_python.txt ./conformance_python.py - -test_python_cpp: protoc_middleman conformance-test-runner - ./conformance-test-runner --enforce_recommended --failure_list failure_list_python_cpp.txt ./conformance_python.py - -test_nodejs: protoc_middleman conformance-test-runner $(other_language_protoc_outputs) - NODE_PATH=../js:. ./conformance-test-runner --enforce_recommended --failure_list failure_list_js.txt ./conformance_nodejs.js - -if OBJC_CONFORMANCE_TEST - -test_objc: protoc_middleman conformance-test-runner conformance-objc - ./conformance-test-runner --enforce_recommended --failure_list failure_list_objc.txt ./conformance-objc - -endif diff --git a/lib/protobuf/conformance/README.md b/lib/protobuf/conformance/README.md deleted file mode 100644 index 06925db..0000000 --- a/lib/protobuf/conformance/README.md +++ /dev/null @@ -1,71 +0,0 @@ -Protocol Buffers - Google's data interchange format -=================================================== - -Copyright 2008 Google Inc. - -This directory contains conformance tests for testing completeness and -correctness of Protocol Buffers implementations. These tests are designed -to be easy to run against any Protocol Buffers implementation. - -This directory contains the tester process `conformance-test`, which -contains all of the tests themselves. Then separate programs written -in whatever language you want to test communicate with the tester -program over a pipe. - -Before running any of these tests, make sure you run `make` in the base -directory to build `protoc`, since all the tests depend on it. - - $ make - -Running the tests for C++ -------------------------- - -To run the tests against the C++ implementation, run: - - $ cd conformance && make test_cpp - -Running the tests for JavaScript (Node.js) ------------------------------------------- - -To run the JavaScript tests against Node.js, make sure you have "node" -on your path and then run: - - $ cd conformance && make test_nodejs - -Running the tests for Ruby (MRI) --------------------------------- - -To run the Ruby tests against MRI, first build the C extension: - - $ cd ruby && rake - -Then run the tests like so: - - $ cd conformance && make test_ruby - -Running the tests for other languages -------------------------------------- - -Most of the languages in the Protobuf source tree are set up to run -conformance tests. However some of them are more tricky to set up -properly. See `tests.sh` in the base of the repository to see how -Travis runs the tests. - -Testing other Protocol Buffer implementations ---------------------------------------------- - -To run these tests against a new Protocol Buffers implementation, write a -program in your language that uses the protobuf implementation you want -to test. This program should implement the testing protocol defined in -[conformance.proto](https://github.com/protocolbuffers/protobuf/blob/master/conformance/conformance.proto). -This is designed to be as easy as possible: the C++ version is only -150 lines and is a good example for what this program should look like -(see [conformance_cpp.cc](https://github.com/protocolbuffers/protobuf/blob/master/conformance/conformance_cpp.cc)). -The program only needs to be able to read from stdin and write to stdout. - -Portability ------------ - -Note that the test runner currently does not work on Windows. Patches -to fix this are welcome! (But please get in touch first to settle on -a general implementation strategy). diff --git a/lib/protobuf/conformance/autoload.php b/lib/protobuf/conformance/autoload.php deleted file mode 100644 index 0f49aec..0000000 --- a/lib/protobuf/conformance/autoload.php +++ /dev/null @@ -1,21 +0,0 @@ - -#include - -#include -#include -#include -#include -#include -#include - -using conformance::ConformanceRequest; -using conformance::ConformanceResponse; -using conformance::WireFormat; -using google::protobuf::Descriptor; -using google::protobuf::FieldDescriptor; -using google::protobuf::Message; -using google::protobuf::internal::WireFormatLite; -using google::protobuf::TextFormat; -using google::protobuf::util::NewTypeResolverForDescriptorPool; -using protobuf_test_messages::proto3::TestAllTypesProto3; -using protobuf_test_messages::proto2::TestAllTypesProto2; -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 -// arbitrary protos (even invalid ones). - -const string empty; - -string cat(const string& a, const string& b, - const string& c = empty, - const string& d = empty, - const string& e = empty, - const string& f = empty, - const string& g = empty, - const string& h = empty, - const string& i = empty, - const string& j = empty, - const string& k = empty, - const string& l = empty) { - string ret; - ret.reserve(a.size() + b.size() + c.size() + d.size() + e.size() + f.size() + - g.size() + h.size() + i.size() + j.size() + k.size() + l.size()); - ret.append(a); - ret.append(b); - ret.append(c); - ret.append(d); - ret.append(e); - ret.append(f); - ret.append(g); - ret.append(h); - ret.append(i); - ret.append(j); - ret.append(k); - ret.append(l); - return ret; -} - -// The maximum number of bytes that it takes to encode a 64-bit varint. -#define VARINT_MAX_LEN 10 - -size_t vencode64(uint64_t val, int over_encoded_bytes, char *buf) { - if (val == 0) { buf[0] = 0; return 1; } - size_t i = 0; - while (val) { - uint8_t byte = val & 0x7fU; - val >>= 7; - if (val || over_encoded_bytes) byte |= 0x80U; - buf[i++] = byte; - } - while (over_encoded_bytes--) { - assert(i < 10); - uint8_t byte = over_encoded_bytes ? 0x80 : 0; - buf[i++] = byte; - } - return i; -} - -string varint(uint64_t x) { - char buf[VARINT_MAX_LEN]; - size_t len = vencode64(x, 0, buf); - return string(buf, len); -} - -// Encodes a varint that is |extra| bytes longer than it needs to be, but still -// valid. -string longvarint(uint64_t x, int extra) { - char buf[VARINT_MAX_LEN]; - size_t len = vencode64(x, extra, buf); - return string(buf, len); -} - -// TODO: proper byte-swapping for big-endian machines. -string fixed32(void *data) { return string(static_cast(data), 4); } -string fixed64(void *data) { return string(static_cast(data), 8); } - -string delim(const string& buf) { return cat(varint(buf.size()), buf); } -string u32(uint32_t u32) { return fixed32(&u32); } -string u64(uint64_t u64) { return fixed64(&u64); } -string flt(float f) { return fixed32(&f); } -string dbl(double d) { return fixed64(&d); } -string zz32(int32_t x) { return varint(WireFormatLite::ZigZagEncode32(x)); } -string zz64(int64_t x) { return varint(WireFormatLite::ZigZagEncode64(x)); } - -string tag(uint32_t fieldnum, char wire_type) { - return varint((fieldnum << 3) | wire_type); -} - -string submsg(uint32_t fn, const string& buf) { - return cat( tag(fn, WireFormatLite::WIRETYPE_LENGTH_DELIMITED), delim(buf) ); -} - -#define UNKNOWN_FIELD 666 - -const FieldDescriptor* GetFieldForType(FieldDescriptor::Type type, - bool repeated, bool is_proto3) { - - const Descriptor* d = is_proto3 ? - TestAllTypesProto3().GetDescriptor() : TestAllTypesProto2().GetDescriptor(); - for (int i = 0; i < d->field_count(); i++) { - const FieldDescriptor* f = d->field(i); - if (f->type() == type && f->is_repeated() == repeated) { - return f; - } - } - GOOGLE_LOG(FATAL) << "Couldn't find field with type " << (int)type; - return nullptr; -} - -string UpperCase(string str) { - for (int i = 0; i < str.size(); i++) { - str[i] = toupper(str[i]); - } - return str; -} - -std::unique_ptr NewTestMessage(bool is_proto3) { - std::unique_ptr prototype; - if (is_proto3) { - prototype.reset(new TestAllTypesProto3()); - } else { - prototype.reset(new TestAllTypesProto2()); - } - return prototype; -} - -} // anonymous namespace - -namespace google { -namespace protobuf { - -bool BinaryAndJsonConformanceSuite::ParseJsonResponse( - const ConformanceResponse& response, - Message* test_message) { - string binary_protobuf; - util::Status status = - JsonToBinaryString(type_resolver_.get(), type_url_, - response.json_payload(), &binary_protobuf); - - if (!status.ok()) { - return false; - } - - if (!test_message->ParseFromString(binary_protobuf)) { - GOOGLE_LOG(FATAL) - << "INTERNAL ERROR: internal JSON->protobuf transcode " - << "yielded unparseable proto."; - return false; - } - - return true; -} - -bool BinaryAndJsonConformanceSuite::ParseResponse( - const ConformanceResponse& response, - const ConformanceRequestSetting& setting, - Message* test_message) { - const ConformanceRequest& request = setting.GetRequest(); - WireFormat requested_output = request.requested_output_format(); - const string& test_name = setting.GetTestName(); - ConformanceLevel level = setting.GetLevel(); - - switch (response.result_case()) { - case ConformanceResponse::kProtobufPayload: { - if (requested_output != conformance::PROTOBUF) { - ReportFailure( - test_name, level, request, response, - StrCat("Test was asked for ", WireFormatToString(requested_output), - " output but provided PROTOBUF instead.").c_str()); - return false; - } - - if (!test_message->ParseFromString(response.protobuf_payload())) { - ReportFailure(test_name, level, request, response, - "Protobuf output we received from test was unparseable."); - return false; - } - - break; - } - - case ConformanceResponse::kJsonPayload: { - if (requested_output != conformance::JSON) { - ReportFailure( - test_name, level, request, response, - StrCat("Test was asked for ", WireFormatToString(requested_output), - " output but provided JSON instead.").c_str()); - return false; - } - - if (!ParseJsonResponse(response, test_message)) { - ReportFailure(test_name, level, request, response, - "JSON output we received from test was unparseable."); - return false; - } - - break; - } - - default: - GOOGLE_LOG(FATAL) << test_name << ": unknown payload type: " - << response.result_case(); - } - - return true; -} - -void BinaryAndJsonConformanceSuite::ExpectParseFailureForProtoWithProtoVersion ( - const string& proto, const string& test_name, ConformanceLevel level, - bool is_proto3) { - std::unique_ptr prototype = NewTestMessage(is_proto3); - // 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. - ConformanceRequestSetting setting( - level, conformance::PROTOBUF, conformance::PROTOBUF, - conformance::BINARY_TEST, - *prototype, test_name, proto); - - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - string effective_test_name = - StrCat(setting.ConformanceLevelToString(level), - (is_proto3 ? ".Proto3" : ".Proto2"), - ".ProtobufInput.", test_name); - - RunTest(effective_test_name, request, &response); - if (response.result_case() == ConformanceResponse::kParseError) { - ReportSuccess(effective_test_name); - } else if (response.result_case() == ConformanceResponse::kSkipped) { - ReportSkip(effective_test_name, request, response); - } else { - ReportFailure(effective_test_name, level, request, response, - "Should have failed to parse, but didn't."); - } -} - -// Expect that this precise protobuf will cause a parse error. -void BinaryAndJsonConformanceSuite::ExpectParseFailureForProto( - const string& proto, const string& test_name, ConformanceLevel level) { - ExpectParseFailureForProtoWithProtoVersion(proto, test_name, level, true); - ExpectParseFailureForProtoWithProtoVersion(proto, test_name, level, false); -} - -// Expect that this protobuf will cause a parse error, even if it is followed -// by valid protobuf data. We can try running this twice: once with this -// data verbatim and once with this data followed by some valid data. -// -// TODO(haberman): implement the second of these. -void BinaryAndJsonConformanceSuite::ExpectHardParseFailureForProto( - const string& proto, const string& test_name, ConformanceLevel level) { - return ExpectParseFailureForProto(proto, test_name, level); -} - -void BinaryAndJsonConformanceSuite::RunValidJsonTest( - const string& test_name, ConformanceLevel level, const string& input_json, - const string& equivalent_text_format) { - TestAllTypesProto3 prototype; - ConformanceRequestSetting setting1( - level, conformance::JSON, conformance::PROTOBUF, - conformance::JSON_TEST, - prototype, test_name, input_json); - RunValidInputTest(setting1, equivalent_text_format); - ConformanceRequestSetting setting2( - level, conformance::JSON, conformance::JSON, - conformance::JSON_TEST, - prototype, test_name, input_json); - RunValidInputTest(setting2, equivalent_text_format); -} - -void BinaryAndJsonConformanceSuite::RunValidJsonTestWithProtobufInput( - const string& test_name, ConformanceLevel level, const TestAllTypesProto3& input, - const string& equivalent_text_format) { - ConformanceRequestSetting setting( - level, conformance::PROTOBUF, conformance::JSON, - conformance::JSON_TEST, - input, test_name, input.SerializeAsString()); - RunValidInputTest(setting, equivalent_text_format); -} - -void BinaryAndJsonConformanceSuite::RunValidJsonIgnoreUnknownTest( - const string& test_name, ConformanceLevel level, const string& input_json, - const string& equivalent_text_format) { - TestAllTypesProto3 prototype; - ConformanceRequestSetting setting( - level, conformance::JSON, conformance::PROTOBUF, - conformance::JSON_IGNORE_UNKNOWN_PARSING_TEST, - prototype, test_name, input_json); - RunValidInputTest(setting, equivalent_text_format); -} - -void BinaryAndJsonConformanceSuite::RunValidProtobufTest( - const string& test_name, ConformanceLevel level, - const string& input_protobuf, const string& equivalent_text_format, - bool is_proto3) { - std::unique_ptr prototype = NewTestMessage(is_proto3); - - ConformanceRequestSetting setting1( - level, conformance::PROTOBUF, conformance::PROTOBUF, - conformance::BINARY_TEST, - *prototype, test_name, input_protobuf); - RunValidInputTest(setting1, equivalent_text_format); - - if (is_proto3) { - ConformanceRequestSetting setting2( - level, conformance::PROTOBUF, conformance::JSON, - conformance::BINARY_TEST, - *prototype, test_name, input_protobuf); - RunValidInputTest(setting2, equivalent_text_format); - } -} - -void BinaryAndJsonConformanceSuite::RunValidBinaryProtobufTest( - const string& test_name, ConformanceLevel level, - const string& input_protobuf, bool is_proto3) { - std::unique_ptr prototype = NewTestMessage(is_proto3); - ConformanceRequestSetting setting( - level, conformance::PROTOBUF, conformance::PROTOBUF, - conformance::BINARY_TEST, - *prototype, test_name, input_protobuf); - RunValidBinaryInputTest(setting, input_protobuf); -} - -void BinaryAndJsonConformanceSuite::RunValidProtobufTestWithMessage( - const string& test_name, ConformanceLevel level, const Message *input, - const string& equivalent_text_format, bool is_proto3) { - RunValidProtobufTest(test_name, level, input->SerializeAsString(), - equivalent_text_format, is_proto3); -} - -// According to proto3 JSON specification, JSON serializers follow more strict -// rules than parsers (e.g., a serializer must serialize int32 values as JSON -// numbers while the parser is allowed to accept them as JSON strings). This -// method allows strict checking on a proto3 JSON serializer by inspecting -// the JSON output directly. -void BinaryAndJsonConformanceSuite::RunValidJsonTestWithValidator( - const string& test_name, ConformanceLevel level, const string& input_json, - const Validator& validator) { - TestAllTypesProto3 prototype; - ConformanceRequestSetting setting( - level, conformance::JSON, conformance::JSON, - conformance::JSON_TEST, - prototype, test_name, input_json); - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - string effective_test_name = - StrCat(setting.ConformanceLevelToString(level), - ".Proto3.JsonInput.", - test_name, ".Validator"); - - RunTest(effective_test_name, request, &response); - - if (response.result_case() == ConformanceResponse::kSkipped) { - ReportSkip(effective_test_name, request, response); - return; - } - - if (response.result_case() != ConformanceResponse::kJsonPayload) { - ReportFailure(effective_test_name, level, request, response, - "Expected JSON payload but got type %d.", - response.result_case()); - return; - } - Json::Reader reader; - Json::Value value; - if (!reader.parse(response.json_payload(), value)) { - ReportFailure(effective_test_name, level, request, response, - "JSON payload cannot be parsed as valid JSON: %s", - reader.getFormattedErrorMessages().c_str()); - return; - } - if (!validator(value)) { - ReportFailure(effective_test_name, level, request, response, - "JSON payload validation failed."); - return; - } - ReportSuccess(effective_test_name); -} - -void BinaryAndJsonConformanceSuite::ExpectParseFailureForJson( - const string& test_name, ConformanceLevel level, const string& input_json) { - TestAllTypesProto3 prototype; - // 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. - ConformanceRequestSetting setting( - level, conformance::JSON, conformance::JSON, - conformance::JSON_TEST, - prototype, test_name, input_json); - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - string effective_test_name = - StrCat(setting.ConformanceLevelToString(level), - ".Proto3.JsonInput.", test_name); - - RunTest(effective_test_name, request, &response); - if (response.result_case() == ConformanceResponse::kParseError) { - ReportSuccess(effective_test_name); - } else if (response.result_case() == ConformanceResponse::kSkipped) { - ReportSkip(effective_test_name, request, response); - } else { - ReportFailure(effective_test_name, level, request, response, - "Should have failed to parse, but didn't."); - } -} - -void BinaryAndJsonConformanceSuite::ExpectSerializeFailureForJson( - const string& test_name, ConformanceLevel level, const string& text_format) { - TestAllTypesProto3 payload_message; - GOOGLE_CHECK( - TextFormat::ParseFromString(text_format, &payload_message)) - << "Failed to parse: " << text_format; - - TestAllTypesProto3 prototype; - ConformanceRequestSetting setting( - level, conformance::PROTOBUF, conformance::JSON, - conformance::JSON_TEST, - prototype, test_name, payload_message.SerializeAsString()); - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - string effective_test_name = - StrCat(setting.ConformanceLevelToString(level), - ".", test_name, ".JsonOutput"); - - RunTest(effective_test_name, request, &response); - if (response.result_case() == ConformanceResponse::kSerializeError) { - ReportSuccess(effective_test_name); - } else if (response.result_case() == ConformanceResponse::kSkipped) { - ReportSkip(effective_test_name, request, response); - } else { - ReportFailure(effective_test_name, level, request, response, - "Should have failed to serialize, but didn't."); - } -} - -//TODO: proto2? -void BinaryAndJsonConformanceSuite::TestPrematureEOFForType( - FieldDescriptor::Type type) { - // Incomplete values for each wire type. - static const string incompletes[6] = { - string("\x80"), // VARINT - string("abcdefg"), // 64BIT - string("\x80"), // DELIMITED (partial length) - string(), // START_GROUP (no value required) - string(), // END_GROUP (no value required) - string("abc") // 32BIT - }; - - const FieldDescriptor* field = GetFieldForType(type, false, true); - const FieldDescriptor* rep_field = GetFieldForType(type, true, true); - WireFormatLite::WireType wire_type = WireFormatLite::WireTypeForFieldType( - static_cast(type)); - const string& incomplete = incompletes[wire_type]; - const string type_name = - UpperCase(string(".") + FieldDescriptor::TypeName(type)); - - ExpectParseFailureForProto( - tag(field->number(), wire_type), - "PrematureEofBeforeKnownNonRepeatedValue" + type_name, REQUIRED); - - ExpectParseFailureForProto( - tag(rep_field->number(), wire_type), - "PrematureEofBeforeKnownRepeatedValue" + type_name, REQUIRED); - - ExpectParseFailureForProto( - tag(UNKNOWN_FIELD, wire_type), - "PrematureEofBeforeUnknownValue" + type_name, REQUIRED); - - ExpectParseFailureForProto( - cat( tag(field->number(), wire_type), incomplete ), - "PrematureEofInsideKnownNonRepeatedValue" + type_name, REQUIRED); - - ExpectParseFailureForProto( - cat( tag(rep_field->number(), wire_type), incomplete ), - "PrematureEofInsideKnownRepeatedValue" + type_name, REQUIRED); - - ExpectParseFailureForProto( - cat( tag(UNKNOWN_FIELD, wire_type), incomplete ), - "PrematureEofInsideUnknownValue" + type_name, REQUIRED); - - if (wire_type == WireFormatLite::WIRETYPE_LENGTH_DELIMITED) { - ExpectParseFailureForProto( - cat( tag(field->number(), wire_type), varint(1) ), - "PrematureEofInDelimitedDataForKnownNonRepeatedValue" + type_name, - REQUIRED); - - ExpectParseFailureForProto( - cat( tag(rep_field->number(), wire_type), varint(1) ), - "PrematureEofInDelimitedDataForKnownRepeatedValue" + type_name, - REQUIRED); - - // EOF in the middle of delimited data for unknown value. - ExpectParseFailureForProto( - cat( tag(UNKNOWN_FIELD, wire_type), varint(1) ), - "PrematureEofInDelimitedDataForUnknownValue" + type_name, REQUIRED); - - if (type == FieldDescriptor::TYPE_MESSAGE) { - // Submessage ends in the middle of a value. - string incomplete_submsg = - cat( tag(WireFormatLite::TYPE_INT32, WireFormatLite::WIRETYPE_VARINT), - incompletes[WireFormatLite::WIRETYPE_VARINT] ); - ExpectHardParseFailureForProto( - cat( tag(field->number(), WireFormatLite::WIRETYPE_LENGTH_DELIMITED), - varint(incomplete_submsg.size()), - incomplete_submsg ), - "PrematureEofInSubmessageValue" + type_name, REQUIRED); - } - } else if (type != FieldDescriptor::TYPE_GROUP) { - // Non-delimited, non-group: eligible for packing. - - // Packed region ends in the middle of a value. - ExpectHardParseFailureForProto( - cat(tag(rep_field->number(), WireFormatLite::WIRETYPE_LENGTH_DELIMITED), - varint(incomplete.size()), incomplete), - "PrematureEofInPackedFieldValue" + type_name, REQUIRED); - - // EOF in the middle of packed region. - ExpectParseFailureForProto( - cat(tag(rep_field->number(), WireFormatLite::WIRETYPE_LENGTH_DELIMITED), - varint(1)), - "PrematureEofInPackedField" + type_name, REQUIRED); - } -} - -void BinaryAndJsonConformanceSuite::TestValidDataForType( - FieldDescriptor::Type type, - std::vector> values) { - for (int is_proto3 = 0; is_proto3 < 2; is_proto3++) { - const string type_name = - UpperCase(string(".") + FieldDescriptor::TypeName(type)); - WireFormatLite::WireType wire_type = WireFormatLite::WireTypeForFieldType( - static_cast(type)); - const FieldDescriptor* field = GetFieldForType(type, false, is_proto3); - const FieldDescriptor* rep_field = GetFieldForType(type, true, is_proto3); - - RunValidProtobufTest("ValidDataScalar" + type_name, REQUIRED, - cat(tag(field->number(), wire_type), values[0].first), - field->name() + ": " + values[0].second, is_proto3); - - string proto; - string text = field->name() + ": " + values.back().second; - for (size_t i = 0; i < values.size(); i++) { - proto += cat(tag(field->number(), wire_type), values[i].first); - } - RunValidProtobufTest("RepeatedScalarSelectsLast" + type_name, REQUIRED, - proto, text, is_proto3); - - proto.clear(); - text.clear(); - - for (size_t i = 0; i < values.size(); i++) { - proto += cat(tag(rep_field->number(), wire_type), values[i].first); - text += rep_field->name() + ": " + values[i].second + " "; - } - RunValidProtobufTest("ValidDataRepeated" + type_name, REQUIRED, - proto, text, is_proto3); - } -} - -// TODO: proto2? -void BinaryAndJsonConformanceSuite::TestIllegalTags() { - // field num 0 is illegal - string nullfield[] = { - "\1DEADBEEF", - "\2\1\1", - "\3\4", - "\5DEAD" - }; - for (int i = 0; i < 4; i++) { - string name = "IllegalZeroFieldNum_Case_0"; - name.back() += i; - ExpectParseFailureForProto(nullfield[i], name, REQUIRED); - } -} -template -void BinaryAndJsonConformanceSuite::TestOneofMessage ( - MessageType &message, bool is_proto3) { - message.set_oneof_uint32(0); - RunValidProtobufTestWithMessage( - "OneofZeroUint32", RECOMMENDED, &message, "oneof_uint32: 0", is_proto3); - message.mutable_oneof_nested_message()->set_a(0); - RunValidProtobufTestWithMessage( - "OneofZeroMessage", RECOMMENDED, &message, - is_proto3 ? "oneof_nested_message: {}" : "oneof_nested_message: {a: 0}", - is_proto3); - message.mutable_oneof_nested_message()->set_a(1); - RunValidProtobufTestWithMessage( - "OneofZeroMessageSetTwice", RECOMMENDED, &message, - "oneof_nested_message: {a: 1}", - is_proto3); - message.set_oneof_string(""); - RunValidProtobufTestWithMessage( - "OneofZeroString", RECOMMENDED, &message, "oneof_string: \"\"", is_proto3); - message.set_oneof_bytes(""); - RunValidProtobufTestWithMessage( - "OneofZeroBytes", RECOMMENDED, &message, "oneof_bytes: \"\"", is_proto3); - message.set_oneof_bool(false); - RunValidProtobufTestWithMessage( - "OneofZeroBool", RECOMMENDED, &message, "oneof_bool: false", is_proto3); - message.set_oneof_uint64(0); - RunValidProtobufTestWithMessage( - "OneofZeroUint64", RECOMMENDED, &message, "oneof_uint64: 0", is_proto3); - message.set_oneof_float(0.0f); - RunValidProtobufTestWithMessage( - "OneofZeroFloat", RECOMMENDED, &message, "oneof_float: 0", is_proto3); - message.set_oneof_double(0.0); - RunValidProtobufTestWithMessage( - "OneofZeroDouble", RECOMMENDED, &message, "oneof_double: 0", is_proto3); - message.set_oneof_enum(MessageType::FOO); - RunValidProtobufTestWithMessage( - "OneofZeroEnum", RECOMMENDED, &message, "oneof_enum: FOO", is_proto3); -} - -template -void BinaryAndJsonConformanceSuite::TestUnknownMessage( - MessageType& message, bool is_proto3) { - message.ParseFromString("\xA8\x1F\x01"); - RunValidBinaryProtobufTest("UnknownVarint", REQUIRED, - message.SerializeAsString(), is_proto3); -} - -void BinaryAndJsonConformanceSuite::RunSuiteImpl() { - // Hack to get the list of test failures based on whether - // GOOGLE3_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER is enabled or not. - conformance::FailureSet failure_set; - ConformanceRequest req; - ConformanceResponse res; - req.set_message_type(failure_set.GetTypeName()); - req.set_protobuf_payload(""); - req.set_requested_output_format(conformance::WireFormat::PROTOBUF); - RunTest("FindFailures", req, &res); - GOOGLE_CHECK(failure_set.MergeFromString(res.protobuf_payload())); - for (const string& failure : failure_set.failure()) { - AddExpectedFailedTest(failure); - } - - type_resolver_.reset(NewTypeResolverForDescriptorPool( - kTypeUrlPrefix, DescriptorPool::generated_pool())); - type_url_ = GetTypeUrl(TestAllTypesProto3::descriptor()); - - for (int i = 1; i <= FieldDescriptor::MAX_TYPE; i++) { - if (i == FieldDescriptor::TYPE_GROUP) continue; - TestPrematureEOFForType(static_cast(i)); - } - - TestIllegalTags(); - - int64 kInt64Min = -9223372036854775808ULL; - int64 kInt64Max = 9223372036854775807ULL; - uint64 kUint64Max = 18446744073709551615ULL; - int32 kInt32Max = 2147483647; - int32 kInt32Min = -2147483648; - uint32 kUint32Max = 4294967295UL; - - TestValidDataForType(FieldDescriptor::TYPE_DOUBLE, { - {dbl(0.1), "0.1"}, - {dbl(1.7976931348623157e+308), "1.7976931348623157e+308"}, - {dbl(2.22507385850720138309e-308), "2.22507385850720138309e-308"} - }); - TestValidDataForType(FieldDescriptor::TYPE_FLOAT, { - {flt(0.1), "0.1"}, - {flt(1.00000075e-36), "1.00000075e-36"}, - {flt(3.402823e+38), "3.402823e+38"}, // 3.40282347e+38 - {flt(1.17549435e-38f), "1.17549435e-38"} - }); - TestValidDataForType(FieldDescriptor::TYPE_INT64, { - {varint(12345), "12345"}, - {varint(kInt64Max), std::to_string(kInt64Max)}, - {varint(kInt64Min), std::to_string(kInt64Min)} - }); - TestValidDataForType(FieldDescriptor::TYPE_UINT64, { - {varint(12345), "12345"}, - {varint(kUint64Max), std::to_string(kUint64Max)}, - {varint(0), "0"} - }); - TestValidDataForType(FieldDescriptor::TYPE_INT32, { - {varint(12345), "12345"}, - {longvarint(12345, 2), "12345"}, - {longvarint(12345, 7), "12345"}, - {varint(kInt32Max), std::to_string(kInt32Max)}, - {varint(kInt32Min), std::to_string(kInt32Min)}, - {varint(1LL << 33), std::to_string(static_cast(1LL << 33))}, - {varint((1LL << 33) - 1), - std::to_string(static_cast((1LL << 33) - 1))}, - }); - TestValidDataForType(FieldDescriptor::TYPE_UINT32, { - {varint(12345), "12345"}, - {longvarint(12345, 2), "12345"}, - {longvarint(12345, 7), "12345"}, - {varint(kUint32Max), std::to_string(kUint32Max)}, // UINT32_MAX - {varint(0), "0"}, - {varint(1LL << 33), std::to_string(static_cast(1LL << 33))}, - {varint((1LL << 33) - 1), - std::to_string(static_cast((1LL << 33) - 1))}, - }); - TestValidDataForType(FieldDescriptor::TYPE_FIXED64, { - {u64(12345), "12345"}, - {u64(kUint64Max), std::to_string(kUint64Max)}, - {u64(0), "0"} - }); - TestValidDataForType(FieldDescriptor::TYPE_FIXED32, { - {u32(12345), "12345"}, - {u32(kUint32Max), std::to_string(kUint32Max)}, // UINT32_MAX - {u32(0), "0"} - }); - TestValidDataForType(FieldDescriptor::TYPE_SFIXED64, { - {u64(12345), "12345"}, - {u64(kInt64Max), std::to_string(kInt64Max)}, - {u64(kInt64Min), std::to_string(kInt64Min)} - }); - TestValidDataForType(FieldDescriptor::TYPE_SFIXED32, { - {u32(12345), "12345"}, - {u32(kInt32Max), std::to_string(kInt32Max)}, - {u32(kInt32Min), std::to_string(kInt32Min)} - }); - TestValidDataForType(FieldDescriptor::TYPE_BOOL, { - {varint(1), "true"}, - {varint(0), "false"}, - {varint(12345678), "true"} - }); - TestValidDataForType(FieldDescriptor::TYPE_SINT32, { - {zz32(12345), "12345"}, - {zz32(kInt32Max), std::to_string(kInt32Max)}, - {zz32(kInt32Min), std::to_string(kInt32Min)} - }); - TestValidDataForType(FieldDescriptor::TYPE_SINT64, { - {zz64(12345), "12345"}, - {zz64(kInt64Max), std::to_string(kInt64Max)}, - {zz64(kInt64Min), std::to_string(kInt64Min)} - }); - - // TODO(haberman): - // TestValidDataForType(FieldDescriptor::TYPE_STRING - // TestValidDataForType(FieldDescriptor::TYPE_GROUP - // TestValidDataForType(FieldDescriptor::TYPE_MESSAGE - // TestValidDataForType(FieldDescriptor::TYPE_BYTES - // TestValidDataForType(FieldDescriptor::TYPE_ENUM - - RunValidJsonTest("HelloWorld", REQUIRED, - "{\"optionalString\":\"Hello, World!\"}", - "optional_string: 'Hello, World!'"); - - // NOTE: The spec for JSON support is still being sorted out, these may not - // all be correct. - // Test field name conventions. - RunValidJsonTest( - "FieldNameInSnakeCase", REQUIRED, - R"({ - "fieldname1": 1, - "fieldName2": 2, - "FieldName3": 3, - "fieldName4": 4 - })", - R"( - fieldname1: 1 - field_name2: 2 - _field_name3: 3 - field__name4_: 4 - )"); - RunValidJsonTest( - "FieldNameWithNumbers", REQUIRED, - R"({ - "field0name5": 5, - "field0Name6": 6 - })", - R"( - field0name5: 5 - field_0_name6: 6 - )"); - RunValidJsonTest( - "FieldNameWithMixedCases", REQUIRED, - R"({ - "fieldName7": 7, - "FieldName8": 8, - "fieldName9": 9, - "FieldName10": 10, - "FIELDNAME11": 11, - "FIELDName12": 12 - })", - R"( - fieldName7: 7 - FieldName8: 8 - field_Name9: 9 - Field_Name10: 10 - FIELD_NAME11: 11 - FIELD_name12: 12 - )"); - RunValidJsonTest( - "FieldNameWithDoubleUnderscores", RECOMMENDED, - R"({ - "FieldName13": 13, - "FieldName14": 14, - "fieldName15": 15, - "fieldName16": 16, - "fieldName17": 17, - "FieldName18": 18 - })", - R"( - __field_name13: 13 - __Field_name14: 14 - field__name15: 15 - field__Name16: 16 - field_name17__: 17 - Field_name18__: 18 - )"); - // Using the original proto field name in JSON is also allowed. - RunValidJsonTest( - "OriginalProtoFieldName", REQUIRED, - R"({ - "fieldname1": 1, - "field_name2": 2, - "_field_name3": 3, - "field__name4_": 4, - "field0name5": 5, - "field_0_name6": 6, - "fieldName7": 7, - "FieldName8": 8, - "field_Name9": 9, - "Field_Name10": 10, - "FIELD_NAME11": 11, - "FIELD_name12": 12, - "__field_name13": 13, - "__Field_name14": 14, - "field__name15": 15, - "field__Name16": 16, - "field_name17__": 17, - "Field_name18__": 18 - })", - R"( - fieldname1: 1 - field_name2: 2 - _field_name3: 3 - field__name4_: 4 - field0name5: 5 - field_0_name6: 6 - fieldName7: 7 - FieldName8: 8 - field_Name9: 9 - Field_Name10: 10 - FIELD_NAME11: 11 - FIELD_name12: 12 - __field_name13: 13 - __Field_name14: 14 - field__name15: 15 - field__Name16: 16 - field_name17__: 17 - Field_name18__: 18 - )"); - // Field names can be escaped. - RunValidJsonTest( - "FieldNameEscaped", REQUIRED, - R"({"fieldn\u0061me1": 1})", - "fieldname1: 1"); - // String ends with escape character. - ExpectParseFailureForJson( - "StringEndsWithEscapeChar", RECOMMENDED, - "{\"optionalString\": \"abc\\"); - // Field names must be quoted (or it's not valid JSON). - ExpectParseFailureForJson( - "FieldNameNotQuoted", RECOMMENDED, - "{fieldname1: 1}"); - // Trailing comma is not allowed (not valid JSON). - ExpectParseFailureForJson( - "TrailingCommaInAnObject", RECOMMENDED, - R"({"fieldname1":1,})"); - ExpectParseFailureForJson( - "TrailingCommaInAnObjectWithSpace", RECOMMENDED, - R"({"fieldname1":1 ,})"); - ExpectParseFailureForJson( - "TrailingCommaInAnObjectWithSpaceCommaSpace", RECOMMENDED, - R"({"fieldname1":1 , })"); - ExpectParseFailureForJson( - "TrailingCommaInAnObjectWithNewlines", RECOMMENDED, - R"({ - "fieldname1":1, - })"); - // JSON doesn't support comments. - ExpectParseFailureForJson( - "JsonWithComments", RECOMMENDED, - R"({ - // This is a comment. - "fieldname1": 1 - })"); - // JSON spec says whitespace doesn't matter, so try a few spacings to be sure. - RunValidJsonTest( - "OneLineNoSpaces", RECOMMENDED, - "{\"optionalInt32\":1,\"optionalInt64\":2}", - R"( - optional_int32: 1 - optional_int64: 2 - )"); - RunValidJsonTest( - "OneLineWithSpaces", RECOMMENDED, - "{ \"optionalInt32\" : 1 , \"optionalInt64\" : 2 }", - R"( - optional_int32: 1 - optional_int64: 2 - )"); - RunValidJsonTest( - "MultilineNoSpaces", RECOMMENDED, - "{\n\"optionalInt32\"\n:\n1\n,\n\"optionalInt64\"\n:\n2\n}", - R"( - optional_int32: 1 - optional_int64: 2 - )"); - RunValidJsonTest( - "MultilineWithSpaces", RECOMMENDED, - "{\n \"optionalInt32\" : 1\n ,\n \"optionalInt64\" : 2\n}\n", - R"( - optional_int32: 1 - optional_int64: 2 - )"); - // Missing comma between key/value pairs. - ExpectParseFailureForJson( - "MissingCommaOneLine", RECOMMENDED, - "{ \"optionalInt32\": 1 \"optionalInt64\": 2 }"); - ExpectParseFailureForJson( - "MissingCommaMultiline", RECOMMENDED, - "{\n \"optionalInt32\": 1\n \"optionalInt64\": 2\n}"); - // Duplicated field names are not allowed. - ExpectParseFailureForJson( - "FieldNameDuplicate", RECOMMENDED, - R"({ - "optionalNestedMessage": {a: 1}, - "optionalNestedMessage": {} - })"); - ExpectParseFailureForJson( - "FieldNameDuplicateDifferentCasing1", RECOMMENDED, - R"({ - "optional_nested_message": {a: 1}, - "optionalNestedMessage": {} - })"); - ExpectParseFailureForJson( - "FieldNameDuplicateDifferentCasing2", RECOMMENDED, - R"({ - "optionalNestedMessage": {a: 1}, - "optional_nested_message": {} - })"); - // Serializers should use lowerCamelCase by default. - RunValidJsonTestWithValidator( - "FieldNameInLowerCamelCase", REQUIRED, - R"({ - "fieldname1": 1, - "fieldName2": 2, - "FieldName3": 3, - "fieldName4": 4 - })", - [](const Json::Value& value) { - return value.isMember("fieldname1") && - value.isMember("fieldName2") && - value.isMember("FieldName3") && - value.isMember("fieldName4"); - }); - RunValidJsonTestWithValidator( - "FieldNameWithNumbers", REQUIRED, - R"({ - "field0name5": 5, - "field0Name6": 6 - })", - [](const Json::Value& value) { - return value.isMember("field0name5") && - value.isMember("field0Name6"); - }); - RunValidJsonTestWithValidator( - "FieldNameWithMixedCases", REQUIRED, - R"({ - "fieldName7": 7, - "FieldName8": 8, - "fieldName9": 9, - "FieldName10": 10, - "FIELDNAME11": 11, - "FIELDName12": 12 - })", - [](const Json::Value& value) { - return value.isMember("fieldName7") && - value.isMember("FieldName8") && - value.isMember("fieldName9") && - value.isMember("FieldName10") && - value.isMember("FIELDNAME11") && - value.isMember("FIELDName12"); - }); - RunValidJsonTestWithValidator( - "FieldNameWithDoubleUnderscores", RECOMMENDED, - R"({ - "FieldName13": 13, - "FieldName14": 14, - "fieldName15": 15, - "fieldName16": 16, - "fieldName17": 17, - "FieldName18": 18 - })", - [](const Json::Value& value) { - return value.isMember("FieldName13") && - value.isMember("FieldName14") && - value.isMember("fieldName15") && - value.isMember("fieldName16") && - value.isMember("fieldName17") && - value.isMember("FieldName18"); - }); - - // Integer fields. - RunValidJsonTest( - "Int32FieldMaxValue", REQUIRED, - R"({"optionalInt32": 2147483647})", - "optional_int32: 2147483647"); - RunValidJsonTest( - "Int32FieldMinValue", REQUIRED, - R"({"optionalInt32": -2147483648})", - "optional_int32: -2147483648"); - RunValidJsonTest( - "Uint32FieldMaxValue", REQUIRED, - R"({"optionalUint32": 4294967295})", - "optional_uint32: 4294967295"); - RunValidJsonTest( - "Int64FieldMaxValue", REQUIRED, - R"({"optionalInt64": "9223372036854775807"})", - "optional_int64: 9223372036854775807"); - RunValidJsonTest( - "Int64FieldMinValue", REQUIRED, - R"({"optionalInt64": "-9223372036854775808"})", - "optional_int64: -9223372036854775808"); - RunValidJsonTest( - "Uint64FieldMaxValue", REQUIRED, - R"({"optionalUint64": "18446744073709551615"})", - "optional_uint64: 18446744073709551615"); - // While not the largest Int64, this is the largest - // Int64 which can be exactly represented within an - // IEEE-754 64-bit float, which is the expected level - // of interoperability guarantee. Larger values may - // work in some implementations, but should not be - // relied upon. - RunValidJsonTest( - "Int64FieldMaxValueNotQuoted", REQUIRED, - R"({"optionalInt64": 9223372036854774784})", - "optional_int64: 9223372036854774784"); - RunValidJsonTest( - "Int64FieldMinValueNotQuoted", REQUIRED, - R"({"optionalInt64": -9223372036854775808})", - "optional_int64: -9223372036854775808"); - // Largest interoperable Uint64; see comment above - // for Int64FieldMaxValueNotQuoted. - RunValidJsonTest( - "Uint64FieldMaxValueNotQuoted", REQUIRED, - R"({"optionalUint64": 18446744073709549568})", - "optional_uint64: 18446744073709549568"); - // Values can be represented as JSON strings. - RunValidJsonTest( - "Int32FieldStringValue", REQUIRED, - R"({"optionalInt32": "2147483647"})", - "optional_int32: 2147483647"); - RunValidJsonTest( - "Int32FieldStringValueEscaped", REQUIRED, - R"({"optionalInt32": "2\u003147483647"})", - "optional_int32: 2147483647"); - - // Parsers reject out-of-bound integer values. - ExpectParseFailureForJson( - "Int32FieldTooLarge", REQUIRED, - R"({"optionalInt32": 2147483648})"); - ExpectParseFailureForJson( - "Int32FieldTooSmall", REQUIRED, - R"({"optionalInt32": -2147483649})"); - ExpectParseFailureForJson( - "Uint32FieldTooLarge", REQUIRED, - R"({"optionalUint32": 4294967296})"); - ExpectParseFailureForJson( - "Int64FieldTooLarge", REQUIRED, - R"({"optionalInt64": "9223372036854775808"})"); - ExpectParseFailureForJson( - "Int64FieldTooSmall", REQUIRED, - R"({"optionalInt64": "-9223372036854775809"})"); - ExpectParseFailureForJson( - "Uint64FieldTooLarge", REQUIRED, - R"({"optionalUint64": "18446744073709551616"})"); - // Parser reject non-integer numeric values as well. - ExpectParseFailureForJson( - "Int32FieldNotInteger", REQUIRED, - R"({"optionalInt32": 0.5})"); - ExpectParseFailureForJson( - "Uint32FieldNotInteger", REQUIRED, - R"({"optionalUint32": 0.5})"); - ExpectParseFailureForJson( - "Int64FieldNotInteger", REQUIRED, - R"({"optionalInt64": "0.5"})"); - ExpectParseFailureForJson( - "Uint64FieldNotInteger", REQUIRED, - R"({"optionalUint64": "0.5"})"); - - // Integers but represented as float values are accepted. - RunValidJsonTest( - "Int32FieldFloatTrailingZero", REQUIRED, - R"({"optionalInt32": 100000.000})", - "optional_int32: 100000"); - RunValidJsonTest( - "Int32FieldExponentialFormat", REQUIRED, - R"({"optionalInt32": 1e5})", - "optional_int32: 100000"); - RunValidJsonTest( - "Int32FieldMaxFloatValue", REQUIRED, - R"({"optionalInt32": 2.147483647e9})", - "optional_int32: 2147483647"); - RunValidJsonTest( - "Int32FieldMinFloatValue", REQUIRED, - R"({"optionalInt32": -2.147483648e9})", - "optional_int32: -2147483648"); - RunValidJsonTest( - "Uint32FieldMaxFloatValue", REQUIRED, - R"({"optionalUint32": 4.294967295e9})", - "optional_uint32: 4294967295"); - - // Parser reject non-numeric values. - ExpectParseFailureForJson( - "Int32FieldNotNumber", REQUIRED, - R"({"optionalInt32": "3x3"})"); - ExpectParseFailureForJson( - "Uint32FieldNotNumber", REQUIRED, - R"({"optionalUint32": "3x3"})"); - ExpectParseFailureForJson( - "Int64FieldNotNumber", REQUIRED, - R"({"optionalInt64": "3x3"})"); - ExpectParseFailureForJson( - "Uint64FieldNotNumber", REQUIRED, - R"({"optionalUint64": "3x3"})"); - // JSON does not allow "+" on numric values. - ExpectParseFailureForJson( - "Int32FieldPlusSign", REQUIRED, - R"({"optionalInt32": +1})"); - // JSON doesn't allow leading 0s. - ExpectParseFailureForJson( - "Int32FieldLeadingZero", REQUIRED, - R"({"optionalInt32": 01})"); - ExpectParseFailureForJson( - "Int32FieldNegativeWithLeadingZero", REQUIRED, - R"({"optionalInt32": -01})"); - // String values must follow the same syntax rule. Specifically leading - // or trailing spaces are not allowed. - ExpectParseFailureForJson( - "Int32FieldLeadingSpace", REQUIRED, - R"({"optionalInt32": " 1"})"); - ExpectParseFailureForJson( - "Int32FieldTrailingSpace", REQUIRED, - R"({"optionalInt32": "1 "})"); - - // 64-bit values are serialized as strings. - RunValidJsonTestWithValidator( - "Int64FieldBeString", RECOMMENDED, - R"({"optionalInt64": 1})", - [](const Json::Value& value) { - return value["optionalInt64"].type() == Json::stringValue && - value["optionalInt64"].asString() == "1"; - }); - RunValidJsonTestWithValidator( - "Uint64FieldBeString", RECOMMENDED, - R"({"optionalUint64": 1})", - [](const Json::Value& value) { - return value["optionalUint64"].type() == Json::stringValue && - value["optionalUint64"].asString() == "1"; - }); - - // Bool fields. - RunValidJsonTest( - "BoolFieldTrue", REQUIRED, - R"({"optionalBool":true})", - "optional_bool: true"); - RunValidJsonTest( - "BoolFieldFalse", REQUIRED, - R"({"optionalBool":false})", - "optional_bool: false"); - - // Other forms are not allowed. - ExpectParseFailureForJson( - "BoolFieldIntegerZero", RECOMMENDED, - R"({"optionalBool":0})"); - ExpectParseFailureForJson( - "BoolFieldIntegerOne", RECOMMENDED, - R"({"optionalBool":1})"); - ExpectParseFailureForJson( - "BoolFieldCamelCaseTrue", RECOMMENDED, - R"({"optionalBool":True})"); - ExpectParseFailureForJson( - "BoolFieldCamelCaseFalse", RECOMMENDED, - R"({"optionalBool":False})"); - ExpectParseFailureForJson( - "BoolFieldAllCapitalTrue", RECOMMENDED, - R"({"optionalBool":TRUE})"); - ExpectParseFailureForJson( - "BoolFieldAllCapitalFalse", RECOMMENDED, - R"({"optionalBool":FALSE})"); - ExpectParseFailureForJson( - "BoolFieldDoubleQuotedTrue", RECOMMENDED, - R"({"optionalBool":"true"})"); - ExpectParseFailureForJson( - "BoolFieldDoubleQuotedFalse", RECOMMENDED, - R"({"optionalBool":"false"})"); - - // Float fields. - RunValidJsonTest( - "FloatFieldMinPositiveValue", REQUIRED, - R"({"optionalFloat": 1.175494e-38})", - "optional_float: 1.175494e-38"); - RunValidJsonTest( - "FloatFieldMaxNegativeValue", REQUIRED, - R"({"optionalFloat": -1.175494e-38})", - "optional_float: -1.175494e-38"); - RunValidJsonTest( - "FloatFieldMaxPositiveValue", REQUIRED, - R"({"optionalFloat": 3.402823e+38})", - "optional_float: 3.402823e+38"); - RunValidJsonTest( - "FloatFieldMinNegativeValue", REQUIRED, - R"({"optionalFloat": 3.402823e+38})", - "optional_float: 3.402823e+38"); - // Values can be quoted. - RunValidJsonTest( - "FloatFieldQuotedValue", REQUIRED, - R"({"optionalFloat": "1"})", - "optional_float: 1"); - // Special values. - RunValidJsonTest( - "FloatFieldNan", REQUIRED, - R"({"optionalFloat": "NaN"})", - "optional_float: nan"); - RunValidJsonTest( - "FloatFieldInfinity", REQUIRED, - R"({"optionalFloat": "Infinity"})", - "optional_float: inf"); - RunValidJsonTest( - "FloatFieldNegativeInfinity", REQUIRED, - R"({"optionalFloat": "-Infinity"})", - "optional_float: -inf"); - // Non-cannonical Nan will be correctly normalized. - { - TestAllTypesProto3 message; - // IEEE floating-point standard 32-bit quiet NaN: - // 0111 1111 1xxx xxxx xxxx xxxx xxxx xxxx - message.set_optional_float( - WireFormatLite::DecodeFloat(0x7FA12345)); - RunValidJsonTestWithProtobufInput( - "FloatFieldNormalizeQuietNan", REQUIRED, message, - "optional_float: nan"); - // IEEE floating-point standard 64-bit signaling NaN: - // 1111 1111 1xxx xxxx xxxx xxxx xxxx xxxx - message.set_optional_float( - WireFormatLite::DecodeFloat(0xFFB54321)); - RunValidJsonTestWithProtobufInput( - "FloatFieldNormalizeSignalingNan", REQUIRED, message, - "optional_float: nan"); - } - - // Special values must be quoted. - ExpectParseFailureForJson( - "FloatFieldNanNotQuoted", RECOMMENDED, - R"({"optionalFloat": NaN})"); - ExpectParseFailureForJson( - "FloatFieldInfinityNotQuoted", RECOMMENDED, - R"({"optionalFloat": Infinity})"); - ExpectParseFailureForJson( - "FloatFieldNegativeInfinityNotQuoted", RECOMMENDED, - R"({"optionalFloat": -Infinity})"); - // Parsers should reject out-of-bound values. - ExpectParseFailureForJson( - "FloatFieldTooSmall", REQUIRED, - R"({"optionalFloat": -3.502823e+38})"); - ExpectParseFailureForJson( - "FloatFieldTooLarge", REQUIRED, - R"({"optionalFloat": 3.502823e+38})"); - - // Double fields. - RunValidJsonTest( - "DoubleFieldMinPositiveValue", REQUIRED, - R"({"optionalDouble": 2.22507e-308})", - "optional_double: 2.22507e-308"); - RunValidJsonTest( - "DoubleFieldMaxNegativeValue", REQUIRED, - R"({"optionalDouble": -2.22507e-308})", - "optional_double: -2.22507e-308"); - RunValidJsonTest( - "DoubleFieldMaxPositiveValue", REQUIRED, - R"({"optionalDouble": 1.79769e+308})", - "optional_double: 1.79769e+308"); - RunValidJsonTest( - "DoubleFieldMinNegativeValue", REQUIRED, - R"({"optionalDouble": -1.79769e+308})", - "optional_double: -1.79769e+308"); - // Values can be quoted. - RunValidJsonTest( - "DoubleFieldQuotedValue", REQUIRED, - R"({"optionalDouble": "1"})", - "optional_double: 1"); - // Speical values. - RunValidJsonTest( - "DoubleFieldNan", REQUIRED, - R"({"optionalDouble": "NaN"})", - "optional_double: nan"); - RunValidJsonTest( - "DoubleFieldInfinity", REQUIRED, - R"({"optionalDouble": "Infinity"})", - "optional_double: inf"); - RunValidJsonTest( - "DoubleFieldNegativeInfinity", REQUIRED, - R"({"optionalDouble": "-Infinity"})", - "optional_double: -inf"); - // Non-cannonical Nan will be correctly normalized. - { - TestAllTypesProto3 message; - message.set_optional_double( - WireFormatLite::DecodeDouble(0x7FFA123456789ABCLL)); - RunValidJsonTestWithProtobufInput( - "DoubleFieldNormalizeQuietNan", REQUIRED, message, - "optional_double: nan"); - message.set_optional_double( - WireFormatLite::DecodeDouble(0xFFFBCBA987654321LL)); - RunValidJsonTestWithProtobufInput( - "DoubleFieldNormalizeSignalingNan", REQUIRED, message, - "optional_double: nan"); - } - - // Special values must be quoted. - ExpectParseFailureForJson( - "DoubleFieldNanNotQuoted", RECOMMENDED, - R"({"optionalDouble": NaN})"); - ExpectParseFailureForJson( - "DoubleFieldInfinityNotQuoted", RECOMMENDED, - R"({"optionalDouble": Infinity})"); - ExpectParseFailureForJson( - "DoubleFieldNegativeInfinityNotQuoted", RECOMMENDED, - R"({"optionalDouble": -Infinity})"); - - // Parsers should reject out-of-bound values. - ExpectParseFailureForJson( - "DoubleFieldTooSmall", REQUIRED, - R"({"optionalDouble": -1.89769e+308})"); - ExpectParseFailureForJson( - "DoubleFieldTooLarge", REQUIRED, - R"({"optionalDouble": +1.89769e+308})"); - - // Enum fields. - RunValidJsonTest( - "EnumField", REQUIRED, - R"({"optionalNestedEnum": "FOO"})", - "optional_nested_enum: FOO"); - // Enum fields with alias - RunValidJsonTest( - "EnumFieldWithAlias", REQUIRED, - R"({"optionalAliasedEnum": "ALIAS_BAZ"})", - "optional_aliased_enum: ALIAS_BAZ"); - RunValidJsonTest( - "EnumFieldWithAliasUseAlias", REQUIRED, - R"({"optionalAliasedEnum": "QUX"})", - "optional_aliased_enum: ALIAS_BAZ"); - RunValidJsonTest( - "EnumFieldWithAliasLowerCase", REQUIRED, - R"({"optionalAliasedEnum": "qux"})", - "optional_aliased_enum: ALIAS_BAZ"); - RunValidJsonTest( - "EnumFieldWithAliasDifferentCase", REQUIRED, - R"({"optionalAliasedEnum": "bAz"})", - "optional_aliased_enum: ALIAS_BAZ"); - // Enum values must be represented as strings. - ExpectParseFailureForJson( - "EnumFieldNotQuoted", REQUIRED, - R"({"optionalNestedEnum": FOO})"); - // Numeric values are allowed. - RunValidJsonTest( - "EnumFieldNumericValueZero", REQUIRED, - R"({"optionalNestedEnum": 0})", - "optional_nested_enum: FOO"); - RunValidJsonTest( - "EnumFieldNumericValueNonZero", REQUIRED, - R"({"optionalNestedEnum": 1})", - "optional_nested_enum: BAR"); - // Unknown enum values are represented as numeric values. - RunValidJsonTestWithValidator( - "EnumFieldUnknownValue", REQUIRED, - R"({"optionalNestedEnum": 123})", - [](const Json::Value& value) { - return value["optionalNestedEnum"].type() == Json::intValue && - value["optionalNestedEnum"].asInt() == 123; - }); - - // String fields. - RunValidJsonTest( - "StringField", REQUIRED, - R"({"optionalString": "Hello world!"})", - "optional_string: \"Hello world!\""); - RunValidJsonTest( - "StringFieldUnicode", REQUIRED, - // Google in Chinese. - R"({"optionalString": "谷歌"})", - R"(optional_string: "谷歌")"); - RunValidJsonTest( - "StringFieldEscape", REQUIRED, - R"({"optionalString": "\"\\\/\b\f\n\r\t"})", - R"(optional_string: "\"\\/\b\f\n\r\t")"); - RunValidJsonTest( - "StringFieldUnicodeEscape", REQUIRED, - R"({"optionalString": "\u8C37\u6B4C"})", - R"(optional_string: "谷歌")"); - RunValidJsonTest( - "StringFieldUnicodeEscapeWithLowercaseHexLetters", REQUIRED, - R"({"optionalString": "\u8c37\u6b4c"})", - R"(optional_string: "谷歌")"); - RunValidJsonTest( - "StringFieldSurrogatePair", REQUIRED, - // The character is an emoji: grinning face with smiling eyes. 😁 - R"({"optionalString": "\uD83D\uDE01"})", - R"(optional_string: "\xF0\x9F\x98\x81")"); - - // Unicode escapes must start with "\u" (lowercase u). - ExpectParseFailureForJson( - "StringFieldUppercaseEscapeLetter", RECOMMENDED, - R"({"optionalString": "\U8C37\U6b4C"})"); - ExpectParseFailureForJson( - "StringFieldInvalidEscape", RECOMMENDED, - R"({"optionalString": "\uXXXX\u6B4C"})"); - ExpectParseFailureForJson( - "StringFieldUnterminatedEscape", RECOMMENDED, - R"({"optionalString": "\u8C3"})"); - ExpectParseFailureForJson( - "StringFieldUnpairedHighSurrogate", RECOMMENDED, - R"({"optionalString": "\uD800"})"); - ExpectParseFailureForJson( - "StringFieldUnpairedLowSurrogate", RECOMMENDED, - R"({"optionalString": "\uDC00"})"); - ExpectParseFailureForJson( - "StringFieldSurrogateInWrongOrder", RECOMMENDED, - R"({"optionalString": "\uDE01\uD83D"})"); - ExpectParseFailureForJson( - "StringFieldNotAString", REQUIRED, - R"({"optionalString": 12345})"); - - // Bytes fields. - RunValidJsonTest( - "BytesField", REQUIRED, - R"({"optionalBytes": "AQI="})", - R"(optional_bytes: "\x01\x02")"); - RunValidJsonTest( - "BytesFieldBase64Url", RECOMMENDED, - R"({"optionalBytes": "-_"})", - R"(optional_bytes: "\xfb")"); - - // Message fields. - RunValidJsonTest( - "MessageField", REQUIRED, - R"({"optionalNestedMessage": {"a": 1234}})", - "optional_nested_message: {a: 1234}"); - - // Oneof fields. - ExpectParseFailureForJson( - "OneofFieldDuplicate", REQUIRED, - R"({"oneofUint32": 1, "oneofString": "test"})"); - // Ensure zero values for oneof make it out/backs. - TestAllTypesProto3 messageProto3; - TestAllTypesProto2 messageProto2; - TestOneofMessage(messageProto3, true); - TestOneofMessage(messageProto2, false); - RunValidJsonTest( - "OneofZeroUint32", RECOMMENDED, - R"({"oneofUint32": 0})", "oneof_uint32: 0"); - RunValidJsonTest( - "OneofZeroMessage", RECOMMENDED, - R"({"oneofNestedMessage": {}})", "oneof_nested_message: {}"); - RunValidJsonTest( - "OneofZeroString", RECOMMENDED, - R"({"oneofString": ""})", "oneof_string: \"\""); - RunValidJsonTest( - "OneofZeroBytes", RECOMMENDED, - R"({"oneofBytes": ""})", "oneof_bytes: \"\""); - RunValidJsonTest( - "OneofZeroBool", RECOMMENDED, - R"({"oneofBool": false})", "oneof_bool: false"); - RunValidJsonTest( - "OneofZeroUint64", RECOMMENDED, - R"({"oneofUint64": 0})", "oneof_uint64: 0"); - RunValidJsonTest( - "OneofZeroFloat", RECOMMENDED, - R"({"oneofFloat": 0.0})", "oneof_float: 0"); - RunValidJsonTest( - "OneofZeroDouble", RECOMMENDED, - R"({"oneofDouble": 0.0})", "oneof_double: 0"); - RunValidJsonTest( - "OneofZeroEnum", RECOMMENDED, - R"({"oneofEnum":"FOO"})", "oneof_enum: FOO"); - - // Repeated fields. - RunValidJsonTest( - "PrimitiveRepeatedField", REQUIRED, - R"({"repeatedInt32": [1, 2, 3, 4]})", - "repeated_int32: [1, 2, 3, 4]"); - RunValidJsonTest( - "EnumRepeatedField", REQUIRED, - R"({"repeatedNestedEnum": ["FOO", "BAR", "BAZ"]})", - "repeated_nested_enum: [FOO, BAR, BAZ]"); - RunValidJsonTest( - "StringRepeatedField", REQUIRED, - R"({"repeatedString": ["Hello", "world"]})", - R"(repeated_string: ["Hello", "world"])"); - RunValidJsonTest( - "BytesRepeatedField", REQUIRED, - R"({"repeatedBytes": ["AAEC", "AQI="]})", - R"(repeated_bytes: ["\x00\x01\x02", "\x01\x02"])"); - RunValidJsonTest( - "MessageRepeatedField", REQUIRED, - R"({"repeatedNestedMessage": [{"a": 1234}, {"a": 5678}]})", - "repeated_nested_message: {a: 1234}" - "repeated_nested_message: {a: 5678}"); - - // Repeated field elements are of incorrect type. - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingIntegersGotBool", REQUIRED, - R"({"repeatedInt32": [1, false, 3, 4]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingIntegersGotString", REQUIRED, - R"({"repeatedInt32": [1, 2, "name", 4]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingIntegersGotMessage", REQUIRED, - R"({"repeatedInt32": [1, 2, 3, {"a": 4}]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingStringsGotInt", REQUIRED, - R"({"repeatedString": ["1", 2, "3", "4"]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingStringsGotBool", REQUIRED, - R"({"repeatedString": ["1", "2", false, "4"]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingStringsGotMessage", REQUIRED, - R"({"repeatedString": ["1", 2, "3", {"a": 4}]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingMessagesGotInt", REQUIRED, - R"({"repeatedNestedMessage": [{"a": 1}, 2]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingMessagesGotBool", REQUIRED, - R"({"repeatedNestedMessage": [{"a": 1}, false]})"); - ExpectParseFailureForJson( - "RepeatedFieldWrongElementTypeExpectingMessagesGotString", REQUIRED, - R"({"repeatedNestedMessage": [{"a": 1}, "2"]})"); - // Trailing comma in the repeated field is not allowed. - ExpectParseFailureForJson( - "RepeatedFieldTrailingComma", RECOMMENDED, - R"({"repeatedInt32": [1, 2, 3, 4,]})"); - ExpectParseFailureForJson( - "RepeatedFieldTrailingCommaWithSpace", RECOMMENDED, - "{\"repeatedInt32\": [1, 2, 3, 4 ,]}"); - ExpectParseFailureForJson( - "RepeatedFieldTrailingCommaWithSpaceCommaSpace", RECOMMENDED, - "{\"repeatedInt32\": [1, 2, 3, 4 , ]}"); - ExpectParseFailureForJson( - "RepeatedFieldTrailingCommaWithNewlines", RECOMMENDED, - "{\"repeatedInt32\": [\n 1,\n 2,\n 3,\n 4,\n]}"); - - // Map fields. - RunValidJsonTest( - "Int32MapField", REQUIRED, - R"({"mapInt32Int32": {"1": 2, "3": 4}})", - "map_int32_int32: {key: 1 value: 2}" - "map_int32_int32: {key: 3 value: 4}"); - ExpectParseFailureForJson( - "Int32MapFieldKeyNotQuoted", RECOMMENDED, - R"({"mapInt32Int32": {1: 2, 3: 4}})"); - RunValidJsonTest( - "Uint32MapField", REQUIRED, - R"({"mapUint32Uint32": {"1": 2, "3": 4}})", - "map_uint32_uint32: {key: 1 value: 2}" - "map_uint32_uint32: {key: 3 value: 4}"); - ExpectParseFailureForJson( - "Uint32MapFieldKeyNotQuoted", RECOMMENDED, - R"({"mapUint32Uint32": {1: 2, 3: 4}})"); - RunValidJsonTest( - "Int64MapField", REQUIRED, - R"({"mapInt64Int64": {"1": 2, "3": 4}})", - "map_int64_int64: {key: 1 value: 2}" - "map_int64_int64: {key: 3 value: 4}"); - ExpectParseFailureForJson( - "Int64MapFieldKeyNotQuoted", RECOMMENDED, - R"({"mapInt64Int64": {1: 2, 3: 4}})"); - RunValidJsonTest( - "Uint64MapField", REQUIRED, - R"({"mapUint64Uint64": {"1": 2, "3": 4}})", - "map_uint64_uint64: {key: 1 value: 2}" - "map_uint64_uint64: {key: 3 value: 4}"); - ExpectParseFailureForJson( - "Uint64MapFieldKeyNotQuoted", RECOMMENDED, - R"({"mapUint64Uint64": {1: 2, 3: 4}})"); - RunValidJsonTest( - "BoolMapField", REQUIRED, - R"({"mapBoolBool": {"true": true, "false": false}})", - "map_bool_bool: {key: true value: true}" - "map_bool_bool: {key: false value: false}"); - ExpectParseFailureForJson( - "BoolMapFieldKeyNotQuoted", RECOMMENDED, - R"({"mapBoolBool": {true: true, false: false}})"); - RunValidJsonTest( - "MessageMapField", REQUIRED, - R"({ - "mapStringNestedMessage": { - "hello": {"a": 1234}, - "world": {"a": 5678} - } - })", - R"( - map_string_nested_message: { - key: "hello" - value: {a: 1234} - } - map_string_nested_message: { - key: "world" - value: {a: 5678} - } - )"); - // Since Map keys are represented as JSON strings, escaping should be allowed. - RunValidJsonTest( - "Int32MapEscapedKey", REQUIRED, - R"({"mapInt32Int32": {"\u0031": 2}})", - "map_int32_int32: {key: 1 value: 2}"); - RunValidJsonTest( - "Int64MapEscapedKey", REQUIRED, - R"({"mapInt64Int64": {"\u0031": 2}})", - "map_int64_int64: {key: 1 value: 2}"); - RunValidJsonTest( - "BoolMapEscapedKey", REQUIRED, - R"({"mapBoolBool": {"tr\u0075e": true}})", - "map_bool_bool: {key: true value: true}"); - - // "null" is accepted for all fields types. - RunValidJsonTest( - "AllFieldAcceptNull", REQUIRED, - R"({ - "optionalInt32": null, - "optionalInt64": null, - "optionalUint32": null, - "optionalUint64": null, - "optionalSint32": null, - "optionalSint64": null, - "optionalFixed32": null, - "optionalFixed64": null, - "optionalSfixed32": null, - "optionalSfixed64": null, - "optionalFloat": null, - "optionalDouble": null, - "optionalBool": null, - "optionalString": null, - "optionalBytes": null, - "optionalNestedEnum": null, - "optionalNestedMessage": null, - "repeatedInt32": null, - "repeatedInt64": null, - "repeatedUint32": null, - "repeatedUint64": null, - "repeatedSint32": null, - "repeatedSint64": null, - "repeatedFixed32": null, - "repeatedFixed64": null, - "repeatedSfixed32": null, - "repeatedSfixed64": null, - "repeatedFloat": null, - "repeatedDouble": null, - "repeatedBool": null, - "repeatedString": null, - "repeatedBytes": null, - "repeatedNestedEnum": null, - "repeatedNestedMessage": null, - "mapInt32Int32": null, - "mapBoolBool": null, - "mapStringNestedMessage": null - })", - ""); - - // Repeated field elements cannot be null. - ExpectParseFailureForJson( - "RepeatedFieldPrimitiveElementIsNull", RECOMMENDED, - R"({"repeatedInt32": [1, null, 2]})"); - ExpectParseFailureForJson( - "RepeatedFieldMessageElementIsNull", RECOMMENDED, - R"({"repeatedNestedMessage": [{"a":1}, null, {"a":2}]})"); - // Map field keys cannot be null. - ExpectParseFailureForJson( - "MapFieldKeyIsNull", RECOMMENDED, - R"({"mapInt32Int32": {null: 1}})"); - // Map field values cannot be null. - ExpectParseFailureForJson( - "MapFieldValueIsNull", RECOMMENDED, - R"({"mapInt32Int32": {"0": null}})"); - - // http://www.rfc-editor.org/rfc/rfc7159.txt says strings have to use double - // quotes. - ExpectParseFailureForJson( - "StringFieldSingleQuoteKey", RECOMMENDED, - R"({'optionalString': "Hello world!"})"); - ExpectParseFailureForJson( - "StringFieldSingleQuoteValue", RECOMMENDED, - R"({"optionalString": 'Hello world!'})"); - ExpectParseFailureForJson( - "StringFieldSingleQuoteBoth", RECOMMENDED, - R"({'optionalString': 'Hello world!'})"); - - // Unknown fields. - { - TestAllTypesProto3 messageProto3; - TestAllTypesProto2 messageProto2; - //TODO(yilunchong): update this behavior when unknown field's behavior - // changed in open source. Also delete - // Required.Proto3.ProtobufInput.UnknownVarint.ProtobufOutput - // from failure list of python_cpp python java - TestUnknownMessage(messageProto3, true); - TestUnknownMessage(messageProto2, false); - } - - // Wrapper types. - RunValidJsonTest( - "OptionalBoolWrapper", REQUIRED, - R"({"optionalBoolWrapper": false})", - "optional_bool_wrapper: {value: false}"); - RunValidJsonTest( - "OptionalInt32Wrapper", REQUIRED, - R"({"optionalInt32Wrapper": 0})", - "optional_int32_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalUint32Wrapper", REQUIRED, - R"({"optionalUint32Wrapper": 0})", - "optional_uint32_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalInt64Wrapper", REQUIRED, - R"({"optionalInt64Wrapper": 0})", - "optional_int64_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalUint64Wrapper", REQUIRED, - R"({"optionalUint64Wrapper": 0})", - "optional_uint64_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalFloatWrapper", REQUIRED, - R"({"optionalFloatWrapper": 0})", - "optional_float_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalDoubleWrapper", REQUIRED, - R"({"optionalDoubleWrapper": 0})", - "optional_double_wrapper: {value: 0}"); - RunValidJsonTest( - "OptionalStringWrapper", REQUIRED, - R"({"optionalStringWrapper": ""})", - R"(optional_string_wrapper: {value: ""})"); - RunValidJsonTest( - "OptionalBytesWrapper", REQUIRED, - R"({"optionalBytesWrapper": ""})", - R"(optional_bytes_wrapper: {value: ""})"); - RunValidJsonTest( - "OptionalWrapperTypesWithNonDefaultValue", REQUIRED, - R"({ - "optionalBoolWrapper": true, - "optionalInt32Wrapper": 1, - "optionalUint32Wrapper": 1, - "optionalInt64Wrapper": "1", - "optionalUint64Wrapper": "1", - "optionalFloatWrapper": 1, - "optionalDoubleWrapper": 1, - "optionalStringWrapper": "1", - "optionalBytesWrapper": "AQI=" - })", - R"( - optional_bool_wrapper: {value: true} - optional_int32_wrapper: {value: 1} - optional_uint32_wrapper: {value: 1} - optional_int64_wrapper: {value: 1} - optional_uint64_wrapper: {value: 1} - optional_float_wrapper: {value: 1} - optional_double_wrapper: {value: 1} - optional_string_wrapper: {value: "1"} - optional_bytes_wrapper: {value: "\x01\x02"} - )"); - RunValidJsonTest( - "RepeatedBoolWrapper", REQUIRED, - R"({"repeatedBoolWrapper": [true, false]})", - "repeated_bool_wrapper: {value: true}" - "repeated_bool_wrapper: {value: false}"); - RunValidJsonTest( - "RepeatedInt32Wrapper", REQUIRED, - R"({"repeatedInt32Wrapper": [0, 1]})", - "repeated_int32_wrapper: {value: 0}" - "repeated_int32_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedUint32Wrapper", REQUIRED, - R"({"repeatedUint32Wrapper": [0, 1]})", - "repeated_uint32_wrapper: {value: 0}" - "repeated_uint32_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedInt64Wrapper", REQUIRED, - R"({"repeatedInt64Wrapper": [0, 1]})", - "repeated_int64_wrapper: {value: 0}" - "repeated_int64_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedUint64Wrapper", REQUIRED, - R"({"repeatedUint64Wrapper": [0, 1]})", - "repeated_uint64_wrapper: {value: 0}" - "repeated_uint64_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedFloatWrapper", REQUIRED, - R"({"repeatedFloatWrapper": [0, 1]})", - "repeated_float_wrapper: {value: 0}" - "repeated_float_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedDoubleWrapper", REQUIRED, - R"({"repeatedDoubleWrapper": [0, 1]})", - "repeated_double_wrapper: {value: 0}" - "repeated_double_wrapper: {value: 1}"); - RunValidJsonTest( - "RepeatedStringWrapper", REQUIRED, - R"({"repeatedStringWrapper": ["", "AQI="]})", - R"( - repeated_string_wrapper: {value: ""} - repeated_string_wrapper: {value: "AQI="} - )"); - RunValidJsonTest( - "RepeatedBytesWrapper", REQUIRED, - R"({"repeatedBytesWrapper": ["", "AQI="]})", - R"( - repeated_bytes_wrapper: {value: ""} - repeated_bytes_wrapper: {value: "\x01\x02"} - )"); - RunValidJsonTest( - "WrapperTypesWithNullValue", REQUIRED, - R"({ - "optionalBoolWrapper": null, - "optionalInt32Wrapper": null, - "optionalUint32Wrapper": null, - "optionalInt64Wrapper": null, - "optionalUint64Wrapper": null, - "optionalFloatWrapper": null, - "optionalDoubleWrapper": null, - "optionalStringWrapper": null, - "optionalBytesWrapper": null, - "repeatedBoolWrapper": null, - "repeatedInt32Wrapper": null, - "repeatedUint32Wrapper": null, - "repeatedInt64Wrapper": null, - "repeatedUint64Wrapper": null, - "repeatedFloatWrapper": null, - "repeatedDoubleWrapper": null, - "repeatedStringWrapper": null, - "repeatedBytesWrapper": null - })", - ""); - - // Duration - RunValidJsonTest( - "DurationMinValue", REQUIRED, - R"({"optionalDuration": "-315576000000.999999999s"})", - "optional_duration: {seconds: -315576000000 nanos: -999999999}"); - RunValidJsonTest( - "DurationMaxValue", REQUIRED, - R"({"optionalDuration": "315576000000.999999999s"})", - "optional_duration: {seconds: 315576000000 nanos: 999999999}"); - RunValidJsonTest( - "DurationRepeatedValue", REQUIRED, - R"({"repeatedDuration": ["1.5s", "-1.5s"]})", - "repeated_duration: {seconds: 1 nanos: 500000000}" - "repeated_duration: {seconds: -1 nanos: -500000000}"); - RunValidJsonTest( - "DurationNull", REQUIRED, - R"({"optionalDuration": null})", - ""); - - ExpectParseFailureForJson( - "DurationMissingS", REQUIRED, - R"({"optionalDuration": "1"})"); - ExpectParseFailureForJson( - "DurationJsonInputTooSmall", REQUIRED, - R"({"optionalDuration": "-315576000001.000000000s"})"); - ExpectParseFailureForJson( - "DurationJsonInputTooLarge", REQUIRED, - R"({"optionalDuration": "315576000001.000000000s"})"); - ExpectSerializeFailureForJson( - "DurationProtoInputTooSmall", REQUIRED, - "optional_duration: {seconds: -315576000001 nanos: 0}"); - ExpectSerializeFailureForJson( - "DurationProtoInputTooLarge", REQUIRED, - "optional_duration: {seconds: 315576000001 nanos: 0}"); - - RunValidJsonTestWithValidator( - "DurationHasZeroFractionalDigit", RECOMMENDED, - R"({"optionalDuration": "1.000000000s"})", - [](const Json::Value& value) { - return value["optionalDuration"].asString() == "1s"; - }); - RunValidJsonTestWithValidator( - "DurationHas3FractionalDigits", RECOMMENDED, - R"({"optionalDuration": "1.010000000s"})", - [](const Json::Value& value) { - return value["optionalDuration"].asString() == "1.010s"; - }); - RunValidJsonTestWithValidator( - "DurationHas6FractionalDigits", RECOMMENDED, - R"({"optionalDuration": "1.000010000s"})", - [](const Json::Value& value) { - return value["optionalDuration"].asString() == "1.000010s"; - }); - RunValidJsonTestWithValidator( - "DurationHas9FractionalDigits", RECOMMENDED, - R"({"optionalDuration": "1.000000010s"})", - [](const Json::Value& value) { - return value["optionalDuration"].asString() == "1.000000010s"; - }); - - // Timestamp - RunValidJsonTest( - "TimestampMinValue", REQUIRED, - R"({"optionalTimestamp": "0001-01-01T00:00:00Z"})", - "optional_timestamp: {seconds: -62135596800}"); - RunValidJsonTest( - "TimestampMaxValue", REQUIRED, - R"({"optionalTimestamp": "9999-12-31T23:59:59.999999999Z"})", - "optional_timestamp: {seconds: 253402300799 nanos: 999999999}"); - RunValidJsonTest( - "TimestampRepeatedValue", REQUIRED, - R"({ - "repeatedTimestamp": [ - "0001-01-01T00:00:00Z", - "9999-12-31T23:59:59.999999999Z" - ] - })", - "repeated_timestamp: {seconds: -62135596800}" - "repeated_timestamp: {seconds: 253402300799 nanos: 999999999}"); - RunValidJsonTest( - "TimestampWithPositiveOffset", REQUIRED, - R"({"optionalTimestamp": "1970-01-01T08:00:01+08:00"})", - "optional_timestamp: {seconds: 1}"); - RunValidJsonTest( - "TimestampWithNegativeOffset", REQUIRED, - R"({"optionalTimestamp": "1969-12-31T16:00:01-08:00"})", - "optional_timestamp: {seconds: 1}"); - RunValidJsonTest( - "TimestampNull", REQUIRED, - R"({"optionalTimestamp": null})", - ""); - - ExpectParseFailureForJson( - "TimestampJsonInputTooSmall", REQUIRED, - R"({"optionalTimestamp": "0000-01-01T00:00:00Z"})"); - ExpectParseFailureForJson( - "TimestampJsonInputTooLarge", REQUIRED, - R"({"optionalTimestamp": "10000-01-01T00:00:00Z"})"); - ExpectParseFailureForJson( - "TimestampJsonInputMissingZ", REQUIRED, - R"({"optionalTimestamp": "0001-01-01T00:00:00"})"); - ExpectParseFailureForJson( - "TimestampJsonInputMissingT", REQUIRED, - R"({"optionalTimestamp": "0001-01-01 00:00:00Z"})"); - ExpectParseFailureForJson( - "TimestampJsonInputLowercaseZ", REQUIRED, - R"({"optionalTimestamp": "0001-01-01T00:00:00z"})"); - ExpectParseFailureForJson( - "TimestampJsonInputLowercaseT", REQUIRED, - R"({"optionalTimestamp": "0001-01-01t00:00:00Z"})"); - ExpectSerializeFailureForJson( - "TimestampProtoInputTooSmall", REQUIRED, - "optional_timestamp: {seconds: -62135596801}"); - ExpectSerializeFailureForJson( - "TimestampProtoInputTooLarge", REQUIRED, - "optional_timestamp: {seconds: 253402300800}"); - RunValidJsonTestWithValidator( - "TimestampZeroNormalized", RECOMMENDED, - R"({"optionalTimestamp": "1969-12-31T16:00:00-08:00"})", - [](const Json::Value& value) { - return value["optionalTimestamp"].asString() == - "1970-01-01T00:00:00Z"; - }); - RunValidJsonTestWithValidator( - "TimestampHasZeroFractionalDigit", RECOMMENDED, - R"({"optionalTimestamp": "1970-01-01T00:00:00.000000000Z"})", - [](const Json::Value& value) { - return value["optionalTimestamp"].asString() == - "1970-01-01T00:00:00Z"; - }); - RunValidJsonTestWithValidator( - "TimestampHas3FractionalDigits", RECOMMENDED, - R"({"optionalTimestamp": "1970-01-01T00:00:00.010000000Z"})", - [](const Json::Value& value) { - return value["optionalTimestamp"].asString() == - "1970-01-01T00:00:00.010Z"; - }); - RunValidJsonTestWithValidator( - "TimestampHas6FractionalDigits", RECOMMENDED, - R"({"optionalTimestamp": "1970-01-01T00:00:00.000010000Z"})", - [](const Json::Value& value) { - return value["optionalTimestamp"].asString() == - "1970-01-01T00:00:00.000010Z"; - }); - RunValidJsonTestWithValidator( - "TimestampHas9FractionalDigits", RECOMMENDED, - R"({"optionalTimestamp": "1970-01-01T00:00:00.000000010Z"})", - [](const Json::Value& value) { - return value["optionalTimestamp"].asString() == - "1970-01-01T00:00:00.000000010Z"; - }); - - // FieldMask - RunValidJsonTest( - "FieldMask", REQUIRED, - R"({"optionalFieldMask": "foo,barBaz"})", - R"(optional_field_mask: {paths: "foo" paths: "bar_baz"})"); - RunValidJsonTest( - "EmptyFieldMask", REQUIRED, - R"({"optionalFieldMask": ""})", - R"(optional_field_mask: {})"); - ExpectParseFailureForJson( - "FieldMaskInvalidCharacter", RECOMMENDED, - R"({"optionalFieldMask": "foo,bar_bar"})"); - ExpectSerializeFailureForJson( - "FieldMaskPathsDontRoundTrip", RECOMMENDED, - R"(optional_field_mask: {paths: "fooBar"})"); - ExpectSerializeFailureForJson( - "FieldMaskNumbersDontRoundTrip", RECOMMENDED, - R"(optional_field_mask: {paths: "foo_3_bar"})"); - ExpectSerializeFailureForJson( - "FieldMaskTooManyUnderscore", RECOMMENDED, - R"(optional_field_mask: {paths: "foo__bar"})"); - - // Struct - RunValidJsonTest( - "Struct", REQUIRED, - R"({ - "optionalStruct": { - "nullValue": null, - "intValue": 1234, - "boolValue": true, - "doubleValue": 1234.5678, - "stringValue": "Hello world!", - "listValue": [1234, "5678"], - "objectValue": { - "value": 0 - } - } - })", - R"( - optional_struct: { - fields: { - key: "nullValue" - value: {null_value: NULL_VALUE} - } - fields: { - key: "intValue" - value: {number_value: 1234} - } - fields: { - key: "boolValue" - value: {bool_value: true} - } - fields: { - key: "doubleValue" - value: {number_value: 1234.5678} - } - fields: { - key: "stringValue" - value: {string_value: "Hello world!"} - } - fields: { - key: "listValue" - value: { - list_value: { - values: { - number_value: 1234 - } - values: { - string_value: "5678" - } - } - } - } - fields: { - key: "objectValue" - value: { - struct_value: { - fields: { - key: "value" - value: { - number_value: 0 - } - } - } - } - } - } - )"); - RunValidJsonTest( - "StructWithEmptyListValue", REQUIRED, - R"({ - "optionalStruct": { - "listValue": [] - } - })", - R"( - optional_struct: { - fields: { - key: "listValue" - value: { - list_value: { - } - } - } - } - )"); - // Value - RunValidJsonTest( - "ValueAcceptInteger", REQUIRED, - R"({"optionalValue": 1})", - "optional_value: { number_value: 1}"); - RunValidJsonTest( - "ValueAcceptFloat", REQUIRED, - R"({"optionalValue": 1.5})", - "optional_value: { number_value: 1.5}"); - RunValidJsonTest( - "ValueAcceptBool", REQUIRED, - R"({"optionalValue": false})", - "optional_value: { bool_value: false}"); - RunValidJsonTest( - "ValueAcceptNull", REQUIRED, - R"({"optionalValue": null})", - "optional_value: { null_value: NULL_VALUE}"); - RunValidJsonTest( - "ValueAcceptString", REQUIRED, - R"({"optionalValue": "hello"})", - R"(optional_value: { string_value: "hello"})"); - RunValidJsonTest( - "ValueAcceptList", REQUIRED, - R"({"optionalValue": [0, "hello"]})", - R"( - optional_value: { - list_value: { - values: { - number_value: 0 - } - values: { - string_value: "hello" - } - } - } - )"); - RunValidJsonTest( - "ValueAcceptObject", REQUIRED, - R"({"optionalValue": {"value": 1}})", - R"( - optional_value: { - struct_value: { - fields: { - key: "value" - value: { - number_value: 1 - } - } - } - } - )"); - RunValidJsonTest( - "RepeatedValue", REQUIRED, - R"({ - "repeatedValue": [["a"]] - })", - R"( - repeated_value: [ - { - list_value: { - values: [ - { string_value: "a"} - ] - } - } - ] - )"); - RunValidJsonTest( - "RepeatedListValue", REQUIRED, - R"({ - "repeatedListValue": [["a"]] - })", - R"( - repeated_list_value: [ - { - values: [ - { string_value: "a"} - ] - } - ] - )"); - - // Any - RunValidJsonTest( - "Any", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3", - "optionalInt32": 12345 - } - })", - R"( - optional_any: { - [type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3] { - optional_int32: 12345 - } - } - )"); - RunValidJsonTest( - "AnyNested", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Any", - "value": { - "@type": "type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3", - "optionalInt32": 12345 - } - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Any] { - [type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3] { - optional_int32: 12345 - } - } - } - )"); - // The special "@type" tag is not required to appear first. - RunValidJsonTest( - "AnyUnorderedTypeTag", REQUIRED, - R"({ - "optionalAny": { - "optionalInt32": 12345, - "@type": "type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3" - } - })", - R"( - optional_any: { - [type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3] { - optional_int32: 12345 - } - } - )"); - // Well-known types in Any. - RunValidJsonTest( - "AnyWithInt32ValueWrapper", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Int32Value", - "value": 12345 - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Int32Value] { - value: 12345 - } - } - )"); - RunValidJsonTest( - "AnyWithDuration", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Duration", - "value": "1.5s" - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Duration] { - seconds: 1 - nanos: 500000000 - } - } - )"); - RunValidJsonTest( - "AnyWithTimestamp", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Timestamp", - "value": "1970-01-01T00:00:00Z" - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Timestamp] { - seconds: 0 - nanos: 0 - } - } - )"); - RunValidJsonTest( - "AnyWithFieldMask", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.FieldMask", - "value": "foo,barBaz" - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.FieldMask] { - paths: ["foo", "bar_baz"] - } - } - )"); - RunValidJsonTest( - "AnyWithStruct", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Struct", - "value": { - "foo": 1 - } - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Struct] { - fields: { - key: "foo" - value: { - number_value: 1 - } - } - } - } - )"); - RunValidJsonTest( - "AnyWithValueForJsonObject", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Value", - "value": { - "foo": 1 - } - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Value] { - struct_value: { - fields: { - key: "foo" - value: { - number_value: 1 - } - } - } - } - } - )"); - RunValidJsonTest( - "AnyWithValueForInteger", REQUIRED, - R"({ - "optionalAny": { - "@type": "type.googleapis.com/google.protobuf.Value", - "value": 1 - } - })", - R"( - optional_any: { - [type.googleapis.com/google.protobuf.Value] { - number_value: 1 - } - } - )"); - - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonNumber", REQUIRED, - R"({ - "unknown": 1 - })", - ""); - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonString", REQUIRED, - R"({ - "unknown": "a" - })", - ""); - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonTrue", REQUIRED, - R"({ - "unknown": true - })", - ""); - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonFalse", REQUIRED, - R"({ - "unknown": false - })", - ""); - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonNull", REQUIRED, - R"({ - "unknown": null - })", - ""); - RunValidJsonIgnoreUnknownTest( - "IgnoreUnknownJsonObject", REQUIRED, - R"({ - "unknown": {"a": 1} - })", - ""); - - ExpectParseFailureForJson("RejectTopLevelNull", REQUIRED, "null"); -} - -} // namespace protobuf -} // namespace google diff --git a/lib/protobuf/conformance/binary_json_conformance_suite.h b/lib/protobuf/conformance/binary_json_conformance_suite.h deleted file mode 100644 index 7a03545..0000000 --- a/lib/protobuf/conformance/binary_json_conformance_suite.h +++ /dev/null @@ -1,121 +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 CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H -#define CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H - -#include "conformance_test.h" -#include "third_party/jsoncpp/json.h" - -namespace google { -namespace protobuf { - -class BinaryAndJsonConformanceSuite : public ConformanceTestSuite { - public: - BinaryAndJsonConformanceSuite() {} - - private: - void RunSuiteImpl(); - void RunValidJsonTest(const string& test_name, - ConformanceLevel level, - const string& input_json, - const string& equivalent_text_format); - void RunValidJsonTestWithProtobufInput( - const string& test_name, - ConformanceLevel level, - const protobuf_test_messages::proto3::TestAllTypesProto3& input, - const string& equivalent_text_format); - void RunValidJsonIgnoreUnknownTest( - const string& test_name, ConformanceLevel level, const string& input_json, - const string& equivalent_text_format); - void RunValidProtobufTest(const string& test_name, ConformanceLevel level, - const string& input_protobuf, - const string& equivalent_text_format, - bool is_proto3); - void RunValidBinaryProtobufTest(const string& test_name, - ConformanceLevel level, - const string& input_protobuf, - bool is_proto3); - void RunValidProtobufTestWithMessage( - const string& test_name, ConformanceLevel level, - const Message *input, - const string& equivalent_text_format, - bool is_proto3); - - bool ParseJsonResponse( - const conformance::ConformanceResponse& response, - Message* test_message); - bool ParseResponse( - const conformance::ConformanceResponse& response, - const ConformanceRequestSetting& setting, - Message* test_message) override; - - typedef std::function Validator; - void RunValidJsonTestWithValidator(const string& test_name, - ConformanceLevel level, - const string& input_json, - const Validator& validator); - void ExpectParseFailureForJson(const string& test_name, - ConformanceLevel level, - const string& input_json); - void ExpectSerializeFailureForJson(const string& test_name, - ConformanceLevel level, - const string& text_format); - void ExpectParseFailureForProtoWithProtoVersion (const string& proto, - const string& test_name, - ConformanceLevel level, - bool is_proto3); - void ExpectParseFailureForProto(const std::string& proto, - const std::string& test_name, - ConformanceLevel level); - void ExpectHardParseFailureForProto(const std::string& proto, - const std::string& test_name, - ConformanceLevel level); - void TestPrematureEOFForType(google::protobuf::FieldDescriptor::Type type); - void TestIllegalTags(); - template - void TestOneofMessage (MessageType &message, - bool is_proto3); - template - void TestUnknownMessage (MessageType &message, - bool is_proto3); - void TestValidDataForType( - google::protobuf::FieldDescriptor::Type, - std::vector> values); - - std::unique_ptr - type_resolver_; - std::string type_url_; -}; - -} // namespace protobuf -} // namespace google - -#endif // CONFORMANCE_BINARY_JSON_CONFORMANCE_SUITE_H diff --git a/lib/protobuf/conformance/conformance.proto b/lib/protobuf/conformance/conformance.proto deleted file mode 100644 index 54da406..0000000 --- a/lib/protobuf/conformance/conformance.proto +++ /dev/null @@ -1,176 +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. - -syntax = "proto3"; -package conformance; -option java_package = "com.google.protobuf.conformance"; - -// This defines the conformance testing protocol. This protocol exists between -// the conformance test suite itself and the code being tested. For each test, -// the suite will send a ConformanceRequest message and expect a -// ConformanceResponse message. -// -// You can either run the tests in two different ways: -// -// 1. in-process (using the interface in conformance_test.h). -// -// 2. as a sub-process communicating over a pipe. Information about how to -// do this is in conformance_test_runner.cc. -// -// Pros/cons of the two approaches: -// -// - running as a sub-process is much simpler for languages other than C/C++. -// -// - 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; - JSPB = 3; // Google internal only. Opensource testees just skip it. - TEXT_FORMAT = 4; -} - -enum TestCategory { - UNSPECIFIED_TEST = 0; - BINARY_TEST = 1; // Test binary wire format. - JSON_TEST = 2; // Test json wire format. - // Similar to JSON_TEST. However, during parsing json, testee should ignore - // unknown fields. This feature is optional. Each implementation can descide - // whether to support it. See - // https://developers.google.com/protocol-buffers/docs/proto3#json_options - // for more detail. - JSON_IGNORE_UNKNOWN_PARSING_TEST = 3; - // Test jspb wire format. Google internal only. Opensource testees just skip it. - JSPB_TEST = 4; - // Test text format. For cpp, java and python, testees can already deal with - // this type. Testees of other languages can simply skip it. - TEXT_FORMAT_TEST = 5; -} - -// The conformance runner will request a list of failures as the first request. -// This will be known by message_type == "conformance.FailureSet", a conformance -// test should return a serialized FailureSet in protobuf_payload. -message FailureSet { - repeated string failure = 1; -} - -// Represents a single test case's input. The testee should: -// -// 1. parse this proto (which should always succeed) -// 2. parse the protobuf or JSON payload in "payload" (which may fail) -// 3. if the parse succeeded, serialize the message in the requested format. -message ConformanceRequest { - // The payload (whether protobuf of JSON) is always for a - // protobuf_test_messages.proto3.TestAllTypes proto (as defined in - // src/google/protobuf/proto3_test_messages.proto). - // - // TODO(haberman): if/when we expand the conformance tests to support proto2, - // we will want to include a field that lets the payload/response be a - // protobuf_test_messages.proto2.TestAllTypes message instead. - oneof payload { - bytes protobuf_payload = 1; - string json_payload = 2; - // Google internal only. Opensource testees just skip it. - string jspb_payload = 7; - string text_payload = 8; - } - - // Which format should the testee serialize its message to? - WireFormat requested_output_format = 3; - - // The full name for the test message to use; for the moment, either: - // protobuf_test_messages.proto3.TestAllTypesProto3 or - // protobuf_test_messages.proto2.TestAllTypesProto2. - string message_type = 4; - - // Each test is given a specific test category. Some category may need - // spedific support in testee programs. Refer to the defintion of TestCategory - // for more information. - TestCategory test_category = 5; - - // Specify details for how to encode jspb. - JspbEncodingConfig jspb_encoding_options = 6; - - // This can be used in json and text format. If true, testee should print - // unknown fields instead of ignore. This feature is optional. - bool print_unknown_fields = 9; -} - -// Represents a single test case's output. -message ConformanceResponse { - oneof result { - // This string should be set to indicate parsing failed. The string can - // provide more information about the parse error if it is available. - // - // Setting this string does not necessarily mean the testee failed the - // test. Some of the test cases are intentionally invalid input. - string parse_error = 1; - - // If the input was successfully parsed but errors occurred when - // serializing it to the requested output format, set the error message in - // this field. - string serialize_error = 6; - - // This should be set if some other error occurred. This will always - // indicate that the test failed. The string can provide more information - // about the failure. - string runtime_error = 2; - - // If the input was successfully parsed and the requested output was - // protobuf, serialize it to protobuf and set it in this field. - bytes protobuf_payload = 3; - - // 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; - - // If the input was successfully parsed and the requested output was JSPB, - // serialize to JSPB and set it in this field. JSPB is google internal only - // format. Opensource testees can just skip it. - string jspb_payload = 7; - - // If the input was successfully parsed and the requested output was - // TEXT_FORMAT, serialize to TEXT_FORMAT and set it in this field. - string text_payload = 8; - } -} - -// Encoding options for jspb format. -message JspbEncodingConfig { - // Encode the value field of Any as jspb array if ture, otherwise binary. - bool use_jspb_array_any_format = 1; -} - diff --git a/lib/protobuf/conformance/conformance_cpp.cc b/lib/protobuf/conformance/conformance_cpp.cc deleted file mode 100644 index 5a1f214..0000000 --- a/lib/protobuf/conformance/conformance_cpp.cc +++ /dev/null @@ -1,283 +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. - -#include -#include -#include - -#include "conformance.pb.h" -#include -#include -#include -#include -#include -#include - -using conformance::ConformanceRequest; -using conformance::ConformanceResponse; -using google::protobuf::Descriptor; -using google::protobuf::DescriptorPool; -using google::protobuf::Message; -using google::protobuf::MessageFactory; -using google::protobuf::TextFormat; -using google::protobuf::util::BinaryToJsonString; -using google::protobuf::util::JsonParseOptions; -using google::protobuf::util::JsonToBinaryString; -using google::protobuf::util::NewTypeResolverForDescriptorPool; -using google::protobuf::util::Status; -using google::protobuf::util::TypeResolver; -using protobuf_test_messages::proto2::TestAllTypesProto2; -using protobuf_test_messages::proto3::TestAllTypesProto3; -using std::string; - -static const char kTypeUrlPrefix[] = "type.googleapis.com"; - -const char* kFailures[] = { -#if !GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER - "Required.Proto2.ProtobufInput." - "PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE", - "Required.Proto2.ProtobufInput." - "PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.BOOL", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.ENUM", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.INT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.INT64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SINT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SINT64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.UINT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.UINT64", - "Required.Proto3.ProtobufInput." - "PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE", - "Required.Proto3.ProtobufInput." - "PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.BOOL", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.ENUM", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.INT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.INT64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SINT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SINT64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.UINT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.UINT64", -#endif -}; - -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; - while (len > 0) { - ssize_t bytes_read = read(fd, (char*)buf + ofs, len); - - if (bytes_read == 0) return false; - - if (bytes_read < 0) { - GOOGLE_LOG(FATAL) << "Error reading from test runner: " << strerror(errno); - } - - len -= bytes_read; - ofs += bytes_read; - } - - return true; -} - -void CheckedWrite(int fd, const void *buf, size_t len) { - if (write(fd, buf, len) != len) { - GOOGLE_LOG(FATAL) << "Error writing to test runner: " << strerror(errno); - } -} - -void DoTest(const ConformanceRequest& request, ConformanceResponse* response) { - Message *test_message; - const Descriptor *descriptor = DescriptorPool::generated_pool()->FindMessageTypeByName( - request.message_type()); - if (!descriptor) { - GOOGLE_LOG(FATAL) << "No such message type: " << request.message_type(); - } - test_message = MessageFactory::generated_factory()->GetPrototype(descriptor)->New(); - - switch (request.payload_case()) { - case ConformanceRequest::kProtobufPayload: { - if (!test_message->ParseFromString(request.protobuf_payload())) { - // Getting parse details would involve something like: - // http://stackoverflow.com/questions/22121922/how-can-i-get-more-details-about-errors-generated-during-protobuf-parsing-c - response->set_parse_error("Parse error (no more details available)."); - return; - } - break; - } - - case ConformanceRequest::kJsonPayload: { - string proto_binary; - JsonParseOptions options; - options.ignore_unknown_fields = - (request.test_category() == - conformance::JSON_IGNORE_UNKNOWN_PARSING_TEST); - Status status = JsonToBinaryString(type_resolver, *type_url, - request.json_payload(), &proto_binary, - options); - if (!status.ok()) { - response->set_parse_error(string("Parse error: ") + - status.error_message().as_string()); - return; - } - - if (!test_message->ParseFromString(proto_binary)) { - response->set_runtime_error( - "Parsing JSON generates invalid proto output."); - return; - } - break; - } - - case ConformanceRequest::kTextPayload: { - if (!TextFormat::ParseFromString(request.text_payload(), test_message)) { - response->set_parse_error("Parse error"); - return; - } - break; - } - - case ConformanceRequest::PAYLOAD_NOT_SET: - GOOGLE_LOG(FATAL) << "Request didn't have payload."; - break; - - default: - GOOGLE_LOG(FATAL) << "unknown payload type: " - << request.payload_case(); - break; - } - - conformance::FailureSet failures; - if (descriptor == failures.GetDescriptor()) { - for (const char* s : kFailures) failures.add_failure(s); - test_message = &failures; - } - - switch (request.requested_output_format()) { - case conformance::UNSPECIFIED: - GOOGLE_LOG(FATAL) << "Unspecified output format"; - break; - - case conformance::PROTOBUF: { - GOOGLE_CHECK(test_message->SerializeToString(response->mutable_protobuf_payload())); - break; - } - - 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()); - if (!status.ok()) { - response->set_serialize_error( - string("Failed to serialize JSON output: ") + - status.error_message().as_string()); - return; - } - break; - } - - case conformance::TEXT_FORMAT: { - TextFormat::Printer printer; - printer.SetHideUnknownFields(!request.print_unknown_fields()); - GOOGLE_CHECK(printer.PrintToString(*test_message, - response->mutable_text_payload())); - break; - } - - default: - GOOGLE_LOG(FATAL) << "Unknown output format: " - << request.requested_output_format(); - } -} - -bool DoTestIo() { - string serialized_input; - string serialized_output; - ConformanceRequest request; - ConformanceResponse response; - uint32_t bytes; - - if (!CheckedRead(STDIN_FILENO, &bytes, sizeof(uint32_t))) { - // EOF. - return false; - } - - serialized_input.resize(bytes); - - if (!CheckedRead(STDIN_FILENO, (char*)serialized_input.c_str(), bytes)) { - GOOGLE_LOG(ERROR) << "Unexpected EOF on stdin. " << strerror(errno); - } - - if (!request.ParseFromString(serialized_input)) { - GOOGLE_LOG(FATAL) << "Parse of ConformanceRequest proto failed."; - return false; - } - - DoTest(request, &response); - - response.SerializeToString(&serialized_output); - - bytes = serialized_output.size(); - CheckedWrite(STDOUT_FILENO, &bytes, sizeof(uint32_t)); - CheckedWrite(STDOUT_FILENO, serialized_output.c_str(), bytes); - - if (verbose) { - fprintf(stderr, "conformance-cpp: request=%s, response=%s\n", - request.ShortDebugString().c_str(), - response.ShortDebugString().c_str()); - } - - test_count++; - - return true; -} - -int main() { - type_resolver = NewTypeResolverForDescriptorPool( - kTypeUrlPrefix, DescriptorPool::generated_pool()); - type_url = new string(GetTypeUrl(TestAllTypesProto3::descriptor())); - while (1) { - if (!DoTestIo()) { - fprintf(stderr, "conformance-cpp: received EOF from test runner " - "after %d tests, exiting\n", test_count); - return 0; - } - } -} diff --git a/lib/protobuf/conformance/conformance_nodejs.js b/lib/protobuf/conformance/conformance_nodejs.js deleted file mode 100755 index 4d96a38..0000000 --- a/lib/protobuf/conformance/conformance_nodejs.js +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env node - -/* - * 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. - */ - -var conformance = require('conformance_pb'); -var test_messages_proto3 = require('google/protobuf/test_messages_proto3_pb'); -var test_messages_proto2 = require('google/protobuf/test_messages_proto2_pb'); -var fs = require('fs'); - -var testCount = 0; - -function doTest(request) { - var testMessage; - var response = new conformance.ConformanceResponse(); - - try { - if (request.getRequestedOutputFormat() === conformance.WireFormat.JSON) { - response.setSkipped("JSON not supported."); - return response; - } - - switch (request.getPayloadCase()) { - case conformance.ConformanceRequest.PayloadCase.PROTOBUF_PAYLOAD: { - if (request.getMessageType() == "protobuf_test_messages.proto3.TestAllTypesProto3") { - try { - testMessage = test_messages_proto3.TestAllTypesProto3.deserializeBinary( - request.getProtobufPayload()); - } catch (err) { - response.setParseError(err.toString()); - return response; - } - } else if (request.getMessageType() == "protobuf_test_messages.proto2.TestAllTypesProto2"){ - try { - testMessage = test_messages_proto2.TestAllTypesProto2.deserializeBinary( - request.getProtobufPayload()); - } catch (err) { - response.setParseError(err.toString()); - return response; - } - } else { - throw "Protobuf request doesn\'t have specific payload type"; - } - } - - case conformance.ConformanceRequest.PayloadCase.JSON_PAYLOAD: - response.setSkipped("JSON not supported."); - return response; - - case conformance.ConformanceRequest.PayloadCase.TEXT_PAYLOAD: - response.setSkipped("Text format not supported."); - return response; - - case conformance.ConformanceRequest.PayloadCase.PAYLOAD_NOT_SET: - response.setRuntimeError("Request didn't have payload"); - return response; - } - - switch (request.getRequestedOutputFormat()) { - case conformance.WireFormat.UNSPECIFIED: - response.setRuntimeError("Unspecified output format"); - return response; - - case conformance.WireFormat.PROTOBUF: - response.setProtobufPayload(testMessage.serializeBinary()); - - case conformance.WireFormat.JSON: - response.setSkipped("JSON not supported."); - return response; - - default: - throw "Request didn't have requested output format"; - } - } catch (err) { - response.setRuntimeError(err.toString()); - } - - return response; -} - -function onEof(totalRead) { - if (totalRead == 0) { - return undefined; - } else { - throw "conformance_nodejs: premature EOF on stdin."; - } -} - -// Utility function to read a buffer of N bytes. -function readBuffer(bytes) { - var buf = new Buffer(bytes); - var totalRead = 0; - while (totalRead < bytes) { - var read = 0; - try { - read = fs.readSync(process.stdin.fd, buf, totalRead, bytes - totalRead); - } catch (e) { - if (e.code == 'EOF') { - return onEof(totalRead) - } else if (e.code == 'EAGAIN') { - } else { - throw "conformance_nodejs: Error reading from stdin." + e; - } - } - - totalRead += read; - } - - return buf; -} - -function writeBuffer(buffer) { - var totalWritten = 0; - while (totalWritten < buffer.length) { - totalWritten += fs.writeSync( - process.stdout.fd, buffer, totalWritten, buffer.length - totalWritten); - } -} - -// Returns true if the test ran successfully, false on legitimate EOF. -// If EOF is encountered in an unexpected place, raises IOError. -function doTestIo() { - var lengthBuf = readBuffer(4); - if (!lengthBuf) { - return false; - } - - var length = lengthBuf.readInt32LE(0); - var serializedRequest = readBuffer(length); - if (!serializedRequest) { - throw "conformance_nodejs: Failed to read request."; - } - - serializedRequest = new Uint8Array(serializedRequest); - var request = - conformance.ConformanceRequest.deserializeBinary(serializedRequest); - var response = doTest(request); - - var serializedResponse = response.serializeBinary(); - - lengthBuf = new Buffer(4); - lengthBuf.writeInt32LE(serializedResponse.length, 0); - writeBuffer(lengthBuf); - writeBuffer(new Buffer(serializedResponse)); - - testCount += 1 - - return true; -} - -while (true) { - if (!doTestIo()) { - console.error('conformance_nodejs: received EOF from test runner ' + - "after " + testCount + " tests, exiting") - break; - } -} diff --git a/lib/protobuf/conformance/conformance_objc.m b/lib/protobuf/conformance/conformance_objc.m deleted file mode 100644 index 60b2ac5..0000000 --- a/lib/protobuf/conformance/conformance_objc.m +++ /dev/null @@ -1,210 +0,0 @@ -// 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. - -#import - -#import "Conformance.pbobjc.h" -#import "google/protobuf/TestMessagesProto2.pbobjc.h" -#import "google/protobuf/TestMessagesProto3.pbobjc.h" - -static void Die(NSString *format, ...) __dead2; - -static BOOL verbose = NO; -static int32_t testCount = 0; - -static void Die(NSString *format, ...) { - va_list args; - va_start(args, format); - NSString *msg = [[NSString alloc] initWithFormat:format arguments:args]; - NSLog(@"%@", msg); - va_end(args); - [msg release]; - exit(66); -} - -static NSData *CheckedReadDataOfLength(NSFileHandle *handle, NSUInteger numBytes) { - NSData *data = [handle readDataOfLength:numBytes]; - NSUInteger dataLen = data.length; - if (dataLen == 0) { - return nil; // EOF. - } - if (dataLen != numBytes) { - Die(@"Failed to read the request length (%d), only got: %@", - numBytes, data); - } - return data; -} - -static ConformanceResponse *DoTest(ConformanceRequest *request) { - ConformanceResponse *response = [ConformanceResponse message]; - GPBMessage *testMessage = nil; - - switch (request.payloadOneOfCase) { - case ConformanceRequest_Payload_OneOfCase_GPBUnsetOneOfCase: - Die(@"Request didn't have a payload: %@", request); - break; - - case ConformanceRequest_Payload_OneOfCase_ProtobufPayload: { - Class msgClass = nil; - if ([request.messageType isEqual:@"protobuf_test_messages.proto3.TestAllTypesProto3"]) { - msgClass = [Proto3TestAllTypesProto3 class]; - } else if ([request.messageType isEqual:@"protobuf_test_messages.proto2.TestAllTypesProto2"]) { - msgClass = [TestAllTypesProto2 class]; - } else { - Die(@"Protobuf request had an unknown message_type: %@", request.messageType); - } - NSError *error = nil; - testMessage = [msgClass parseFromData:request.protobufPayload error:&error]; - if (!testMessage) { - response.parseError = - [NSString stringWithFormat:@"Parse error: %@", error]; - } - break; - } - - case ConformanceRequest_Payload_OneOfCase_JsonPayload: - response.skipped = @"ObjC doesn't support parsing JSON"; - break; - - case ConformanceRequest_Payload_OneOfCase_JspbPayload: - response.skipped = - @"ConformanceRequest had a jspb_payload ConformanceRequest.payload;" - " those aren't supposed to happen with opensource."; - break; - - case ConformanceRequest_Payload_OneOfCase_TextPayload: - response.skipped = @"ObjC doesn't support parsing TextFormat"; - break; - } - - if (testMessage) { - switch (request.requestedOutputFormat) { - case WireFormat_GPBUnrecognizedEnumeratorValue: - case WireFormat_Unspecified: - Die(@"Unrecognized/unspecified output format: %@", request); - break; - - case WireFormat_Protobuf: - response.protobufPayload = testMessage.data; - if (!response.protobufPayload) { - response.serializeError = - [NSString stringWithFormat:@"Failed to make data from: %@", testMessage]; - } - break; - - case WireFormat_Json: - response.skipped = @"ObjC doesn't support generating JSON"; - break; - - case WireFormat_Jspb: - response.skipped = - @"ConformanceRequest had a requested_output_format of JSPB WireFormat; that" - " isn't supposed to happen with opensource."; - break; - - case WireFormat_TextFormat: - // ObjC only has partial objc generation, so don't attempt any tests that need - // support. - response.skipped = @"ObjC doesn't support generating TextFormat"; - break; - } - } - - return response; -} - -static uint32_t UInt32FromLittleEndianData(NSData *data) { - if (data.length != sizeof(uint32_t)) { - Die(@"Data not the right size for uint32_t: %@", data); - } - uint32_t value; - memcpy(&value, data.bytes, sizeof(uint32_t)); - return CFSwapInt32LittleToHost(value); -} - -static NSData *UInt32ToLittleEndianData(uint32_t num) { - uint32_t value = CFSwapInt32HostToLittle(num); - return [NSData dataWithBytes:&value length:sizeof(uint32_t)]; -} - -static BOOL DoTestIo(NSFileHandle *input, NSFileHandle *output) { - // See conformance_test_runner.cc for the wire format. - NSData *data = CheckedReadDataOfLength(input, sizeof(uint32_t)); - if (!data) { - // EOF. - return NO; - } - uint32_t numBytes = UInt32FromLittleEndianData(data); - data = CheckedReadDataOfLength(input, numBytes); - if (!data) { - Die(@"Failed to read request"); - } - - NSError *error = nil; - ConformanceRequest *request = [ConformanceRequest parseFromData:data - error:&error]; - if (!request) { - Die(@"Failed to parse the message data: %@", error); - } - - ConformanceResponse *response = DoTest(request); - if (!response) { - Die(@"Failed to make a reply from %@", request); - } - - data = response.data; - [output writeData:UInt32ToLittleEndianData((int32_t)data.length)]; - [output writeData:data]; - - if (verbose) { - NSLog(@"Request: %@", request); - NSLog(@"Response: %@", response); - } - - ++testCount; - return YES; -} - -int main(int argc, const char *argv[]) { - @autoreleasepool { - NSFileHandle *input = [[NSFileHandle fileHandleWithStandardInput] retain]; - NSFileHandle *output = [[NSFileHandle fileHandleWithStandardOutput] retain]; - - BOOL notDone = YES; - while (notDone) { - @autoreleasepool { - notDone = DoTestIo(input, output); - } - } - - NSLog(@"Received EOF from test runner after %d tests, exiting.", testCount); - } - return 0; -} diff --git a/lib/protobuf/conformance/conformance_php.php b/lib/protobuf/conformance/conformance_php.php deleted file mode 100755 index 9eef0c5..0000000 --- a/lib/protobuf/conformance/conformance_php.php +++ /dev/null @@ -1,120 +0,0 @@ -getPayload() == "protobuf_payload") { - if ($request->getMessageType() == "conformance.FailureSet") { - $response->setProtobufPayload(""); - return $response; - } elseif ($request->getMessageType() == "protobuf_test_messages.proto3.TestAllTypesProto3") { - try { - $test_message->mergeFromString($request->getProtobufPayload()); - } catch (Exception $e) { - $response->setParseError($e->getMessage()); - return $response; - } - } elseif ($request->getMessageType() == "protobuf_test_messages.proto2.TestAllTypesProto2") { - $response->setSkipped("PHP doesn't support proto2"); - return $response; - } else { - trigger_error("Protobuf request doesn't have specific payload type", E_USER_ERROR); - } - } elseif ($request->getPayload() == "json_payload") { - $ignore_json_unknown = - ($request->getTestCategory() == - TestCategory::JSON_IGNORE_UNKNOWN_PARSING_TEST); - try { - $test_message->mergeFromJsonString($request->getJsonPayload(), - $ignore_json_unknown); - } catch (Exception $e) { - $response->setParseError($e->getMessage()); - return $response; - } - } elseif ($request->getPayload() == "text_payload") { - $response->setSkipped("PHP doesn't support text format yet"); - return $response; - } else { - trigger_error("Request didn't have payload.", E_USER_ERROR); - } - - if ($request->getRequestedOutputFormat() == WireFormat::UNSPECIFIED) { - trigger_error("Unspecified output format.", E_USER_ERROR); - } elseif ($request->getRequestedOutputFormat() == WireFormat::PROTOBUF) { - $response->setProtobufPayload($test_message->serializeToString()); - } elseif ($request->getRequestedOutputFormat() == WireFormat::JSON) { - try { - $response->setJsonPayload($test_message->serializeToJsonString()); - } catch (Exception $e) { - $response->setSerializeError($e->getMessage()); - return $response; - } - } - - return $response; -} - -function doTestIO() -{ - $length_bytes = fread(STDIN, 4); - if (strlen($length_bytes) == 0) { - return false; # EOF - } elseif (strlen($length_bytes) != 4) { - fwrite(STDERR, "I/O error\n"); - return false; - } - - $length = unpack("V", $length_bytes)[1]; - $serialized_request = fread(STDIN, $length); - if (strlen($serialized_request) != $length) { - trigger_error("I/O error", E_USER_ERROR); - } - - $request = new \Conformance\ConformanceRequest(); - $request->mergeFromString($serialized_request); - - $response = doTest($request); - - $serialized_response = $response->serializeToString(); - fwrite(STDOUT, pack("V", strlen($serialized_response))); - fwrite(STDOUT, $serialized_response); - - $GLOBALS['test_count'] += 1; - - return true; -} - -while(true){ - if (!doTestIO()) { - fprintf(STDERR, - "conformance_php: received EOF from test runner " + - "after %d tests, exiting\n", $test_count); - exit; - } -} diff --git a/lib/protobuf/conformance/conformance_python.py b/lib/protobuf/conformance/conformance_python.py deleted file mode 100755 index 88d9749..0000000 --- a/lib/protobuf/conformance/conformance_python.py +++ /dev/null @@ -1,216 +0,0 @@ -#!/usr/bin/env python -# -# 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. - -"""A conformance test implementation for the Python protobuf library. - -See conformance.proto for more information. -""" - -import struct -import sys -import os -from google.protobuf import descriptor -from google.protobuf import descriptor_pool -from google.protobuf import json_format -from google.protobuf import message -from google.protobuf import test_messages_proto3_pb2 -from google.protobuf import test_messages_proto2_pb2 -from google.protobuf import text_format -import conformance_pb2 - -sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) -sys.stdin = os.fdopen(sys.stdin.fileno(), 'rb', 0) - -test_count = 0 -verbose = False - -class ProtocolError(Exception): - pass - -def do_test(request): - response = conformance_pb2.ConformanceResponse() - - if request.message_type == "conformance.FailureSet": - failure_set = conformance_pb2.FailureSet() - failures = [] - # TODO(gerbens): Remove, this is a hack to detect if the old vs new - # parser is used by the cpp code. Relying on a bug in the old parser. - hack_proto = test_messages_proto2_pb2.TestAllTypesProto2() - old_parser = True - try: - hack_proto.ParseFromString(b"\322\002\001") - except message.DecodeError as e: - old_parser = False - if old_parser: - # the string above is one of the failing conformance test strings of the - # old parser. If we succeed the c++ implementation is using the old - # parser so we add the list of failing conformance tests. - failures = [ - "Required.Proto3.ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE", - "Required.Proto3.ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.BOOL", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.DOUBLE", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.ENUM", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.FIXED32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.FIXED64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.FLOAT", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.INT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.INT64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SFIXED32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SFIXED64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SINT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.SINT64", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.UINT32", - "Required.Proto3.ProtobufInput.PrematureEofInPackedField.UINT64", - "Required.Proto2.ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE", - "Required.Proto2.ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.BOOL", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.DOUBLE", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.ENUM", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.FIXED32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.FIXED64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.FLOAT", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.INT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.INT64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SFIXED32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SFIXED64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SINT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.SINT64", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.UINT32", - "Required.Proto2.ProtobufInput.PrematureEofInPackedField.UINT64", - ] - for x in failures: - failure_set.failure.append(x) - response.protobuf_payload = failure_set.SerializeToString() - return response - - isProto3 = (request.message_type == "protobuf_test_messages.proto3.TestAllTypesProto3") - isJson = (request.WhichOneof('payload') == 'json_payload') - isProto2 = (request.message_type == "protobuf_test_messages.proto2.TestAllTypesProto2") - - if (not isProto3) and (not isJson) and (not isProto2): - raise ProtocolError("Protobuf request doesn't have specific payload type") - - test_message = test_messages_proto2_pb2.TestAllTypesProto2() if isProto2 else \ - test_messages_proto3_pb2.TestAllTypesProto3() - - try: - if request.WhichOneof('payload') == 'protobuf_payload': - try: - test_message.ParseFromString(request.protobuf_payload) - except message.DecodeError as e: - response.parse_error = str(e) - return response - - elif request.WhichOneof('payload') == 'json_payload': - try: - ignore_unknown_fields = \ - request.test_category == \ - conformance_pb2.JSON_IGNORE_UNKNOWN_PARSING_TEST - json_format.Parse(request.json_payload, test_message, - ignore_unknown_fields) - except Exception as e: - response.parse_error = str(e) - return response - - elif request.WhichOneof('payload') == 'text_payload': - try: - text_format.Parse(request.text_payload, test_message) - except Exception as e: - response.parse_error = str(e) - return response - - else: - raise ProtocolError("Request didn't have payload.") - - if request.requested_output_format == conformance_pb2.UNSPECIFIED: - raise ProtocolError("Unspecified output format") - - elif request.requested_output_format == conformance_pb2.PROTOBUF: - response.protobuf_payload = test_message.SerializeToString() - - elif request.requested_output_format == conformance_pb2.JSON: - try: - response.json_payload = json_format.MessageToJson(test_message) - except Exception as e: - response.serialize_error = str(e) - return response - - elif request.requested_output_format == conformance_pb2.TEXT_FORMAT: - response.text_payload = text_format.MessageToString( - test_message, print_unknown_fields=request.print_unknown_fields) - - except Exception as e: - response.runtime_error = str(e) - - return response - -def do_test_io(): - length_bytes = sys.stdin.read(4) - if len(length_bytes) == 0: - return False # EOF - elif len(length_bytes) != 4: - raise IOError("I/O error") - - # "I" is "unsigned int", so this depends on running on a platform with - # 32-bit "unsigned int" type. The Python struct module unfortunately - # has no format specifier for uint32_t. - length = struct.unpack(" err - response.parse_error = err.message.encode('utf-8') - return response - end - elsif request.message_type.eql?('protobuf_test_messages.proto2.TestAllTypesProto2') - response.skipped = "Ruby doesn't support proto2" - return response - else - fail "Protobuf request doesn't have specific payload type" - end - - when :json_payload - begin - test_message = ProtobufTestMessages::Proto3::TestAllTypesProto3.decode_json( - request.json_payload) - rescue Google::Protobuf::ParseError => err - response.parse_error = err.message.encode('utf-8') - return response - end - - when :text_payload - begin - response.skipped = "Ruby doesn't support proto2" - return response - end - - when nil - fail "Request didn't have payload" - end - - case request.requested_output_format - when :UNSPECIFIED - fail 'Unspecified output format' - - when :PROTOBUF - response.protobuf_payload = test_message.to_proto - - when :JSON - response.json_payload = test_message.to_json - - when nil - fail "Request didn't have requested output format" - end - rescue StandardError => err - response.runtime_error = err.message.encode('utf-8') - end - - response -end - -# Returns true if the test ran successfully, false on legitimate EOF. -# If EOF is encountered in an unexpected place, raises IOError. -def do_test_io - length_bytes = STDIN.read(4) - return false if length_bytes.nil? - - length = length_bytes.unpack('V').first - serialized_request = STDIN.read(length) - if serialized_request.nil? || serialized_request.length != length - fail IOError - end - - request = Conformance::ConformanceRequest.decode(serialized_request) - - response = do_test(request) - - serialized_response = Conformance::ConformanceResponse.encode(response) - STDOUT.write([serialized_response.length].pack('V')) - STDOUT.write(serialized_response) - STDOUT.flush - - if $verbose - STDERR.puts("conformance_ruby: request=#{request.to_json}, " \ - "response=#{response.to_json}\n") - end - - $test_count += 1 - - true -end - -loop do - unless do_test_io - STDERR.puts('conformance_ruby: received EOF from test runner ' \ - "after #{$test_count} tests, exiting") - break - end -end diff --git a/lib/protobuf/conformance/conformance_test.cc b/lib/protobuf/conformance/conformance_test.cc deleted file mode 100644 index 6325b35..0000000 --- a/lib/protobuf/conformance/conformance_test.cc +++ /dev/null @@ -1,435 +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. - -#include -#include -#include -#include - -#include "conformance.pb.h" -#include "conformance_test.h" - -#include -#include -#include -#include -#include -#include -#include - -using conformance::ConformanceRequest; -using conformance::ConformanceResponse; -using conformance::WireFormat; -using google::protobuf::TextFormat; -using google::protobuf::util::DefaultFieldComparator; -using google::protobuf::util::JsonToBinaryString; -using google::protobuf::util::MessageDifferencer; -using google::protobuf::util::Status; -using std::string; - -namespace google { -namespace protobuf { - -ConformanceTestSuite::ConformanceRequestSetting::ConformanceRequestSetting( - ConformanceLevel level, - conformance::WireFormat input_format, - conformance::WireFormat output_format, - conformance::TestCategory test_category, - const Message& prototype_message, - const string& test_name, const string& input) - : level_(level), - input_format_(input_format), - output_format_(output_format), - prototype_message_(prototype_message), - prototype_message_for_compare_(prototype_message.New()), - test_name_(test_name) { - switch (input_format) { - case conformance::PROTOBUF: { - request_.set_protobuf_payload(input); - break; - } - - case conformance::JSON: { - request_.set_json_payload(input); - break; - } - - case conformance::JSPB: { - request_.set_jspb_payload(input); - break; - } - - case conformance::TEXT_FORMAT: { - request_.set_text_payload(input); - break; - } - - default: - GOOGLE_LOG(FATAL) << "Unspecified input format"; - } - - request_.set_test_category(test_category); - - request_.set_message_type(prototype_message.GetDescriptor()->full_name()); - request_.set_requested_output_format(output_format); -} - -Message* ConformanceTestSuite::ConformanceRequestSetting:: - GetTestMessage() const { - return prototype_message_for_compare_->New(); -} - -string ConformanceTestSuite::ConformanceRequestSetting:: - GetTestName() const { - string rname = - prototype_message_.GetDescriptor()->file()->syntax() == - FileDescriptor::SYNTAX_PROTO3 ? "Proto3" : "Proto2"; - - return StrCat(ConformanceLevelToString(level_), ".", - rname, ".", - InputFormatString(input_format_), - ".", test_name_, ".", - OutputFormatString(output_format_)); -} - -string ConformanceTestSuite::ConformanceRequestSetting:: - ConformanceLevelToString( - ConformanceLevel level) const { - switch (level) { - case REQUIRED: return "Required"; - case RECOMMENDED: return "Recommended"; - } - GOOGLE_LOG(FATAL) << "Unknown value: " << level; - return ""; -} - -string ConformanceTestSuite::ConformanceRequestSetting:: - InputFormatString(conformance::WireFormat format) const { - switch (format) { - case conformance::PROTOBUF: - return "ProtobufInput"; - case conformance::JSON: - return "JsonInput"; - case conformance::TEXT_FORMAT: - return "TextFormatInput"; - default: - GOOGLE_LOG(FATAL) << "Unspecified output format"; - } - return ""; -} - -string ConformanceTestSuite::ConformanceRequestSetting:: - OutputFormatString(conformance::WireFormat format) const { - switch (format) { - case conformance::PROTOBUF: - return "ProtobufOutput"; - case conformance::JSON: - return "JsonOutput"; - case conformance::TEXT_FORMAT: - return "TextFormatOutput"; - default: - GOOGLE_LOG(FATAL) << "Unspecified output format"; - } - return ""; -} - -void ConformanceTestSuite::ReportSuccess(const string& test_name) { - if (expected_to_fail_.erase(test_name) != 0) { - StringAppendF(&output_, - "ERROR: test %s is in the failure list, but test succeeded. " - "Remove it from the failure list.\n", - test_name.c_str()); - unexpected_succeeding_tests_.insert(test_name); - } - successes_++; -} - -void ConformanceTestSuite::ReportFailure(const string& test_name, - ConformanceLevel level, - const ConformanceRequest& request, - const ConformanceResponse& response, - const char* fmt, ...) { - if (expected_to_fail_.erase(test_name) == 1) { - expected_failures_++; - if (!verbose_) - return; - } else if (level == RECOMMENDED && !enforce_recommended_) { - StringAppendF(&output_, "WARNING, test=%s: ", test_name.c_str()); - } else { - StringAppendF(&output_, "ERROR, test=%s: ", test_name.c_str()); - unexpected_failing_tests_.insert(test_name); - } - va_list args; - va_start(args, fmt); - StringAppendV(&output_, fmt, args); - va_end(args); - 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::RunValidInputTest( - const ConformanceRequestSetting& setting, - const string& equivalent_text_format) { - Message* reference_message = setting.GetTestMessage(); - GOOGLE_CHECK( - TextFormat::ParseFromString(equivalent_text_format, reference_message)) - << "Failed to parse data for test case: " << setting.GetTestName() - << ", data: " << equivalent_text_format; - const string equivalent_wire_format = reference_message->SerializeAsString(); - RunValidBinaryInputTest(setting, equivalent_wire_format); -} - -void ConformanceTestSuite::RunValidBinaryInputTest( - const ConformanceRequestSetting& setting, - const string& equivalent_wire_format) { - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - RunTest(setting.GetTestName(), request, &response); - VerifyResponse(setting, equivalent_wire_format, response, true); -} - -void ConformanceTestSuite::VerifyResponse( - const ConformanceRequestSetting& setting, - const string& equivalent_wire_format, - const ConformanceResponse& response, - bool need_report_success) { - Message* test_message = setting.GetTestMessage(); - const ConformanceRequest& request = setting.GetRequest(); - const string& test_name = setting.GetTestName(); - ConformanceLevel level = setting.GetLevel(); - Message* reference_message = setting.GetTestMessage(); - - GOOGLE_CHECK( - reference_message->ParseFromString(equivalent_wire_format)) - << "Failed to parse wire data for test case: " << test_name; - - switch (response.result_case()) { - case ConformanceResponse::RESULT_NOT_SET: - ReportFailure(test_name, level, request, response, - "Response didn't have any field in the Response."); - return; - - case ConformanceResponse::kParseError: - case ConformanceResponse::kRuntimeError: - case ConformanceResponse::kSerializeError: - ReportFailure(test_name, level, request, response, - "Failed to parse input or produce output."); - return; - - case ConformanceResponse::kSkipped: - ReportSkip(test_name, request, response); - return; - - default: - if (!ParseResponse(response, setting, test_message)) return; - } - - MessageDifferencer differencer; - DefaultFieldComparator field_comparator; - field_comparator.set_treat_nan_as_equal(true); - differencer.set_field_comparator(&field_comparator); - string differences; - differencer.ReportDifferencesToString(&differences); - - bool check; - check = differencer.Compare(*reference_message, *test_message); - if (check) { - if (need_report_success) { - ReportSuccess(test_name); - } - } else { - ReportFailure(test_name, level, request, response, - "Output was not equivalent to reference message: %s.", - differences.c_str()); - } -} - -void ConformanceTestSuite::RunTest(const string& test_name, - const ConformanceRequest& request, - ConformanceResponse* response) { - if (test_names_.insert(test_name).second == false) { - GOOGLE_LOG(FATAL) << "Duplicated test name: " << test_name; - } - - string serialized_request; - string serialized_response; - request.SerializeToString(&serialized_request); - - runner_->RunTest(test_name, serialized_request, &serialized_response); - - if (!response->ParseFromString(serialized_response)) { - response->Clear(); - response->set_runtime_error("response proto could not be parsed."); - } - - if (verbose_) { - StringAppendF(&output_, - "conformance test: name=%s, request=%s, response=%s\n", - test_name.c_str(), - request.ShortDebugString().c_str(), - response->ShortDebugString().c_str()); - } -} - -bool ConformanceTestSuite::CheckSetEmpty( - const std::set& set_to_check, - const std::string& write_to_file, - const std::string& msg) { - if (set_to_check.empty()) { - return true; - } else { - StringAppendF(&output_, "\n"); - StringAppendF(&output_, "%s\n\n", msg.c_str()); - for (std::set::const_iterator iter = set_to_check.begin(); - iter != set_to_check.end(); ++iter) { - StringAppendF(&output_, " %s\n", iter->c_str()); - } - StringAppendF(&output_, "\n"); - - if (!write_to_file.empty()) { - std::ofstream os(write_to_file); - if (os) { - for (std::set::const_iterator iter = set_to_check.begin(); - iter != set_to_check.end(); ++iter) { - os << *iter << "\n"; - } - } else { - StringAppendF(&output_, "Failed to open file: %s\n", - write_to_file.c_str()); - } - } - - return false; - } -} - -string ConformanceTestSuite::WireFormatToString( - WireFormat wire_format) { - switch (wire_format) { - case conformance::PROTOBUF: - return "PROTOBUF"; - case conformance::JSON: - return "JSON"; - case conformance::JSPB: - return "JSPB"; - case conformance::TEXT_FORMAT: - return "TEXT_FORMAT"; - case conformance::UNSPECIFIED: - return "UNSPECIFIED"; - default: - GOOGLE_LOG(FATAL) << "unknown wire type: " - << wire_format; - } - return ""; -} - -void ConformanceTestSuite::AddExpectedFailedTest(const std::string& test_name) { - expected_to_fail_.insert(test_name); -} - -bool ConformanceTestSuite::RunSuite(ConformanceTestRunner* runner, - std::string* output, const string& filename, - conformance::FailureSet* failure_list) { - runner_ = runner; - successes_ = 0; - expected_failures_ = 0; - skipped_.clear(); - test_names_.clear(); - unexpected_failing_tests_.clear(); - unexpected_succeeding_tests_.clear(); - - output_ = "\nCONFORMANCE TEST BEGIN ====================================\n\n"; - - failure_list_filename_ = filename; - expected_to_fail_.clear(); - for (const string& failure : failure_list->failure()) { - AddExpectedFailedTest(failure); - } - RunSuiteImpl(); - - bool ok = true; - if (!CheckSetEmpty(expected_to_fail_, "nonexistent_tests.txt", - "These tests were listed in the failure list, but they " - "don't exist. Remove them from the failure list by " - "running:\n" - " ./update_failure_list.py " + failure_list_filename_ + - " --remove nonexistent_tests.txt")) { - ok = false; - } - if (!CheckSetEmpty(unexpected_failing_tests_, "failing_tests.txt", - "These tests failed. If they can't be fixed right now, " - "you can add them to the failure list so the overall " - "suite can succeed. Add them to the failure list by " - "running:\n" - " ./update_failure_list.py " + failure_list_filename_ + - " --add failing_tests.txt")) { - ok = false; - } - if (!CheckSetEmpty(unexpected_succeeding_tests_, "succeeding_tests.txt", - "These tests succeeded, even though they were listed in " - "the failure list. Remove them from the failure list " - "by running:\n" - " ./update_failure_list.py " + failure_list_filename_ + - " --remove succeeding_tests.txt")) { - ok = false; - } - - if (verbose_) { - 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; -} - -} // namespace protobuf -} // namespace google diff --git a/lib/protobuf/conformance/conformance_test.h b/lib/protobuf/conformance/conformance_test.h deleted file mode 100644 index 4d741e7..0000000 --- a/lib/protobuf/conformance/conformance_test.h +++ /dev/null @@ -1,319 +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. - - -// This file defines a protocol for running the conformance test suite -// in-process. In other words, the suite itself will run in the same process as -// the code under test. -// -// For pros and cons of this approach, please see conformance.proto. - -#ifndef CONFORMANCE_CONFORMANCE_TEST_H -#define CONFORMANCE_CONFORMANCE_TEST_H - -#include -#include - -#include -#include -#include -#include - -#include "conformance.pb.h" - -namespace conformance { -class ConformanceRequest; -class ConformanceResponse; -} // namespace conformance - -namespace protobuf_test_messages { -namespace proto3 { -class TestAllTypesProto3; -} // namespace proto3 -} // namespace protobuf_test_messages - -namespace google { -namespace protobuf { - -class ConformanceTestSuite; - -class ConformanceTestRunner { - public: - virtual ~ConformanceTestRunner() {} - - // Call to run a single conformance test. - // - // "input" is a serialized conformance.ConformanceRequest. - // "output" should be set to a serialized conformance.ConformanceResponse. - // - // If there is any error in running the test itself, set "runtime_error" in - // the response. - virtual void RunTest(const std::string& test_name, - const std::string& input, - std::string* output) = 0; -}; - -// Test runner that spawns the process being tested and communicates with it -// over a pipe. -class ForkPipeRunner : public ConformanceTestRunner { - public: - // Note: Run() doesn't take ownership of the pointers inside suites. - static int Run(int argc, char *argv[], - const std::vector& suites); - - ForkPipeRunner(const std::string &executable) - : child_pid_(-1), executable_(executable) {} - - virtual ~ForkPipeRunner() {} - - void RunTest(const std::string& test_name, - const std::string& request, - std::string* response); - - private: - void SpawnTestProgram(); - - void CheckedWrite(int fd, const void *buf, size_t len); - bool TryRead(int fd, void *buf, size_t len); - void CheckedRead(int fd, void *buf, size_t len); - - int write_fd_; - int read_fd_; - pid_t child_pid_; - std::string executable_; - std::string current_test_name_; -}; - -// Class representing the test suite itself. To run it, implement your own -// class derived from ConformanceTestRunner, class derived from -// ConformanceTestSuite and then write code like: -// -// class MyConformanceTestSuite : public ConformanceTestSuite { -// public: -// void RunSuiteImpl() { -// // INSERT ACTURAL TESTS. -// } -// }; -// -// class MyConformanceTestRunner : public ConformanceTestRunner { -// public: -// static int Run(int argc, char *argv[], -// ConformanceTestSuite* suite); -// -// private: -// virtual void RunTest(...) { -// // INSERT YOUR FRAMEWORK-SPECIFIC CODE HERE. -// } -// }; -// -// int main() { -// MyConformanceTestSuite suite; -// MyConformanceTestRunner::Run(argc, argv, &suite); -// } -// -class ConformanceTestSuite { - public: - ConformanceTestSuite() - : verbose_(false), - enforce_recommended_(false), - failure_list_flag_name_("--failure_list") {} - virtual ~ConformanceTestSuite() {} - - void SetVerbose(bool verbose) { verbose_ = verbose; } - - // Whether to require the testee to pass RECOMMENDED tests. By default failing - // a RECOMMENDED test case will not fail the entire suite but will only - // generated a warning. If this flag is set to true, RECOMMENDED tests will - // be treated the same way as REQUIRED tests and failing a RECOMMENDED test - // case will cause the entire test suite to fail as well. An implementation - // can enable this if it wants to be strictly conforming to protobuf spec. - // See the comments about ConformanceLevel below to learn more about the - // difference between REQUIRED and RECOMMENDED test cases. - void SetEnforceRecommended(bool value) { - enforce_recommended_ = value; - } - - // Gets the flag name to the failure list file. - // By default, this would return --failure_list - string GetFailureListFlagName() { - return failure_list_flag_name_; - } - - void SetFailureListFlagName(const std::string& failure_list_flag_name) { - failure_list_flag_name_ = failure_list_flag_name; - } - - // Run all the conformance tests against the given test runner. - // Test output will be stored in "output". - // - // Returns true if the set of failing tests was exactly the same as the - // failure list. - // The filename here is *only* used to create/format useful error messages for - // how to update the failure list. We do NOT read this file at all. - bool RunSuite(ConformanceTestRunner* runner, std::string* output, - const std::string& filename, - conformance::FailureSet* failure_list); - - protected: - // Test cases are classified into a few categories: - // REQUIRED: the test case must be passed for an implementation to be - // interoperable with other implementations. For example, a - // parser implementaiton must accept both packed and unpacked - // form of repeated primitive fields. - // RECOMMENDED: the test case is not required for the implementation to - // be interoperable with other implementations, but is - // recommended for best performance and compatibility. For - // example, a proto3 serializer should serialize repeated - // primitive fields in packed form, but an implementation - // failing to do so will still be able to communicate with - // other implementations. - enum ConformanceLevel { - REQUIRED = 0, - RECOMMENDED = 1, - }; - - class ConformanceRequestSetting { - public: - ConformanceRequestSetting( - ConformanceLevel level, - conformance::WireFormat input_format, - conformance::WireFormat output_format, - conformance::TestCategory test_category, - const Message& prototype_message, - const string& test_name, const string& input); - virtual ~ConformanceRequestSetting() {} - - Message* GetTestMessage() const; - - string GetTestName() const; - - const conformance::ConformanceRequest& GetRequest() const { - return request_; - } - - const ConformanceLevel GetLevel() const { - return level_; - } - - string ConformanceLevelToString(ConformanceLevel level) const; - - void SetPrintUnknownFields(bool print_unknown_fields) { - request_.set_print_unknown_fields(true); - } - - void SetPrototypeMessageForCompare(const Message& message) { - prototype_message_for_compare_.reset(message.New()); - } - - protected: - virtual string InputFormatString(conformance::WireFormat format) const; - virtual string OutputFormatString(conformance::WireFormat format) const; - conformance::ConformanceRequest request_; - - private: - ConformanceLevel level_; - ::conformance::WireFormat input_format_; - ::conformance::WireFormat output_format_; - const Message& prototype_message_; - std::unique_ptr prototype_message_for_compare_; - string test_name_; - }; - - bool CheckSetEmpty(const std::set& set_to_check, - const std::string& write_to_file, const std::string& msg); - string WireFormatToString(conformance::WireFormat wire_format); - - // Parse payload in the response to the given message. Returns true on - // success. - virtual bool ParseResponse( - const conformance::ConformanceResponse& response, - const ConformanceRequestSetting& setting, - Message* test_message) = 0; - - void VerifyResponse( - const ConformanceRequestSetting& setting, - const string& equivalent_wire_format, - const conformance::ConformanceResponse& response, - bool need_report_success); - - void ReportSuccess(const std::string& test_name); - void ReportFailure(const string& test_name, - ConformanceLevel level, - 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 RunValidInputTest(const ConformanceRequestSetting& setting, - const string& equivalent_text_format); - void RunValidBinaryInputTest(const ConformanceRequestSetting& setting, - const string& equivalent_wire_format); - - void RunTest(const std::string& test_name, - const conformance::ConformanceRequest& request, - conformance::ConformanceResponse* response); - - void AddExpectedFailedTest(const std::string& test_name); - - virtual void RunSuiteImpl() = 0; - - ConformanceTestRunner* runner_; - int successes_; - int expected_failures_; - bool verbose_; - bool enforce_recommended_; - std::string output_; - std::string failure_list_flag_name_; - std::string failure_list_filename_; - - // The set of test names that are expected to fail in this run, but haven't - // failed yet. - std::set expected_to_fail_; - - // The set of test names that have been run. Used to ensure that there are no - // duplicate names in the suite. - std::set test_names_; - - // The set of tests that failed, but weren't expected to. - std::set unexpected_failing_tests_; - - // The set of tests that succeeded, but weren't expected to. - std::set unexpected_succeeding_tests_; - - // The set of tests that the testee opted out of; - std::set skipped_; -}; - -} // namespace protobuf -} // namespace google - -#endif // CONFORMANCE_CONFORMANCE_TEST_H diff --git a/lib/protobuf/conformance/conformance_test_main.cc b/lib/protobuf/conformance/conformance_test_main.cc deleted file mode 100644 index c7ac9fc..0000000 --- a/lib/protobuf/conformance/conformance_test_main.cc +++ /dev/null @@ -1,40 +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. - -#include "binary_json_conformance_suite.h" -#include "conformance_test.h" -#include "text_format_conformance_suite.h" - -int main(int argc, char *argv[]) { - google::protobuf::BinaryAndJsonConformanceSuite binary_and_json_suite; - google::protobuf::TextFormatConformanceTestSuite text_format_suite; - return google::protobuf::ForkPipeRunner::Run( - argc, argv, {&binary_and_json_suite, &text_format_suite}); -} diff --git a/lib/protobuf/conformance/conformance_test_runner.cc b/lib/protobuf/conformance/conformance_test_runner.cc deleted file mode 100644 index e7aa0a5..0000000 --- a/lib/protobuf/conformance/conformance_test_runner.cc +++ /dev/null @@ -1,343 +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. - -// This file contains a program for running the test suite in a separate -// process. The other alternative is to run the suite in-process. See -// conformance.proto for pros/cons of these two options. -// -// This program will fork the process under test and communicate with it over -// its stdin/stdout: -// -// +--------+ pipe +----------+ -// | tester | <------> | testee | -// | | | | -// | C++ | | any lang | -// +--------+ +----------+ -// -// The tester contains all of the test cases and their expected output. -// The testee is a simple program written in the target language that reads -// each test case and attempts to produce acceptable output for it. -// -// Every test consists of a ConformanceRequest/ConformanceResponse -// request/reply pair. The protocol on the pipe is simply: -// -// 1. tester sends 4-byte length N (little endian) -// 2. tester sends N bytes representing a ConformanceRequest proto -// 3. testee sends 4-byte length M (little endian) -// 4. testee sends M bytes representing a ConformanceResponse proto - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "conformance.pb.h" -#include "conformance_test.h" - -using conformance::ConformanceResponse; -using google::protobuf::StringAppendF; -using google::protobuf::ConformanceTestSuite; -using std::string; -using std::vector; - -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) -#define CHECK_SYSCALL(call) \ - if (call < 0) { \ - perror(#call " " __FILE__ ":" TOSTRING(__LINE__)); \ - exit(1); \ - } - -namespace google { -namespace protobuf { - -void ParseFailureList(const char *filename, - conformance::FailureSet *failure_list) { - std::ifstream infile(filename); - - if (!infile.is_open()) { - fprintf(stderr, "Couldn't open failure list file: %s\n", filename); - exit(1); - } - - for (string line; getline(infile, line);) { - // Remove whitespace. - line.erase(std::remove_if(line.begin(), line.end(), ::isspace), - line.end()); - - // Remove comments. - line = line.substr(0, line.find("#")); - - if (!line.empty()) { - failure_list->add_failure(line); - } - } -} - -void UsageError() { - fprintf(stderr, - "Usage: conformance-test-runner [options] \n"); - fprintf(stderr, "\n"); - fprintf(stderr, "Options:\n"); - fprintf(stderr, - " --failure_list Use to specify list of tests\n"); - fprintf(stderr, - " that are expected to fail. File\n"); - fprintf(stderr, - " should contain one test name per\n"); - fprintf(stderr, - " line. Use '#' for comments.\n"); - fprintf(stderr, - " --text_format_failure_list Use to specify list \n"); - fprintf(stderr, - " of tests that are expected to \n"); - fprintf(stderr, - " fail in the \n"); - fprintf(stderr, - " text_format_conformance_suite. \n"); - fprintf(stderr, - " File should contain one test name \n"); - fprintf(stderr, - " per line. Use '#' for comments.\n"); - - fprintf(stderr, - " --enforce_recommended Enforce that recommended test\n"); - fprintf(stderr, - " cases are also passing. Specify\n"); - fprintf(stderr, - " this flag if you want to be\n"); - fprintf(stderr, - " strictly conforming to protobuf\n"); - fprintf(stderr, - " spec.\n"); - exit(1); -} - -void ForkPipeRunner::RunTest( - const std::string& test_name, - const std::string& request, - std::string* response) { - if (child_pid_ < 0) { - SpawnTestProgram(); - } - - current_test_name_ = test_name; - - uint32_t len = request.size(); - CheckedWrite(write_fd_, &len, sizeof(uint32_t)); - CheckedWrite(write_fd_, request.c_str(), request.size()); - - if (!TryRead(read_fd_, &len, sizeof(uint32_t))) { - // We failed to read from the child, assume a crash and try to reap. - GOOGLE_LOG(INFO) << "Trying to reap child, pid=" << child_pid_; - - int status; - waitpid(child_pid_, &status, WEXITED); - - string error_msg; - if (WIFEXITED(status)) { - StringAppendF(&error_msg, - "child exited, status=%d", WEXITSTATUS(status)); - } else if (WIFSIGNALED(status)) { - StringAppendF(&error_msg, - "child killed by signal %d", WTERMSIG(status)); - } - GOOGLE_LOG(INFO) << error_msg; - child_pid_ = -1; - - conformance::ConformanceResponse response_obj; - response_obj.set_runtime_error(error_msg); - response_obj.SerializeToString(response); - return; - } - - response->resize(len); - CheckedRead(read_fd_, (void*)response->c_str(), len); -} - -int ForkPipeRunner::Run( - int argc, char *argv[], const std::vector& suites) { - if (suites.empty()) { - fprintf(stderr, "No test suites found.\n"); - return EXIT_FAILURE; - } - bool all_ok = true; - for (ConformanceTestSuite* suite : suites) { - char *program; - string failure_list_filename; - conformance::FailureSet failure_list; - - for (int arg = 1; arg < argc; ++arg) { - if (strcmp(argv[arg], suite->GetFailureListFlagName().c_str()) == 0) { - if (++arg == argc) UsageError(); - failure_list_filename = argv[arg]; - ParseFailureList(argv[arg], &failure_list); - } else if (strcmp(argv[arg], "--verbose") == 0) { - suite->SetVerbose(true); - } else if (strcmp(argv[arg], "--enforce_recommended") == 0) { - suite->SetEnforceRecommended(true); - } else if (argv[arg][0] == '-') { - bool recognized_flag = false; - for (ConformanceTestSuite* suite : suites) { - if (strcmp(argv[arg], suite->GetFailureListFlagName().c_str()) == 0) { - if (++arg == argc) UsageError(); - recognized_flag = true; - } - } - if (!recognized_flag) { - fprintf(stderr, "Unknown option: %s\n", argv[arg]); - UsageError(); - } - } else { - if (arg != argc - 1) { - fprintf(stderr, "Too many arguments.\n"); - UsageError(); - } - program = argv[arg]; - } - } - - ForkPipeRunner runner(program); - - std::string output; - all_ok = all_ok && - suite->RunSuite(&runner, &output, failure_list_filename, &failure_list); - - fwrite(output.c_str(), 1, output.size(), stderr); - } - return all_ok ? EXIT_SUCCESS : EXIT_FAILURE; -} - -// TODO(haberman): make this work on Windows, instead of using these -// UNIX-specific APIs. -// -// There is a platform-agnostic API in -// src/google/protobuf/compiler/subprocess.h -// -// However that API only supports sending a single message to the subprocess. -// We really want to be able to send messages and receive responses one at a -// time: -// -// 1. Spawning a new process for each test would take way too long for thousands -// of tests and subprocesses like java that can take 100ms or more to start -// up. -// -// 2. Sending all the tests in one big message and receiving all results in one -// big message would take away our visibility about which test(s) caused a -// crash or other fatal error. It would also give us only a single failure -// instead of all of them. -void ForkPipeRunner::SpawnTestProgram() { - int toproc_pipe_fd[2]; - int fromproc_pipe_fd[2]; - if (pipe(toproc_pipe_fd) < 0 || pipe(fromproc_pipe_fd) < 0) { - perror("pipe"); - exit(1); - } - - pid_t pid = fork(); - if (pid < 0) { - perror("fork"); - exit(1); - } - - if (pid) { - // Parent. - CHECK_SYSCALL(close(toproc_pipe_fd[0])); - CHECK_SYSCALL(close(fromproc_pipe_fd[1])); - write_fd_ = toproc_pipe_fd[1]; - read_fd_ = fromproc_pipe_fd[0]; - child_pid_ = pid; - } else { - // Child. - CHECK_SYSCALL(close(STDIN_FILENO)); - CHECK_SYSCALL(close(STDOUT_FILENO)); - CHECK_SYSCALL(dup2(toproc_pipe_fd[0], STDIN_FILENO)); - CHECK_SYSCALL(dup2(fromproc_pipe_fd[1], STDOUT_FILENO)); - - CHECK_SYSCALL(close(toproc_pipe_fd[0])); - CHECK_SYSCALL(close(fromproc_pipe_fd[1])); - CHECK_SYSCALL(close(toproc_pipe_fd[1])); - CHECK_SYSCALL(close(fromproc_pipe_fd[0])); - - std::unique_ptr executable(new char[executable_.size() + 1]); - memcpy(executable.get(), executable_.c_str(), executable_.size()); - executable[executable_.size()] = '\0'; - - char *const argv[] = {executable.get(), NULL}; - CHECK_SYSCALL(execv(executable.get(), argv)); // Never returns. - } -} - -void ForkPipeRunner::CheckedWrite(int fd, const void *buf, size_t len) { - if (write(fd, buf, len) != len) { - GOOGLE_LOG(FATAL) << current_test_name_ - << ": error writing to test program: " - << strerror(errno); - } -} - -bool ForkPipeRunner::TryRead(int fd, void *buf, size_t len) { - size_t ofs = 0; - while (len > 0) { - ssize_t bytes_read = read(fd, (char*)buf + ofs, len); - - if (bytes_read == 0) { - GOOGLE_LOG(ERROR) << current_test_name_ - << ": unexpected EOF from test program"; - return false; - } else if (bytes_read < 0) { - GOOGLE_LOG(ERROR) << current_test_name_ - << ": error reading from test program: " - << strerror(errno); - return false; - } - - len -= bytes_read; - ofs += bytes_read; - } - - return true; -} - -void ForkPipeRunner::CheckedRead(int fd, void *buf, size_t len) { - if (!TryRead(fd, buf, len)) { - GOOGLE_LOG(FATAL) << current_test_name_ - << ": error reading from test program: " - << strerror(errno); - } -} - -} // namespace protobuf -} // namespace google diff --git a/lib/protobuf/conformance/failure_list_cpp.txt b/lib/protobuf/conformance/failure_list_cpp.txt deleted file mode 100644 index 0c01e1e..0000000 --- a/lib/protobuf/conformance/failure_list_cpp.txt +++ /dev/null @@ -1,36 +0,0 @@ -# This is the list of conformance tests that are known to fail for the C++ -# implementation right now. These should be fixed. -# -# By listing them here we can keep tabs on which ones are failing and be sure -# that we don't introduce regressions in other tests. -# -# TODO(haberman): insert links to corresponding bugs tracking the issue. -# Should we use GitHub issues or the Google-internal bug tracker? - -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BoolFieldDoubleQuotedFalse -Recommended.Proto3.JsonInput.BoolFieldDoubleQuotedTrue -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Recommended.Proto3.JsonInput.FieldNameDuplicate -Recommended.Proto3.JsonInput.FieldNameDuplicateDifferentCasing1 -Recommended.Proto3.JsonInput.FieldNameDuplicateDifferentCasing2 -Recommended.Proto3.JsonInput.FieldNameNotQuoted -Recommended.Proto3.JsonInput.MapFieldValueIsNull -Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull -Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull -Recommended.Proto3.JsonInput.RepeatedFieldTrailingComma -Recommended.Proto3.JsonInput.RepeatedFieldTrailingCommaWithNewlines -Recommended.Proto3.JsonInput.RepeatedFieldTrailingCommaWithSpace -Recommended.Proto3.JsonInput.RepeatedFieldTrailingCommaWithSpaceCommaSpace -Recommended.Proto3.JsonInput.StringFieldSingleQuoteBoth -Recommended.Proto3.JsonInput.StringFieldSingleQuoteKey -Recommended.Proto3.JsonInput.StringFieldSingleQuoteValue -Recommended.Proto3.JsonInput.StringFieldUppercaseEscapeLetter -Recommended.Proto3.JsonInput.TrailingCommaInAnObject -Recommended.Proto3.JsonInput.TrailingCommaInAnObjectWithNewlines -Recommended.Proto3.JsonInput.TrailingCommaInAnObjectWithSpace -Recommended.Proto3.JsonInput.TrailingCommaInAnObjectWithSpaceCommaSpace diff --git a/lib/protobuf/conformance/failure_list_csharp.txt b/lib/protobuf/conformance/failure_list_csharp.txt deleted file mode 100644 index 2a20aa7..0000000 --- a/lib/protobuf/conformance/failure_list_csharp.txt +++ /dev/null @@ -1,2 +0,0 @@ -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput diff --git a/lib/protobuf/conformance/failure_list_java.txt b/lib/protobuf/conformance/failure_list_java.txt deleted file mode 100644 index dc1f9ba..0000000 --- a/lib/protobuf/conformance/failure_list_java.txt +++ /dev/null @@ -1,47 +0,0 @@ -# This is the list of conformance tests that are known to fail for the Java -# implementation right now. These should be fixed. -# -# By listing them here we can keep tabs on which ones are failing and be sure -# that we don't introduce regressions in other tests. - -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BoolFieldAllCapitalFalse -Recommended.Proto3.JsonInput.BoolFieldAllCapitalTrue -Recommended.Proto3.JsonInput.BoolFieldCamelCaseFalse -Recommended.Proto3.JsonInput.BoolFieldCamelCaseTrue -Recommended.Proto3.JsonInput.BoolFieldDoubleQuotedFalse -Recommended.Proto3.JsonInput.BoolFieldDoubleQuotedTrue -Recommended.Proto3.JsonInput.BoolMapFieldKeyNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNanNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNegativeInfinityNotQuoted -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Recommended.Proto3.JsonInput.FieldNameDuplicate -Recommended.Proto3.JsonInput.FieldNameNotQuoted -Recommended.Proto3.JsonInput.FloatFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNanNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNegativeInfinityNotQuoted -Recommended.Proto3.JsonInput.Int32MapFieldKeyNotQuoted -Recommended.Proto3.JsonInput.Int64MapFieldKeyNotQuoted -Recommended.Proto3.JsonInput.JsonWithComments -Recommended.Proto3.JsonInput.StringFieldSingleQuoteBoth -Recommended.Proto3.JsonInput.StringFieldSingleQuoteKey -Recommended.Proto3.JsonInput.StringFieldSingleQuoteValue -Recommended.Proto3.JsonInput.StringFieldSurrogateInWrongOrder -Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate -Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate -Recommended.Proto3.JsonInput.Uint32MapFieldKeyNotQuoted -Recommended.Proto3.JsonInput.Uint64MapFieldKeyNotQuoted -Required.Proto3.JsonInput.EnumFieldNotQuoted -Required.Proto3.JsonInput.Int32FieldLeadingZero -Required.Proto3.JsonInput.Int32FieldNegativeWithLeadingZero -Required.Proto3.JsonInput.Int32FieldPlusSign -Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingStringsGotBool -Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingStringsGotInt -Required.Proto3.JsonInput.StringFieldNotAString -Required.Proto3.ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE -Required.Proto3.ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE -Required.Proto2.ProtobufInput.PrematureEofInDelimitedDataForKnownNonRepeatedValue.MESSAGE -Required.Proto2.ProtobufInput.PrematureEofInDelimitedDataForKnownRepeatedValue.MESSAGE diff --git a/lib/protobuf/conformance/failure_list_js.txt b/lib/protobuf/conformance/failure_list_js.txt deleted file mode 100644 index f8f6a57..0000000 --- a/lib/protobuf/conformance/failure_list_js.txt +++ /dev/null @@ -1,13 +0,0 @@ -Required.Proto3.ProtobufInput.ValidDataRepeated.BOOL.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.DOUBLE.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FIXED32.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FIXED64.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FLOAT.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.INT32.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.INT64.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.SFIXED32.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.SFIXED64.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.SINT32.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.SINT64.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.UINT32.ProtobufOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.UINT64.ProtobufOutput diff --git a/lib/protobuf/conformance/failure_list_objc.txt b/lib/protobuf/conformance/failure_list_objc.txt deleted file mode 100644 index e34501e..0000000 --- a/lib/protobuf/conformance/failure_list_objc.txt +++ /dev/null @@ -1,2 +0,0 @@ -# JSON input or output tests are skipped (in conformance_objc.m) as mobile -# platforms don't support JSON wire format to avoid code bloat. diff --git a/lib/protobuf/conformance/failure_list_php.txt b/lib/protobuf/conformance/failure_list_php.txt deleted file mode 100644 index 28ca461..0000000 --- a/lib/protobuf/conformance/failure_list_php.txt +++ /dev/null @@ -1,20 +0,0 @@ -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Required.Proto3.JsonInput.FloatFieldTooLarge -Required.Proto3.JsonInput.FloatFieldTooSmall -Required.Proto3.JsonInput.DoubleFieldTooSmall -Required.Proto3.JsonInput.Int32FieldNotInteger -Required.Proto3.JsonInput.Int64FieldNotInteger -Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingStringsGotInt -Required.Proto3.JsonInput.RepeatedListValue.JsonOutput -Required.Proto3.JsonInput.RepeatedListValue.ProtobufOutput -Required.Proto3.JsonInput.StringFieldNotAString -Required.Proto3.JsonInput.Uint32FieldNotInteger -Required.Proto3.JsonInput.Uint64FieldNotInteger -Required.Proto3.JsonInput.Int32FieldLeadingSpace -Required.Proto3.JsonInput.OneofFieldDuplicate -Required.Proto3.ProtobufInput.ValidDataRepeated.FLOAT.JsonOutput diff --git a/lib/protobuf/conformance/failure_list_php_c.txt b/lib/protobuf/conformance/failure_list_php_c.txt deleted file mode 100644 index 8f7af61..0000000 --- a/lib/protobuf/conformance/failure_list_php_c.txt +++ /dev/null @@ -1,44 +0,0 @@ -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Recommended.Proto3.JsonInput.MapFieldValueIsNull -Recommended.Proto3.JsonInput.OneofZeroBytes.JsonOutput -Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull -Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull -Recommended.Proto3.JsonInput.StringEndsWithEscapeChar -Recommended.Proto3.JsonInput.StringFieldSurrogateInWrongOrder -Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate -Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate -Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator -Recommended.Proto3.ProtobufInput.OneofZeroBytes.JsonOutput -Required.DurationProtoInputTooLarge.JsonOutput -Required.DurationProtoInputTooSmall.JsonOutput -Required.TimestampProtoInputTooLarge.JsonOutput -Required.TimestampProtoInputTooSmall.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldNan.JsonOutput -Required.Proto3.JsonInput.DurationMinValue.JsonOutput -Required.Proto3.JsonInput.DurationRepeatedValue.JsonOutput -Required.Proto3.JsonInput.FloatFieldInfinity.JsonOutput -Required.Proto3.JsonInput.FloatFieldNan.JsonOutput -Required.Proto3.JsonInput.FloatFieldNegativeInfinity.JsonOutput -Required.Proto3.JsonInput.OneofFieldDuplicate -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.JsonOutput -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.ProtobufOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.JsonOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.ProtobufOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FLOAT.JsonOutput -Required.Proto3.JsonInput.RejectTopLevelNull diff --git a/lib/protobuf/conformance/failure_list_php_zts_c.txt b/lib/protobuf/conformance/failure_list_php_zts_c.txt deleted file mode 100644 index d9a8fe3..0000000 --- a/lib/protobuf/conformance/failure_list_php_zts_c.txt +++ /dev/null @@ -1,225 +0,0 @@ -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.JsonInput.BoolFieldIntegerOne -Recommended.JsonInput.BoolFieldIntegerZero -Recommended.JsonInput.DurationHas3FractionalDigits.Validator -Recommended.JsonInput.DurationHas6FractionalDigits.Validator -Recommended.JsonInput.DurationHas9FractionalDigits.Validator -Recommended.JsonInput.DurationHasZeroFractionalDigit.Validator -Recommended.JsonInput.Int64FieldBeString.Validator -Recommended.JsonInput.OneofZeroBytes.JsonOutput -Recommended.JsonInput.OneofZeroBytes.ProtobufOutput -Recommended.JsonInput.OneofZeroDouble.JsonOutput -Recommended.JsonInput.OneofZeroDouble.ProtobufOutput -Recommended.JsonInput.OneofZeroFloat.JsonOutput -Recommended.JsonInput.OneofZeroFloat.ProtobufOutput -Recommended.JsonInput.OneofZeroString.JsonOutput -Recommended.JsonInput.OneofZeroString.ProtobufOutput -Recommended.JsonInput.OneofZeroUint32.JsonOutput -Recommended.JsonInput.OneofZeroUint32.ProtobufOutput -Recommended.JsonInput.OneofZeroUint64.JsonOutput -Recommended.JsonInput.OneofZeroUint64.ProtobufOutput -Recommended.JsonInput.StringEndsWithEscapeChar -Recommended.JsonInput.StringFieldSurrogateInWrongOrder -Recommended.JsonInput.StringFieldUnpairedHighSurrogate -Recommended.JsonInput.StringFieldUnpairedLowSurrogate -Recommended.JsonInput.TimestampHas3FractionalDigits.Validator -Recommended.JsonInput.TimestampHas6FractionalDigits.Validator -Recommended.JsonInput.TimestampHas9FractionalDigits.Validator -Recommended.JsonInput.TimestampHasZeroFractionalDigit.Validator -Recommended.JsonInput.TimestampZeroNormalized.Validator -Recommended.JsonInput.Uint64FieldBeString.Validator -Recommended.ProtobufInput.OneofZeroBytes.JsonOutput -Recommended.ProtobufInput.OneofZeroBytes.ProtobufOutput -Recommended.ProtobufInput.OneofZeroString.JsonOutput -Recommended.ProtobufInput.OneofZeroString.ProtobufOutput -Required.DurationProtoInputTooLarge.JsonOutput -Required.DurationProtoInputTooSmall.JsonOutput -Required.JsonInput.AllFieldAcceptNull.ProtobufOutput -Required.JsonInput.Any.JsonOutput -Required.JsonInput.Any.ProtobufOutput -Required.JsonInput.AnyNested.JsonOutput -Required.JsonInput.AnyNested.ProtobufOutput -Required.JsonInput.AnyUnorderedTypeTag.JsonOutput -Required.JsonInput.AnyUnorderedTypeTag.ProtobufOutput -Required.JsonInput.AnyWithDuration.JsonOutput -Required.JsonInput.AnyWithDuration.ProtobufOutput -Required.JsonInput.AnyWithFieldMask.JsonOutput -Required.JsonInput.AnyWithFieldMask.ProtobufOutput -Required.JsonInput.AnyWithInt32ValueWrapper.JsonOutput -Required.JsonInput.AnyWithInt32ValueWrapper.ProtobufOutput -Required.JsonInput.AnyWithStruct.JsonOutput -Required.JsonInput.AnyWithStruct.ProtobufOutput -Required.JsonInput.AnyWithTimestamp.JsonOutput -Required.JsonInput.AnyWithTimestamp.ProtobufOutput -Required.JsonInput.AnyWithValueForInteger.JsonOutput -Required.JsonInput.AnyWithValueForInteger.ProtobufOutput -Required.JsonInput.AnyWithValueForJsonObject.JsonOutput -Required.JsonInput.AnyWithValueForJsonObject.ProtobufOutput -Required.JsonInput.BoolFieldFalse.ProtobufOutput -Required.JsonInput.BoolMapField.JsonOutput -Required.JsonInput.DoubleFieldInfinity.JsonOutput -Required.JsonInput.DoubleFieldInfinity.ProtobufOutput -Required.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput -Required.JsonInput.DoubleFieldMaxNegativeValue.ProtobufOutput -Required.JsonInput.DoubleFieldMaxPositiveValue.JsonOutput -Required.JsonInput.DoubleFieldMaxPositiveValue.ProtobufOutput -Required.JsonInput.DoubleFieldMinNegativeValue.JsonOutput -Required.JsonInput.DoubleFieldMinNegativeValue.ProtobufOutput -Required.JsonInput.DoubleFieldMinPositiveValue.JsonOutput -Required.JsonInput.DoubleFieldMinPositiveValue.ProtobufOutput -Required.JsonInput.DoubleFieldNan.JsonOutput -Required.JsonInput.DoubleFieldNan.ProtobufOutput -Required.JsonInput.DoubleFieldNegativeInfinity.JsonOutput -Required.JsonInput.DoubleFieldNegativeInfinity.ProtobufOutput -Required.JsonInput.DoubleFieldQuotedValue.JsonOutput -Required.JsonInput.DoubleFieldQuotedValue.ProtobufOutput -Required.JsonInput.DurationMaxValue.JsonOutput -Required.JsonInput.DurationMaxValue.ProtobufOutput -Required.JsonInput.DurationMinValue.JsonOutput -Required.JsonInput.DurationMinValue.ProtobufOutput -Required.JsonInput.DurationRepeatedValue.JsonOutput -Required.JsonInput.DurationRepeatedValue.ProtobufOutput -Required.JsonInput.EnumField.ProtobufOutput -Required.JsonInput.EnumFieldNumericValueNonZero.JsonOutput -Required.JsonInput.EnumFieldNumericValueNonZero.ProtobufOutput -Required.JsonInput.EnumFieldNumericValueZero.JsonOutput -Required.JsonInput.EnumFieldNumericValueZero.ProtobufOutput -Required.JsonInput.EnumFieldUnknownValue.Validator -Required.JsonInput.FieldMask.JsonOutput -Required.JsonInput.FieldMask.ProtobufOutput -Required.JsonInput.FloatFieldInfinity.JsonOutput -Required.JsonInput.FloatFieldInfinity.ProtobufOutput -Required.JsonInput.FloatFieldNan.JsonOutput -Required.JsonInput.FloatFieldNan.ProtobufOutput -Required.JsonInput.FloatFieldNegativeInfinity.JsonOutput -Required.JsonInput.FloatFieldNegativeInfinity.ProtobufOutput -Required.JsonInput.FloatFieldQuotedValue.JsonOutput -Required.JsonInput.FloatFieldQuotedValue.ProtobufOutput -Required.JsonInput.FloatFieldTooLarge -Required.JsonInput.FloatFieldTooSmall -Required.JsonInput.Int32FieldExponentialFormat.JsonOutput -Required.JsonInput.Int32FieldExponentialFormat.ProtobufOutput -Required.JsonInput.Int32FieldFloatTrailingZero.JsonOutput -Required.JsonInput.Int32FieldFloatTrailingZero.ProtobufOutput -Required.JsonInput.Int32FieldMaxFloatValue.JsonOutput -Required.JsonInput.Int32FieldMaxFloatValue.ProtobufOutput -Required.JsonInput.Int32FieldMinFloatValue.JsonOutput -Required.JsonInput.Int32FieldMinFloatValue.ProtobufOutput -Required.JsonInput.Int32FieldStringValue.JsonOutput -Required.JsonInput.Int32FieldStringValue.ProtobufOutput -Required.JsonInput.Int32FieldStringValueEscaped.JsonOutput -Required.JsonInput.Int32FieldStringValueEscaped.ProtobufOutput -Required.JsonInput.Int32MapEscapedKey.JsonOutput -Required.JsonInput.Int32MapEscapedKey.ProtobufOutput -Required.JsonInput.Int32MapField.JsonOutput -Required.JsonInput.Int32MapField.ProtobufOutput -Required.JsonInput.Int64FieldMaxValue.JsonOutput -Required.JsonInput.Int64FieldMaxValue.ProtobufOutput -Required.JsonInput.Int64FieldMinValue.JsonOutput -Required.JsonInput.Int64FieldMinValue.ProtobufOutput -Required.JsonInput.Int64MapEscapedKey.JsonOutput -Required.JsonInput.Int64MapEscapedKey.ProtobufOutput -Required.JsonInput.Int64MapField.JsonOutput -Required.JsonInput.Int64MapField.ProtobufOutput -Required.JsonInput.MessageField.JsonOutput -Required.JsonInput.MessageField.ProtobufOutput -Required.JsonInput.MessageMapField.JsonOutput -Required.JsonInput.MessageMapField.ProtobufOutput -Required.JsonInput.MessageRepeatedField.JsonOutput -Required.JsonInput.MessageRepeatedField.ProtobufOutput -Required.JsonInput.OptionalBoolWrapper.JsonOutput -Required.JsonInput.OptionalBoolWrapper.ProtobufOutput -Required.JsonInput.OptionalBytesWrapper.JsonOutput -Required.JsonInput.OptionalBytesWrapper.ProtobufOutput -Required.JsonInput.OptionalDoubleWrapper.JsonOutput -Required.JsonInput.OptionalDoubleWrapper.ProtobufOutput -Required.JsonInput.OptionalFloatWrapper.JsonOutput -Required.JsonInput.OptionalFloatWrapper.ProtobufOutput -Required.JsonInput.OptionalInt32Wrapper.JsonOutput -Required.JsonInput.OptionalInt32Wrapper.ProtobufOutput -Required.JsonInput.OptionalInt64Wrapper.JsonOutput -Required.JsonInput.OptionalInt64Wrapper.ProtobufOutput -Required.JsonInput.OptionalStringWrapper.JsonOutput -Required.JsonInput.OptionalStringWrapper.ProtobufOutput -Required.JsonInput.OptionalUint32Wrapper.JsonOutput -Required.JsonInput.OptionalUint32Wrapper.ProtobufOutput -Required.JsonInput.OptionalUint64Wrapper.JsonOutput -Required.JsonInput.OptionalUint64Wrapper.ProtobufOutput -Required.JsonInput.OptionalWrapperTypesWithNonDefaultValue.JsonOutput -Required.JsonInput.OptionalWrapperTypesWithNonDefaultValue.ProtobufOutput -Required.JsonInput.PrimitiveRepeatedField.JsonOutput -Required.JsonInput.PrimitiveRepeatedField.ProtobufOutput -Required.JsonInput.RepeatedBoolWrapper.JsonOutput -Required.JsonInput.RepeatedBoolWrapper.ProtobufOutput -Required.JsonInput.RepeatedBytesWrapper.JsonOutput -Required.JsonInput.RepeatedBytesWrapper.ProtobufOutput -Required.JsonInput.RepeatedDoubleWrapper.JsonOutput -Required.JsonInput.RepeatedDoubleWrapper.ProtobufOutput -Required.JsonInput.RepeatedFieldWrongElementTypeExpectingStringsGotInt -Required.JsonInput.RepeatedFloatWrapper.JsonOutput -Required.JsonInput.RepeatedFloatWrapper.ProtobufOutput -Required.JsonInput.RepeatedInt32Wrapper.JsonOutput -Required.JsonInput.RepeatedInt32Wrapper.ProtobufOutput -Required.JsonInput.RepeatedInt64Wrapper.JsonOutput -Required.JsonInput.RepeatedInt64Wrapper.ProtobufOutput -Required.JsonInput.RepeatedStringWrapper.JsonOutput -Required.JsonInput.RepeatedStringWrapper.ProtobufOutput -Required.JsonInput.RepeatedUint32Wrapper.JsonOutput -Required.JsonInput.RepeatedUint32Wrapper.ProtobufOutput -Required.JsonInput.RepeatedUint64Wrapper.JsonOutput -Required.JsonInput.RepeatedUint64Wrapper.ProtobufOutput -Required.JsonInput.StringFieldEscape.JsonOutput -Required.JsonInput.StringFieldEscape.ProtobufOutput -Required.JsonInput.StringFieldNotAString -Required.JsonInput.StringFieldSurrogatePair.JsonOutput -Required.JsonInput.StringFieldSurrogatePair.ProtobufOutput -Required.JsonInput.StringFieldUnicodeEscape.JsonOutput -Required.JsonInput.StringFieldUnicodeEscape.ProtobufOutput -Required.JsonInput.StringFieldUnicodeEscapeWithLowercaseHexLetters.JsonOutput -Required.JsonInput.StringFieldUnicodeEscapeWithLowercaseHexLetters.ProtobufOutput -Required.JsonInput.Struct.JsonOutput -Required.JsonInput.Struct.ProtobufOutput -Required.JsonInput.TimestampMaxValue.JsonOutput -Required.JsonInput.TimestampMaxValue.ProtobufOutput -Required.JsonInput.TimestampMinValue.JsonOutput -Required.JsonInput.TimestampMinValue.ProtobufOutput -Required.JsonInput.TimestampRepeatedValue.JsonOutput -Required.JsonInput.TimestampRepeatedValue.ProtobufOutput -Required.JsonInput.TimestampWithNegativeOffset.JsonOutput -Required.JsonInput.TimestampWithNegativeOffset.ProtobufOutput -Required.JsonInput.TimestampWithPositiveOffset.JsonOutput -Required.JsonInput.TimestampWithPositiveOffset.ProtobufOutput -Required.JsonInput.Uint32FieldMaxFloatValue.JsonOutput -Required.JsonInput.Uint32FieldMaxFloatValue.ProtobufOutput -Required.JsonInput.Uint32MapField.JsonOutput -Required.JsonInput.Uint32MapField.ProtobufOutput -Required.JsonInput.Uint64FieldMaxValue.JsonOutput -Required.JsonInput.Uint64FieldMaxValue.ProtobufOutput -Required.JsonInput.Uint64MapField.JsonOutput -Required.JsonInput.Uint64MapField.ProtobufOutput -Required.JsonInput.ValueAcceptBool.JsonOutput -Required.JsonInput.ValueAcceptBool.ProtobufOutput -Required.JsonInput.ValueAcceptFloat.JsonOutput -Required.JsonInput.ValueAcceptFloat.ProtobufOutput -Required.JsonInput.ValueAcceptInteger.JsonOutput -Required.JsonInput.ValueAcceptInteger.ProtobufOutput -Required.JsonInput.ValueAcceptList.JsonOutput -Required.JsonInput.ValueAcceptList.ProtobufOutput -Required.JsonInput.ValueAcceptNull.JsonOutput -Required.JsonInput.ValueAcceptNull.ProtobufOutput -Required.JsonInput.ValueAcceptObject.JsonOutput -Required.JsonInput.ValueAcceptObject.ProtobufOutput -Required.JsonInput.ValueAcceptString.JsonOutput -Required.JsonInput.ValueAcceptString.ProtobufOutput -Required.JsonInput.WrapperTypesWithNullValue.ProtobufOutput -Required.ProtobufInput.DoubleFieldNormalizeQuietNan.JsonOutput -Required.ProtobufInput.DoubleFieldNormalizeSignalingNan.JsonOutput -Required.ProtobufInput.FloatFieldNormalizeQuietNan.JsonOutput -Required.ProtobufInput.FloatFieldNormalizeSignalingNan.JsonOutput -Required.ProtobufInput.RepeatedScalarSelectsLast.FIXED32.ProtobufOutput -Required.ProtobufInput.RepeatedScalarSelectsLast.FIXED64.ProtobufOutput -Required.ProtobufInput.RepeatedScalarSelectsLast.UINT64.ProtobufOutput -Required.TimestampProtoInputTooLarge.JsonOutput -Required.TimestampProtoInputTooSmall.JsonOutput diff --git a/lib/protobuf/conformance/failure_list_python-post26.txt b/lib/protobuf/conformance/failure_list_python-post26.txt deleted file mode 100644 index 19d99b0..0000000 --- a/lib/protobuf/conformance/failure_list_python-post26.txt +++ /dev/null @@ -1,2 +0,0 @@ -JsonInput.StringFieldSurrogateInWrongOrder -JsonInput.StringFieldUnpairedHighSurrogate diff --git a/lib/protobuf/conformance/failure_list_python.txt b/lib/protobuf/conformance/failure_list_python.txt deleted file mode 100644 index e3ce7af..0000000 --- a/lib/protobuf/conformance/failure_list_python.txt +++ /dev/null @@ -1,21 +0,0 @@ -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.DoubleFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNanNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNegativeInfinityNotQuoted -Recommended.Proto3.JsonInput.FloatFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNanNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNegativeInfinityNotQuoted -Required.Proto3.JsonInput.DoubleFieldTooSmall -Required.Proto3.JsonInput.FloatFieldTooLarge -Required.Proto3.JsonInput.FloatFieldTooSmall -Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingIntegersGotBool -Required.Proto3.JsonInput.TimestampJsonInputLowercaseT -Required.Proto2.ProtobufInput.IllegalZeroFieldNum_Case_0 -Required.Proto2.ProtobufInput.IllegalZeroFieldNum_Case_1 -Required.Proto2.ProtobufInput.IllegalZeroFieldNum_Case_2 -Required.Proto2.ProtobufInput.IllegalZeroFieldNum_Case_3 -Required.Proto3.ProtobufInput.IllegalZeroFieldNum_Case_0 -Required.Proto3.ProtobufInput.IllegalZeroFieldNum_Case_1 -Required.Proto3.ProtobufInput.IllegalZeroFieldNum_Case_2 -Required.Proto3.ProtobufInput.IllegalZeroFieldNum_Case_3 diff --git a/lib/protobuf/conformance/failure_list_python_cpp.txt b/lib/protobuf/conformance/failure_list_python_cpp.txt deleted file mode 100644 index 59a969d..0000000 --- a/lib/protobuf/conformance/failure_list_python_cpp.txt +++ /dev/null @@ -1,22 +0,0 @@ -# This is the list of conformance tests that are known to fail for the -# Python/C++ implementation right now. These should be fixed. -# -# By listing them here we can keep tabs on which ones are failing and be sure -# that we don't introduce regressions in other tests. -# -# TODO(haberman): insert links to corresponding bugs tracking the issue. -# Should we use GitHub issues or the Google-internal bug tracker? - -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.DoubleFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNanNotQuoted -Recommended.Proto3.JsonInput.DoubleFieldNegativeInfinityNotQuoted -Recommended.Proto3.JsonInput.FloatFieldInfinityNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNanNotQuoted -Recommended.Proto3.JsonInput.FloatFieldNegativeInfinityNotQuoted -Required.Proto3.JsonInput.DoubleFieldTooSmall -Required.Proto3.JsonInput.FloatFieldTooLarge -Required.Proto3.JsonInput.FloatFieldTooSmall -Required.Proto3.JsonInput.RepeatedFieldWrongElementTypeExpectingIntegersGotBool -Required.Proto3.JsonInput.TimestampJsonInputLowercaseT diff --git a/lib/protobuf/conformance/failure_list_ruby.txt b/lib/protobuf/conformance/failure_list_ruby.txt deleted file mode 100644 index fc6455d..0000000 --- a/lib/protobuf/conformance/failure_list_ruby.txt +++ /dev/null @@ -1,66 +0,0 @@ -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Recommended.Proto3.JsonInput.MapFieldValueIsNull -Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull -Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull -Recommended.Proto3.JsonInput.StringEndsWithEscapeChar -Recommended.Proto3.JsonInput.StringFieldSurrogateInWrongOrder -Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate -Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate -Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator -Required.DurationProtoInputTooLarge.JsonOutput -Required.DurationProtoInputTooSmall.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldNan.JsonOutput -Required.Proto3.JsonInput.DurationMinValue.JsonOutput -Required.Proto3.JsonInput.DurationRepeatedValue.JsonOutput -Required.Proto3.JsonInput.FloatFieldInfinity.JsonOutput -Required.Proto3.JsonInput.FloatFieldNan.JsonOutput -Required.Proto3.JsonInput.FloatFieldNegativeInfinity.JsonOutput -Required.Proto3.JsonInput.OneofFieldDuplicate -Required.Proto3.JsonInput.OptionalBoolWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalBytesWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalDoubleWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalFloatWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalInt32Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalInt64Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalStringWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalUint32Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalUint64Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.JsonOutput -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.ProtobufOutput -Required.Proto3.JsonInput.RepeatedBoolWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedBytesWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedDoubleWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedFloatWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedInt32Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedInt64Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedStringWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedUint32Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedUint64Wrapper.JsonOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.JsonOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.ProtobufOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FLOAT.JsonOutput -Required.TimestampProtoInputTooLarge.JsonOutput -Required.TimestampProtoInputTooSmall.JsonOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonFalse.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonNull.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonNumber.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonObject.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonString.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonTrue.ProtobufOutput -Required.Proto3.JsonInput.RejectTopLevelNull diff --git a/lib/protobuf/conformance/failure_list_ruby_mac.txt b/lib/protobuf/conformance/failure_list_ruby_mac.txt deleted file mode 100644 index 153b0a2..0000000 --- a/lib/protobuf/conformance/failure_list_ruby_mac.txt +++ /dev/null @@ -1,66 +0,0 @@ -Recommended.FieldMaskNumbersDontRoundTrip.JsonOutput -Recommended.FieldMaskPathsDontRoundTrip.JsonOutput -Recommended.FieldMaskTooManyUnderscore.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.JsonOutput -Recommended.Proto3.JsonInput.BytesFieldBase64Url.ProtobufOutput -Recommended.Proto3.JsonInput.DurationHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.DurationHas6FractionalDigits.Validator -Recommended.Proto3.JsonInput.MapFieldValueIsNull -Recommended.Proto3.JsonInput.RepeatedFieldMessageElementIsNull -Recommended.Proto3.JsonInput.RepeatedFieldPrimitiveElementIsNull -Recommended.Proto3.JsonInput.StringEndsWithEscapeChar -Recommended.Proto3.JsonInput.StringFieldSurrogateInWrongOrder -Recommended.Proto3.JsonInput.StringFieldUnpairedHighSurrogate -Recommended.Proto3.JsonInput.StringFieldUnpairedLowSurrogate -Recommended.Proto3.JsonInput.TimestampHas3FractionalDigits.Validator -Recommended.Proto3.JsonInput.TimestampHas6FractionalDigits.Validator -Required.DurationProtoInputTooLarge.JsonOutput -Required.DurationProtoInputTooSmall.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMaxNegativeValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.JsonOutput -Required.Proto3.JsonInput.DoubleFieldMinPositiveValue.ProtobufOutput -Required.Proto3.JsonInput.DoubleFieldNan.JsonOutput -Required.Proto3.JsonInput.DurationMinValue.JsonOutput -Required.Proto3.JsonInput.DurationRepeatedValue.JsonOutput -Required.Proto3.JsonInput.FloatFieldInfinity.JsonOutput -Required.Proto3.JsonInput.FloatFieldNan.JsonOutput -Required.Proto3.JsonInput.FloatFieldNegativeInfinity.JsonOutput -Required.Proto3.JsonInput.OneofFieldDuplicate -Required.Proto3.JsonInput.OptionalBoolWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalBytesWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalDoubleWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalFloatWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalInt32Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalInt64Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalStringWrapper.JsonOutput -Required.Proto3.JsonInput.OptionalUint32Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalUint64Wrapper.JsonOutput -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.JsonOutput -Required.Proto3.JsonInput.OptionalWrapperTypesWithNonDefaultValue.ProtobufOutput -Required.Proto3.JsonInput.RepeatedBoolWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedBytesWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedDoubleWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedFloatWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedInt32Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedInt64Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedStringWrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedUint32Wrapper.JsonOutput -Required.Proto3.JsonInput.RepeatedUint64Wrapper.JsonOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.JsonOutput -Required.Proto3.JsonInput.StringFieldSurrogatePair.ProtobufOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.DoubleFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeQuietNan.JsonOutput -Required.Proto3.ProtobufInput.FloatFieldNormalizeSignalingNan.JsonOutput -Required.Proto3.ProtobufInput.ValidDataRepeated.FLOAT.JsonOutput -Required.TimestampProtoInputTooLarge.JsonOutput -Required.TimestampProtoInputTooSmall.JsonOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonFalse.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonNull.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonNumber.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonObject.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonString.ProtobufOutput -Required.Proto3.JsonInput.IgnoreUnknownJsonTrue.ProtobufOutput -Recommended.Proto3.JsonInput.FieldMaskInvalidCharacter -Required.Proto3.JsonInput.RejectTopLevelNull diff --git a/lib/protobuf/conformance/text_format_conformance_suite.cc b/lib/protobuf/conformance/text_format_conformance_suite.cc deleted file mode 100644 index 97b7b90..0000000 --- a/lib/protobuf/conformance/text_format_conformance_suite.cc +++ /dev/null @@ -1,317 +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. - -#include "text_format_conformance_suite.h" - -#include "conformance_test.h" - -#include -#include -#include -#include - -using conformance::ConformanceRequest; -using conformance::ConformanceResponse; -using conformance::WireFormat; -using google::protobuf::Message; -using google::protobuf::TextFormat; -using protobuf_test_messages::proto2::TestAllTypesProto2; -using protobuf_test_messages::proto2::UnknownToTestAllTypes; -using protobuf_test_messages::proto3::TestAllTypesProto3; -using std::string; - -namespace google { -namespace protobuf { - -TextFormatConformanceTestSuite::TextFormatConformanceTestSuite() { - SetFailureListFlagName("--text_format_failure_list"); -} - -bool TextFormatConformanceTestSuite::ParseTextFormatResponse( - const ConformanceResponse& response, - const ConformanceRequestSetting& setting, Message* test_message) { - TextFormat::Parser parser; - const ConformanceRequest& request = setting.GetRequest(); - if (request.print_unknown_fields()) { - parser.AllowFieldNumber(true); - } - if (!parser.ParseFromString(response.text_payload(), test_message)) { - GOOGLE_LOG(ERROR) << "INTERNAL ERROR: internal text->protobuf transcode " - << "yielded unparseable proto. Text payload: " - << response.text_payload(); - return false; - } - - return true; -} - -bool TextFormatConformanceTestSuite::ParseResponse( - const ConformanceResponse& response, - const ConformanceRequestSetting& setting, Message* test_message) { - const ConformanceRequest& request = setting.GetRequest(); - WireFormat requested_output = request.requested_output_format(); - const string& test_name = setting.GetTestName(); - ConformanceLevel level = setting.GetLevel(); - - switch (response.result_case()) { - case ConformanceResponse::kProtobufPayload: { - if (requested_output != conformance::PROTOBUF) { - ReportFailure( - test_name, level, request, response, - StrCat("Test was asked for ", WireFormatToString(requested_output), - " output but provided PROTOBUF instead.") - .c_str()); - return false; - } - - if (!test_message->ParseFromString(response.protobuf_payload())) { - ReportFailure(test_name, level, request, response, - "Protobuf output we received from test was unparseable."); - return false; - } - - break; - } - - case ConformanceResponse::kTextPayload: { - if (requested_output != conformance::TEXT_FORMAT) { - ReportFailure( - test_name, level, request, response, - StrCat("Test was asked for ", WireFormatToString(requested_output), - " output but provided TEXT_FORMAT instead.") - .c_str()); - return false; - } - - if (!ParseTextFormatResponse(response, setting, test_message)) { - ReportFailure( - test_name, level, request, response, - "TEXT_FORMAT output we received from test was unparseable."); - return false; - } - - break; - } - - default: - GOOGLE_LOG(FATAL) << test_name - << ": unknown payload type: " << response.result_case(); - } - - return true; -} - -void TextFormatConformanceTestSuite::ExpectParseFailure(const string& test_name, - ConformanceLevel level, - const string& input) { - TestAllTypesProto3 prototype; - // 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. - ConformanceRequestSetting setting( - level, conformance::TEXT_FORMAT, conformance::TEXT_FORMAT, - conformance::TEXT_FORMAT_TEST, prototype, test_name, input); - const ConformanceRequest& request = setting.GetRequest(); - ConformanceResponse response; - string effective_test_name = StrCat(setting.ConformanceLevelToString(level), - ".Proto3.TextFormatInput.", test_name); - - RunTest(effective_test_name, request, &response); - if (response.result_case() == ConformanceResponse::kParseError) { - ReportSuccess(effective_test_name); - } else if (response.result_case() == ConformanceResponse::kSkipped) { - ReportSkip(effective_test_name, request, response); - } else { - ReportFailure(effective_test_name, level, request, response, - "Should have failed to parse, but didn't."); - } -} - -void TextFormatConformanceTestSuite::RunValidTextFormatTest( - const string& test_name, ConformanceLevel level, const string& input_text) { - TestAllTypesProto3 prototype; - RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype); -} - -void TextFormatConformanceTestSuite::RunValidTextFormatTestProto2( - const string& test_name, ConformanceLevel level, const string& input_text) { - TestAllTypesProto2 prototype; - RunValidTextFormatTestWithMessage(test_name, level, input_text, prototype); -} - -void TextFormatConformanceTestSuite::RunValidTextFormatTestWithMessage( - const string& test_name, ConformanceLevel level, const string& input_text, - const Message& prototype) { - ConformanceRequestSetting setting1( - level, conformance::TEXT_FORMAT, conformance::PROTOBUF, - conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text); - RunValidInputTest(setting1, input_text); - ConformanceRequestSetting setting2( - level, conformance::TEXT_FORMAT, conformance::TEXT_FORMAT, - conformance::TEXT_FORMAT_TEST, prototype, test_name, input_text); - RunValidInputTest(setting2, input_text); -} - -void TextFormatConformanceTestSuite::RunValidUnknownTextFormatTest( - const string& test_name, const Message& message) { - string serialized_input; - message.SerializeToString(&serialized_input); - TestAllTypesProto3 prototype; - ConformanceRequestSetting setting1( - RECOMMENDED, conformance::PROTOBUF, conformance::TEXT_FORMAT, - conformance::TEXT_FORMAT_TEST, prototype, test_name + "_Drop", - serialized_input); - setting1.SetPrototypeMessageForCompare(message); - RunValidBinaryInputTest(setting1, ""); - - ConformanceRequestSetting setting2( - RECOMMENDED, conformance::PROTOBUF, conformance::TEXT_FORMAT, - conformance::TEXT_FORMAT_TEST, prototype, test_name + "_Print", - serialized_input); - setting2.SetPrototypeMessageForCompare(message); - setting2.SetPrintUnknownFields(true); - RunValidBinaryInputTest(setting2, serialized_input); -} - -void TextFormatConformanceTestSuite::RunSuiteImpl() { - RunValidTextFormatTest("HelloWorld", REQUIRED, - "optional_string: 'Hello, World!'"); - // Integer fields. - RunValidTextFormatTest("Int32FieldMaxValue", REQUIRED, - "optional_int32: 2147483647"); - RunValidTextFormatTest("Int32FieldMinValue", REQUIRED, - "optional_int32: -2147483648"); - RunValidTextFormatTest("Uint32FieldMaxValue", REQUIRED, - "optional_uint32: 4294967295"); - RunValidTextFormatTest("Int64FieldMaxValue", REQUIRED, - "optional_int64: 9223372036854775807"); - RunValidTextFormatTest("Int64FieldMinValue", REQUIRED, - "optional_int64: -9223372036854775808"); - RunValidTextFormatTest("Uint64FieldMaxValue", REQUIRED, - "optional_uint64: 18446744073709551615"); - - // Parsers reject out-of-bound integer values. - ExpectParseFailure("Int32FieldTooLarge", REQUIRED, - "optional_int32: 2147483648"); - ExpectParseFailure("Int32FieldTooSmall", REQUIRED, - "optional_int32: -2147483649"); - ExpectParseFailure("Uint32FieldTooLarge", REQUIRED, - "optional_uint32: 4294967296"); - ExpectParseFailure("Int64FieldTooLarge", REQUIRED, - "optional_int64: 9223372036854775808"); - ExpectParseFailure("Int64FieldTooSmall", REQUIRED, - "optional_int64: -9223372036854775809"); - ExpectParseFailure("Uint64FieldTooLarge", REQUIRED, - "optional_uint64: 18446744073709551616"); - - // Floating point fields - RunValidTextFormatTest("FloatField", REQUIRED, - "optional_float: 3.192837"); - RunValidTextFormatTest("FloatFieldWithVeryPreciseNumber", REQUIRED, - "optional_float: 3.123456789123456789"); - RunValidTextFormatTest("FloatFieldMaxValue", REQUIRED, - "optional_float: 3.4028235e+38"); - RunValidTextFormatTest("FloatFieldMinValue", REQUIRED, - "optional_float: 1.17549e-38"); - RunValidTextFormatTest("FloatFieldNaNValue", REQUIRED, - "optional_float: NaN"); - RunValidTextFormatTest("FloatFieldPosInfValue", REQUIRED, - "optional_float: inf"); - RunValidTextFormatTest("FloatFieldNegInfValue", REQUIRED, - "optional_float: -inf"); - RunValidTextFormatTest("FloatFieldWithInt32Max", REQUIRED, - "optional_float: 4294967296"); - RunValidTextFormatTest("FloatFieldLargerThanInt64", REQUIRED, - "optional_float: 9223372036854775808"); - RunValidTextFormatTest("FloatFieldTooLarge", REQUIRED, - "optional_float: 3.4028235e+39"); - RunValidTextFormatTest("FloatFieldTooSmall", REQUIRED, - "optional_float: 1.17549e-39"); - RunValidTextFormatTest("FloatFieldLargerThanUint64", REQUIRED, - "optional_float: 18446744073709551616"); - - // Group fields - RunValidTextFormatTestProto2("GroupFieldNoColon", REQUIRED, - "Data { group_int32: 1 }"); - RunValidTextFormatTestProto2("GroupFieldWithColon", REQUIRED, - "Data: { group_int32: 1 }"); - RunValidTextFormatTestProto2("GroupFieldEmpty", REQUIRED, - "Data {}"); - - - // Unknown Fields - UnknownToTestAllTypes message; - // Unable to print unknown Fixed32/Fixed64 fields as if they are known. - // Fixed32/Fixed64 fields are not added in the tests. - message.set_optional_int32(123); - message.set_optional_string("hello"); - message.set_optional_bool(true); - RunValidUnknownTextFormatTest("ScalarUnknownFields", message); - - message.Clear(); - message.mutable_nested_message()->set_c(111); - RunValidUnknownTextFormatTest("MessageUnknownFields", message); - - message.Clear(); - message.mutable_optionalgroup()->set_a(321); - RunValidUnknownTextFormatTest("GroupUnknownFields", message); - - message.add_repeated_int32(1); - message.add_repeated_int32(2); - message.add_repeated_int32(3); - RunValidUnknownTextFormatTest("RepeatedUnknownFields", message); - - // Any fields - RunValidTextFormatTest("AnyField", REQUIRED, - R"( - optional_any: { - [type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3] { - optional_int32: 12345 - } - } - )"); - RunValidTextFormatTest("AnyFieldWithRawBytes", REQUIRED, - R"( - optional_any: { - type_url: "type.googleapis.com/protobuf_test_messages.proto3.TestAllTypesProto3" - value: "\b\271`" - } - )"); - ExpectParseFailure("AnyFieldWithInvalidType", REQUIRED, - R"( - optional_any: { - [type.googleapis.com/unknown] { - optional_int32: 12345 - } - } - )"); -} - -} // namespace protobuf -} // namespace google diff --git a/lib/protobuf/conformance/text_format_conformance_suite.h b/lib/protobuf/conformance/text_format_conformance_suite.h deleted file mode 100644 index dd258f5..0000000 --- a/lib/protobuf/conformance/text_format_conformance_suite.h +++ /dev/null @@ -1,69 +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 TEXT_FORMAT_CONFORMANCE_SUITE_H_ -#define TEXT_FORMAT_CONFORMANCE_SUITE_H_ - -#include "conformance_test.h" - -namespace google { -namespace protobuf { - -class TextFormatConformanceTestSuite : public ConformanceTestSuite { - public: - TextFormatConformanceTestSuite(); - - private: - void RunSuiteImpl(); - void RunValidTextFormatTest(const string& test_name, ConformanceLevel level, - const string& input); - void RunValidTextFormatTestProto2(const string& test_name, - ConformanceLevel level, - const string& input); - void RunValidTextFormatTestWithMessage(const string& test_name, - ConformanceLevel level, - const string& input_text, - const Message& prototype); - void RunValidUnknownTextFormatTest(const string& test_name, - const Message& message); - void ExpectParseFailure(const string& test_name, ConformanceLevel level, - const string& input); - bool ParseTextFormatResponse(const conformance::ConformanceResponse& response, - const ConformanceRequestSetting& setting, - Message* test_message); - bool ParseResponse(const conformance::ConformanceResponse& response, - const ConformanceRequestSetting& setting, - Message* test_message) override; -}; - -} // namespace protobuf -} // namespace google - -#endif // TEXT_FORMAT_CONFORMANCE_SUITE_H_ diff --git a/lib/protobuf/conformance/text_format_failure_list_csharp.txt b/lib/protobuf/conformance/text_format_failure_list_csharp.txt deleted file mode 100644 index 404b64a..0000000 --- a/lib/protobuf/conformance/text_format_failure_list_csharp.txt +++ /dev/null @@ -1,8 +0,0 @@ -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Print.TextFormatOutput diff --git a/lib/protobuf/conformance/text_format_failure_list_java.txt b/lib/protobuf/conformance/text_format_failure_list_java.txt deleted file mode 100755 index 81433b4..0000000 --- a/lib/protobuf/conformance/text_format_failure_list_java.txt +++ /dev/null @@ -1,6 +0,0 @@ -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Drop.TextFormatOutput -Required.Proto3.TextFormatInput.AnyField.ProtobufOutput -Required.Proto3.TextFormatInput.AnyField.TextFormatOutput diff --git a/lib/protobuf/conformance/text_format_failure_list_php.txt b/lib/protobuf/conformance/text_format_failure_list_php.txt deleted file mode 100644 index 404b64a..0000000 --- a/lib/protobuf/conformance/text_format_failure_list_php.txt +++ /dev/null @@ -1,8 +0,0 @@ -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Print.TextFormatOutput diff --git a/lib/protobuf/conformance/text_format_failure_list_python.txt b/lib/protobuf/conformance/text_format_failure_list_python.txt deleted file mode 100644 index b2db95e..0000000 --- a/lib/protobuf/conformance/text_format_failure_list_python.txt +++ /dev/null @@ -1,5 +0,0 @@ -# This is the list of text format conformance tests that are known to fail right -# now. -# TODO: These should be fixed. -Required.Proto3.TextFormatInput.FloatFieldMaxValue.ProtobufOutput -Required.Proto3.TextFormatInput.FloatFieldMaxValue.TextFormatOutput diff --git a/lib/protobuf/conformance/text_format_failure_list_ruby.txt b/lib/protobuf/conformance/text_format_failure_list_ruby.txt deleted file mode 100644 index 404b64a..0000000 --- a/lib/protobuf/conformance/text_format_failure_list_ruby.txt +++ /dev/null @@ -1,8 +0,0 @@ -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.GroupUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.MessageUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.RepeatedUnknownFields_Print.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Drop.TextFormatOutput -Recommended.Proto3.ProtobufInput.ScalarUnknownFields_Print.TextFormatOutput diff --git a/lib/protobuf/conformance/third_party/jsoncpp/json.h b/lib/protobuf/conformance/third_party/jsoncpp/json.h deleted file mode 100644 index 32fd072..0000000 --- a/lib/protobuf/conformance/third_party/jsoncpp/json.h +++ /dev/null @@ -1,2075 +0,0 @@ -/// Json-cpp amalgated header (http://jsoncpp.sourceforge.net/). -/// It is intended to be used with #include "json/json.h" - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: LICENSE -// ////////////////////////////////////////////////////////////////////// - -/* -The JsonCpp library's source code, including accompanying documentation, -tests and demonstration applications, are licensed under the following -conditions... - -The author (Baptiste Lepilleur) explicitly disclaims copyright in all -jurisdictions which recognize such a disclaimer. In such jurisdictions, -this software is released into the Public Domain. - -In jurisdictions which do not recognize Public Domain property (e.g. Germany as of -2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is -released under the terms of the MIT License (see below). - -In jurisdictions which recognize Public Domain property, the user of this -software may choose to accept it either as 1) Public Domain, 2) under the -conditions of the MIT License (see below), or 3) under the terms of dual -Public Domain/MIT License conditions described here, as they choose. - -The MIT License is about as close to Public Domain as a license can get, and is -described in clear, concise terms at: - - http://en.wikipedia.org/wiki/MIT_License - -The full text of the MIT License follows: - -======================================================================== -Copyright (c) 2007-2010 Baptiste Lepilleur - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -======================================================================== -(END LICENSE TEXT) - -The MIT license is compatible with both the GPL and commercial -software, affording one all of the rights of Public Domain with the -minor nuisance of being required to keep the above copyright notice -and license text in the source code. Note also that by accepting the -Public Domain "license" you can re-license your copy using whatever -license you like. - -*/ - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: LICENSE -// ////////////////////////////////////////////////////////////////////// - - - - - -#ifndef JSON_AMALGATED_H_INCLUDED -# define JSON_AMALGATED_H_INCLUDED -/// If defined, indicates that the source file is amalgated -/// to prevent private header inclusion. -#define JSON_IS_AMALGAMATION - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/version.h -// ////////////////////////////////////////////////////////////////////// - -// DO NOT EDIT. This file (and "version") is generated by CMake. -// Run CMake configure step to update it. -#ifndef JSON_VERSION_H_INCLUDED -# define JSON_VERSION_H_INCLUDED - -# define JSONCPP_VERSION_STRING "1.6.5" -# define JSONCPP_VERSION_MAJOR 1 -# define JSONCPP_VERSION_MINOR 6 -# define JSONCPP_VERSION_PATCH 5 -# define JSONCPP_VERSION_QUALIFIER -# define JSONCPP_VERSION_HEXA ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | (JSONCPP_VERSION_PATCH << 8)) - -#endif // JSON_VERSION_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/version.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/config.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef JSON_CONFIG_H_INCLUDED -#define JSON_CONFIG_H_INCLUDED - -/// If defined, indicates that json library is embedded in CppTL library. -//# define JSON_IN_CPPTL 1 - -/// If defined, indicates that json may leverage CppTL library -//# define JSON_USE_CPPTL 1 -/// If defined, indicates that cpptl vector based map should be used instead of -/// std::map -/// as Value container. -//# define JSON_USE_CPPTL_SMALLMAP 1 - -// If non-zero, the library uses exceptions to report bad input instead of C -// assertion macros. The default is to use exceptions. -#ifndef JSON_USE_EXCEPTION -#define JSON_USE_EXCEPTION 1 -#endif - -/// If defined, indicates that the source file is amalgated -/// to prevent private header inclusion. -/// Remarks: it is automatically defined in the generated amalgated header. -// #define JSON_IS_AMALGAMATION - -#ifdef JSON_IN_CPPTL -#include -#ifndef JSON_USE_CPPTL -#define JSON_USE_CPPTL 1 -#endif -#endif - -#ifdef JSON_IN_CPPTL -#define JSON_API CPPTL_API -#elif defined(JSON_DLL_BUILD) -#if defined(_MSC_VER) -#define JSON_API __declspec(dllexport) -#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING -#endif // if defined(_MSC_VER) -#elif defined(JSON_DLL) -#if defined(_MSC_VER) -#define JSON_API __declspec(dllimport) -#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING -#endif // if defined(_MSC_VER) -#endif // ifdef JSON_IN_CPPTL -#if !defined(JSON_API) -#define JSON_API -#endif - -// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for -// integer -// Storages, and 64 bits integer support is disabled. -// #define JSON_NO_INT64 1 - -#if defined(_MSC_VER) // MSVC -# if _MSC_VER <= 1200 // MSVC 6 - // Microsoft Visual Studio 6 only support conversion from __int64 to double - // (no conversion from unsigned __int64). -# define JSON_USE_INT64_DOUBLE_CONVERSION 1 - // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255' - // characters in the debug information) - // All projects I've ever seen with VS6 were using this globally (not bothering - // with pragma push/pop). -# pragma warning(disable : 4786) -# endif // MSVC 6 - -# if _MSC_VER >= 1500 // MSVC 2008 - /// Indicates that the following function is deprecated. -# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message)) -# endif - -#endif // defined(_MSC_VER) - - -#ifndef JSON_HAS_RVALUE_REFERENCES - -#if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010 -#define JSON_HAS_RVALUE_REFERENCES 1 -#endif // MSVC >= 2010 - -#ifdef __clang__ -#if __has_feature(cxx_rvalue_references) -#define JSON_HAS_RVALUE_REFERENCES 1 -#endif // has_feature - -#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) -#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L) -#define JSON_HAS_RVALUE_REFERENCES 1 -#endif // GXX_EXPERIMENTAL - -#endif // __clang__ || __GNUC__ - -#endif // not defined JSON_HAS_RVALUE_REFERENCES - -#ifndef JSON_HAS_RVALUE_REFERENCES -#define JSON_HAS_RVALUE_REFERENCES 0 -#endif - -#ifdef __clang__ -#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc) -# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)) -# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message))) -# elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1)) -# define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__)) -# endif // GNUC version -#endif // __clang__ || __GNUC__ - -#if !defined(JSONCPP_DEPRECATED) -#define JSONCPP_DEPRECATED(message) -#endif // if !defined(JSONCPP_DEPRECATED) - -namespace Json { -typedef int Int; -typedef unsigned int UInt; -#if defined(JSON_NO_INT64) -typedef int LargestInt; -typedef unsigned int LargestUInt; -#undef JSON_HAS_INT64 -#else // if defined(JSON_NO_INT64) -// For Microsoft Visual use specific types as long long is not supported -#if defined(_MSC_VER) // Microsoft Visual Studio -typedef __int64 Int64; -typedef unsigned __int64 UInt64; -#else // if defined(_MSC_VER) // Other platforms, use long long -typedef long long int Int64; -typedef unsigned long long int UInt64; -#endif // if defined(_MSC_VER) -typedef Int64 LargestInt; -typedef UInt64 LargestUInt; -#define JSON_HAS_INT64 -#endif // if defined(JSON_NO_INT64) -} // end namespace Json - -#endif // JSON_CONFIG_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/config.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/forwards.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef JSON_FORWARDS_H_INCLUDED -#define JSON_FORWARDS_H_INCLUDED - -#if !defined(JSON_IS_AMALGAMATION) -#include "config.h" -#endif // if !defined(JSON_IS_AMALGAMATION) - -namespace Json { - -// writer.h -class FastWriter; -class StyledWriter; - -// reader.h -class Reader; - -// features.h -class Features; - -// value.h -typedef unsigned int ArrayIndex; -class StaticString; -class Path; -class PathArgument; -class Value; -class ValueIteratorBase; -class ValueIterator; -class ValueConstIterator; - -} // namespace Json - -#endif // JSON_FORWARDS_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/forwards.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/features.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef CPPTL_JSON_FEATURES_H_INCLUDED -#define CPPTL_JSON_FEATURES_H_INCLUDED - -#if !defined(JSON_IS_AMALGAMATION) -#include "forwards.h" -#endif // if !defined(JSON_IS_AMALGAMATION) - -namespace Json { - -/** \brief Configuration passed to reader and writer. - * This configuration object can be used to force the Reader or Writer - * to behave in a standard conforming way. - */ -class JSON_API Features { -public: - /** \brief A configuration that allows all features and assumes all strings - * are UTF-8. - * - C & C++ comments are allowed - * - Root object can be any JSON value - * - Assumes Value strings are encoded in UTF-8 - */ - static Features all(); - - /** \brief A configuration that is strictly compatible with the JSON - * specification. - * - Comments are forbidden. - * - Root object must be either an array or an object value. - * - Assumes Value strings are encoded in UTF-8 - */ - static Features strictMode(); - - /** \brief Initialize the configuration like JsonConfig::allFeatures; - */ - Features(); - - /// \c true if comments are allowed. Default: \c true. - bool allowComments_; - - /// \c true if root must be either an array or an object value. Default: \c - /// false. - bool strictRoot_; - - /// \c true if dropped null placeholders are allowed. Default: \c false. - bool allowDroppedNullPlaceholders_; - - /// \c true if numeric object key are allowed. Default: \c false. - bool allowNumericKeys_; -}; - -} // namespace Json - -#endif // CPPTL_JSON_FEATURES_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/features.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/value.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef CPPTL_JSON_H_INCLUDED -#define CPPTL_JSON_H_INCLUDED - -#if !defined(JSON_IS_AMALGAMATION) -#include "forwards.h" -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include - -#ifndef JSON_USE_CPPTL_SMALLMAP -#include -#else -#include -#endif -#ifdef JSON_USE_CPPTL -#include -#endif - -// Disable warning C4251: : needs to have dll-interface to -// be used by... -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(push) -#pragma warning(disable : 4251) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -/** \brief JSON (JavaScript Object Notation). - */ -namespace Json { - -/** Base class for all exceptions we throw. - * - * We use nothing but these internally. Of course, STL can throw others. - */ -class JSON_API Exception : public std::exception { -public: - Exception(std::string const& msg); - ~Exception() throw() override; - char const* what() const throw() override; -protected: - std::string msg_; -}; - -/** Exceptions which the user cannot easily avoid. - * - * E.g. out-of-memory (when we use malloc), stack-overflow, malicious input - * - * \remark derived from Json::Exception - */ -class JSON_API RuntimeError : public Exception { -public: - RuntimeError(std::string const& msg); -}; - -/** Exceptions thrown by JSON_ASSERT/JSON_FAIL macros. - * - * These are precondition-violations (user bugs) and internal errors (our bugs). - * - * \remark derived from Json::Exception - */ -class JSON_API LogicError : public Exception { -public: - LogicError(std::string const& msg); -}; - -/// used internally -void throwRuntimeError(std::string const& msg); -/// used internally -void throwLogicError(std::string const& msg); - -/** \brief Type of the value held by a Value object. - */ -enum ValueType { - nullValue = 0, ///< 'null' value - intValue, ///< signed integer value - uintValue, ///< unsigned integer value - realValue, ///< double value - stringValue, ///< UTF-8 string value - booleanValue, ///< bool value - arrayValue, ///< array value (ordered list) - objectValue ///< object value (collection of name/value pairs). -}; - -enum CommentPlacement { - commentBefore = 0, ///< a comment placed on the line before a value - commentAfterOnSameLine, ///< a comment just after a value on the same line - commentAfter, ///< a comment on the line after a value (only make sense for - /// root value) - numberOfCommentPlacement -}; - -//# ifdef JSON_USE_CPPTL -// typedef CppTL::AnyEnumerator EnumMemberNames; -// typedef CppTL::AnyEnumerator EnumValues; -//# endif - -/** \brief Lightweight wrapper to tag static string. - * - * Value constructor and objectValue member assignement takes advantage of the - * StaticString and avoid the cost of string duplication when storing the - * string or the member name. - * - * Example of usage: - * \code - * Json::Value aValue( StaticString("some text") ); - * Json::Value object; - * static const StaticString code("code"); - * object[code] = 1234; - * \endcode - */ -class JSON_API StaticString { -public: - explicit StaticString(const char* czstring) : c_str_(czstring) {} - - operator const char*() const { return c_str_; } - - const char* c_str() const { return c_str_; } - -private: - const char* c_str_; -}; - -/** \brief Represents a JSON value. - * - * This class is a discriminated union wrapper that can represents a: - * - signed integer [range: Value::minInt - Value::maxInt] - * - unsigned integer (range: 0 - Value::maxUInt) - * - double - * - UTF-8 string - * - boolean - * - 'null' - * - an ordered list of Value - * - collection of name/value pairs (javascript object) - * - * The type of the held value is represented by a #ValueType and - * can be obtained using type(). - * - * Values of an #objectValue or #arrayValue can be accessed using operator[]() - * methods. - * Non-const methods will automatically create the a #nullValue element - * if it does not exist. - * The sequence of an #arrayValue will be automatically resized and initialized - * with #nullValue. resize() can be used to enlarge or truncate an #arrayValue. - * - * The get() methods can be used to obtain default value in the case the - * required element does not exist. - * - * It is possible to iterate over the list of a #objectValue values using - * the getMemberNames() method. - * - * \note #Value string-length fit in size_t, but keys must be < 2^30. - * (The reason is an implementation detail.) A #CharReader will raise an - * exception if a bound is exceeded to avoid security holes in your app, - * but the Value API does *not* check bounds. That is the responsibility - * of the caller. - */ -class JSON_API Value { - friend class ValueIteratorBase; -public: - typedef std::vector Members; - typedef ValueIterator iterator; - typedef ValueConstIterator const_iterator; - typedef Json::UInt UInt; - typedef Json::Int Int; -#if defined(JSON_HAS_INT64) - typedef Json::UInt64 UInt64; - typedef Json::Int64 Int64; -#endif // defined(JSON_HAS_INT64) - typedef Json::LargestInt LargestInt; - typedef Json::LargestUInt LargestUInt; - typedef Json::ArrayIndex ArrayIndex; - - static const Value& null; ///< We regret this reference to a global instance; prefer the simpler Value(). - static const Value& nullRef; ///< just a kludge for binary-compatibility; same as null - /// Minimum signed integer value that can be stored in a Json::Value. - static const LargestInt minLargestInt; - /// Maximum signed integer value that can be stored in a Json::Value. - static const LargestInt maxLargestInt; - /// Maximum unsigned integer value that can be stored in a Json::Value. - static const LargestUInt maxLargestUInt; - - /// Minimum signed int value that can be stored in a Json::Value. - static const Int minInt; - /// Maximum signed int value that can be stored in a Json::Value. - static const Int maxInt; - /// Maximum unsigned int value that can be stored in a Json::Value. - static const UInt maxUInt; - -#if defined(JSON_HAS_INT64) - /// Minimum signed 64 bits int value that can be stored in a Json::Value. - static const Int64 minInt64; - /// Maximum signed 64 bits int value that can be stored in a Json::Value. - static const Int64 maxInt64; - /// Maximum unsigned 64 bits int value that can be stored in a Json::Value. - static const UInt64 maxUInt64; -#endif // defined(JSON_HAS_INT64) - -private: -#ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - class CZString { - public: - enum DuplicationPolicy { - noDuplication = 0, - duplicate, - duplicateOnCopy - }; - CZString(ArrayIndex index); - CZString(char const* str, unsigned length, DuplicationPolicy allocate); - CZString(CZString const& other); -#if JSON_HAS_RVALUE_REFERENCES - CZString(CZString&& other); -#endif - ~CZString(); - CZString& operator=(CZString other); - bool operator<(CZString const& other) const; - bool operator==(CZString const& other) const; - ArrayIndex index() const; - //const char* c_str() const; ///< \deprecated - char const* data() const; - unsigned length() const; - bool isStaticString() const; - - private: - void swap(CZString& other); - - struct StringStorage { - unsigned policy_: 2; - unsigned length_: 30; // 1GB max - }; - - char const* cstr_; // actually, a prefixed string, unless policy is noDup - union { - ArrayIndex index_; - StringStorage storage_; - }; - }; - -public: -#ifndef JSON_USE_CPPTL_SMALLMAP - typedef std::map ObjectValues; -#else - typedef CppTL::SmallMap ObjectValues; -#endif // ifndef JSON_USE_CPPTL_SMALLMAP -#endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION - -public: - /** \brief Create a default Value of the given type. - - This is a very useful constructor. - To create an empty array, pass arrayValue. - To create an empty object, pass objectValue. - Another Value can then be set to this one by assignment. -This is useful since clear() and resize() will not alter types. - - Examples: -\code -Json::Value null_value; // null -Json::Value arr_value(Json::arrayValue); // [] -Json::Value obj_value(Json::objectValue); // {} -\endcode - */ - Value(ValueType type = nullValue); - Value(Int value); - Value(UInt value); -#if defined(JSON_HAS_INT64) - Value(Int64 value); - Value(UInt64 value); -#endif // if defined(JSON_HAS_INT64) - Value(double value); - Value(const char* value); ///< Copy til first 0. (NULL causes to seg-fault.) - Value(const char* begin, const char* end); ///< Copy all, incl zeroes. - /** \brief Constructs a value from a static string. - - * Like other value string constructor but do not duplicate the string for - * internal storage. The given string must remain alive after the call to this - * constructor. - * \note This works only for null-terminated strings. (We cannot change the - * size of this class, so we have nowhere to store the length, - * which might be computed later for various operations.) - * - * Example of usage: - * \code - * static StaticString foo("some text"); - * Json::Value aValue(foo); - * \endcode - */ - Value(const StaticString& value); - Value(const std::string& value); ///< Copy data() til size(). Embedded zeroes too. -#ifdef JSON_USE_CPPTL - Value(const CppTL::ConstString& value); -#endif - Value(bool value); - /// Deep copy. - Value(const Value& other); -#if JSON_HAS_RVALUE_REFERENCES - /// Move constructor - Value(Value&& other); -#endif - ~Value(); - - /// Deep copy, then swap(other). - /// \note Over-write existing comments. To preserve comments, use #swapPayload(). - Value& operator=(Value other); - /// Swap everything. - void swap(Value& other); - /// Swap values but leave comments and source offsets in place. - void swapPayload(Value& other); - - ValueType type() const; - - /// Compare payload only, not comments etc. - bool operator<(const Value& other) const; - bool operator<=(const Value& other) const; - bool operator>=(const Value& other) const; - bool operator>(const Value& other) const; - bool operator==(const Value& other) const; - bool operator!=(const Value& other) const; - int compare(const Value& other) const; - - const char* asCString() const; ///< Embedded zeroes could cause you trouble! - std::string asString() const; ///< Embedded zeroes are possible. - /** Get raw char* of string-value. - * \return false if !string. (Seg-fault if str or end are NULL.) - */ - bool getString( - char const** begin, char const** end) const; -#ifdef JSON_USE_CPPTL - CppTL::ConstString asConstString() const; -#endif - Int asInt() const; - UInt asUInt() const; -#if defined(JSON_HAS_INT64) - Int64 asInt64() const; - UInt64 asUInt64() const; -#endif // if defined(JSON_HAS_INT64) - LargestInt asLargestInt() const; - LargestUInt asLargestUInt() const; - float asFloat() const; - double asDouble() const; - bool asBool() const; - - bool isNull() const; - bool isBool() const; - bool isInt() const; - bool isInt64() const; - bool isUInt() const; - bool isUInt64() const; - bool isIntegral() const; - bool isDouble() const; - bool isNumeric() const; - bool isString() const; - bool isArray() const; - bool isObject() const; - - bool isConvertibleTo(ValueType other) const; - - /// Number of values in array or object - ArrayIndex size() const; - - /// \brief Return true if empty array, empty object, or null; - /// otherwise, false. - bool empty() const; - - /// Return isNull() - bool operator!() const; - - /// Remove all object members and array elements. - /// \pre type() is arrayValue, objectValue, or nullValue - /// \post type() is unchanged - void clear(); - - /// Resize the array to size elements. - /// New elements are initialized to null. - /// May only be called on nullValue or arrayValue. - /// \pre type() is arrayValue or nullValue - /// \post type() is arrayValue - void resize(ArrayIndex size); - - /// Access an array element (zero based index ). - /// If the array contains less than index element, then null value are - /// inserted - /// in the array so that its size is index+1. - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - Value& operator[](ArrayIndex index); - - /// Access an array element (zero based index ). - /// If the array contains less than index element, then null value are - /// inserted - /// in the array so that its size is index+1. - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - Value& operator[](int index); - - /// Access an array element (zero based index ) - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - const Value& operator[](ArrayIndex index) const; - - /// Access an array element (zero based index ) - /// (You may need to say 'value[0u]' to get your compiler to distinguish - /// this from the operator[] which takes a string.) - const Value& operator[](int index) const; - - /// If the array contains at least index+1 elements, returns the element - /// value, - /// otherwise returns defaultValue. - Value get(ArrayIndex index, const Value& defaultValue) const; - /// Return true if index < size(). - bool isValidIndex(ArrayIndex index) const; - /// \brief Append value to array at the end. - /// - /// Equivalent to jsonvalue[jsonvalue.size()] = value; - Value& append(const Value& value); - - /// Access an object value by name, create a null member if it does not exist. - /// \note Because of our implementation, keys are limited to 2^30 -1 chars. - /// Exceeding that will cause an exception. - Value& operator[](const char* key); - /// Access an object value by name, returns null if there is no member with - /// that name. - const Value& operator[](const char* key) const; - /// Access an object value by name, create a null member if it does not exist. - /// \param key may contain embedded nulls. - Value& operator[](const std::string& key); - /// Access an object value by name, returns null if there is no member with - /// that name. - /// \param key may contain embedded nulls. - const Value& operator[](const std::string& key) const; - /** \brief Access an object value by name, create a null member if it does not - exist. - - * If the object has no entry for that name, then the member name used to store - * the new entry is not duplicated. - * Example of use: - * \code - * Json::Value object; - * static const StaticString code("code"); - * object[code] = 1234; - * \endcode - */ - Value& operator[](const StaticString& key); -#ifdef JSON_USE_CPPTL - /// Access an object value by name, create a null member if it does not exist. - Value& operator[](const CppTL::ConstString& key); - /// Access an object value by name, returns null if there is no member with - /// that name. - const Value& operator[](const CppTL::ConstString& key) const; -#endif - /// Return the member named key if it exist, defaultValue otherwise. - /// \note deep copy - Value get(const char* key, const Value& defaultValue) const; - /// Return the member named key if it exist, defaultValue otherwise. - /// \note deep copy - /// \note key may contain embedded nulls. - Value get(const char* begin, const char* end, const Value& defaultValue) const; - /// Return the member named key if it exist, defaultValue otherwise. - /// \note deep copy - /// \param key may contain embedded nulls. - Value get(const std::string& key, const Value& defaultValue) const; -#ifdef JSON_USE_CPPTL - /// Return the member named key if it exist, defaultValue otherwise. - /// \note deep copy - Value get(const CppTL::ConstString& key, const Value& defaultValue) const; -#endif - /// Most general and efficient version of isMember()const, get()const, - /// and operator[]const - /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30 - Value const* find(char const* begin, char const* end) const; - /// Most general and efficient version of object-mutators. - /// \note As stated elsewhere, behavior is undefined if (end-begin) >= 2^30 - /// \return non-zero, but JSON_ASSERT if this is neither object nor nullValue. - Value const* demand(char const* begin, char const* end); - /// \brief Remove and return the named member. - /// - /// Do nothing if it did not exist. - /// \return the removed Value, or null. - /// \pre type() is objectValue or nullValue - /// \post type() is unchanged - /// \deprecated - Value removeMember(const char* key); - /// Same as removeMember(const char*) - /// \param key may contain embedded nulls. - /// \deprecated - Value removeMember(const std::string& key); - /// Same as removeMember(const char* begin, const char* end, Value* removed), - /// but 'key' is null-terminated. - bool removeMember(const char* key, Value* removed); - /** \brief Remove the named map member. - - Update 'removed' iff removed. - \param key may contain embedded nulls. - \return true iff removed (no exceptions) - */ - bool removeMember(std::string const& key, Value* removed); - /// Same as removeMember(std::string const& key, Value* removed) - bool removeMember(const char* begin, const char* end, Value* removed); - /** \brief Remove the indexed array element. - - O(n) expensive operations. - Update 'removed' iff removed. - \return true iff removed (no exceptions) - */ - bool removeIndex(ArrayIndex i, Value* removed); - - /// Return true if the object has a member named key. - /// \note 'key' must be null-terminated. - bool isMember(const char* key) const; - /// Return true if the object has a member named key. - /// \param key may contain embedded nulls. - bool isMember(const std::string& key) const; - /// Same as isMember(std::string const& key)const - bool isMember(const char* begin, const char* end) const; -#ifdef JSON_USE_CPPTL - /// Return true if the object has a member named key. - bool isMember(const CppTL::ConstString& key) const; -#endif - - /// \brief Return a list of the member names. - /// - /// If null, return an empty list. - /// \pre type() is objectValue or nullValue - /// \post if type() was nullValue, it remains nullValue - Members getMemberNames() const; - - //# ifdef JSON_USE_CPPTL - // EnumMemberNames enumMemberNames() const; - // EnumValues enumValues() const; - //# endif - - /// \deprecated Always pass len. - JSONCPP_DEPRECATED("Use setComment(std::string const&) instead.") - void setComment(const char* comment, CommentPlacement placement); - /// Comments must be //... or /* ... */ - void setComment(const char* comment, size_t len, CommentPlacement placement); - /// Comments must be //... or /* ... */ - void setComment(const std::string& comment, CommentPlacement placement); - bool hasComment(CommentPlacement placement) const; - /// Include delimiters and embedded newlines. - std::string getComment(CommentPlacement placement) const; - - std::string toStyledString() const; - - const_iterator begin() const; - const_iterator end() const; - - iterator begin(); - iterator end(); - - // Accessors for the [start, limit) range of bytes within the JSON text from - // which this value was parsed, if any. - void setOffsetStart(size_t start); - void setOffsetLimit(size_t limit); - size_t getOffsetStart() const; - size_t getOffsetLimit() const; - -private: - void initBasic(ValueType type, bool allocated = false); - - Value& resolveReference(const char* key); - Value& resolveReference(const char* key, const char* end); - - struct CommentInfo { - CommentInfo(); - ~CommentInfo(); - - void setComment(const char* text, size_t len); - - char* comment_; - }; - - // struct MemberNamesTransform - //{ - // typedef const char *result_type; - // const char *operator()( const CZString &name ) const - // { - // return name.c_str(); - // } - //}; - - union ValueHolder { - LargestInt int_; - LargestUInt uint_; - double real_; - bool bool_; - char* string_; // actually ptr to unsigned, followed by str, unless !allocated_ - ObjectValues* map_; - } value_; - ValueType type_ : 8; - unsigned int allocated_ : 1; // Notes: if declared as bool, bitfield is useless. - // If not allocated_, string_ must be null-terminated. - CommentInfo* comments_; - - // [start, limit) byte offsets in the source JSON text from which this Value - // was extracted. - size_t start_; - size_t limit_; -}; - -/** \brief Experimental and untested: represents an element of the "path" to - * access a node. - */ -class JSON_API PathArgument { -public: - friend class Path; - - PathArgument(); - PathArgument(ArrayIndex index); - PathArgument(const char* key); - PathArgument(const std::string& key); - -private: - enum Kind { - kindNone = 0, - kindIndex, - kindKey - }; - std::string key_; - ArrayIndex index_; - Kind kind_; -}; - -/** \brief Experimental and untested: represents a "path" to access a node. - * - * Syntax: - * - "." => root node - * - ".[n]" => elements at index 'n' of root node (an array value) - * - ".name" => member named 'name' of root node (an object value) - * - ".name1.name2.name3" - * - ".[0][1][2].name1[3]" - * - ".%" => member name is provided as parameter - * - ".[%]" => index is provied as parameter - */ -class JSON_API Path { -public: - Path(const std::string& path, - const PathArgument& a1 = PathArgument(), - const PathArgument& a2 = PathArgument(), - const PathArgument& a3 = PathArgument(), - const PathArgument& a4 = PathArgument(), - const PathArgument& a5 = PathArgument()); - - const Value& resolve(const Value& root) const; - Value resolve(const Value& root, const Value& defaultValue) const; - /// Creates the "path" to access the specified node and returns a reference on - /// the node. - Value& make(Value& root) const; - -private: - typedef std::vector InArgs; - typedef std::vector Args; - - void makePath(const std::string& path, const InArgs& in); - void addPathInArg(const std::string& path, - const InArgs& in, - InArgs::const_iterator& itInArg, - PathArgument::Kind kind); - void invalidPath(const std::string& path, int location); - - Args args_; -}; - -/** \brief base class for Value iterators. - * - */ -class JSON_API ValueIteratorBase { -public: - typedef std::bidirectional_iterator_tag iterator_category; - typedef unsigned int size_t; - typedef int difference_type; - typedef ValueIteratorBase SelfType; - - bool operator==(const SelfType& other) const { return isEqual(other); } - - bool operator!=(const SelfType& other) const { return !isEqual(other); } - - difference_type operator-(const SelfType& other) const { - return other.computeDistance(*this); - } - - /// Return either the index or the member name of the referenced value as a - /// Value. - Value key() const; - - /// Return the index of the referenced Value, or -1 if it is not an arrayValue. - UInt index() const; - - /// Return the member name of the referenced Value, or "" if it is not an - /// objectValue. - /// \note Avoid `c_str()` on result, as embedded zeroes are possible. - std::string name() const; - - /// Return the member name of the referenced Value. "" if it is not an - /// objectValue. - /// \deprecated This cannot be used for UTF-8 strings, since there can be embedded nulls. - JSONCPP_DEPRECATED("Use `key = name();` instead.") - char const* memberName() const; - /// Return the member name of the referenced Value, or NULL if it is not an - /// objectValue. - /// \note Better version than memberName(). Allows embedded nulls. - char const* memberName(char const** end) const; - -protected: - Value& deref() const; - - void increment(); - - void decrement(); - - difference_type computeDistance(const SelfType& other) const; - - bool isEqual(const SelfType& other) const; - - void copy(const SelfType& other); - -private: - Value::ObjectValues::iterator current_; - // Indicates that iterator is for a null value. - bool isNull_; - -public: - // For some reason, BORLAND needs these at the end, rather - // than earlier. No idea why. - ValueIteratorBase(); - explicit ValueIteratorBase(const Value::ObjectValues::iterator& current); -}; - -/** \brief const iterator for object and array value. - * - */ -class JSON_API ValueConstIterator : public ValueIteratorBase { - friend class Value; - -public: - typedef const Value value_type; - //typedef unsigned int size_t; - //typedef int difference_type; - typedef const Value& reference; - typedef const Value* pointer; - typedef ValueConstIterator SelfType; - - ValueConstIterator(); - ValueConstIterator(ValueIterator const& other); - -private: -/*! \internal Use by Value to create an iterator. - */ - explicit ValueConstIterator(const Value::ObjectValues::iterator& current); -public: - SelfType& operator=(const ValueIteratorBase& other); - - SelfType operator++(int) { - SelfType temp(*this); - ++*this; - return temp; - } - - SelfType operator--(int) { - SelfType temp(*this); - --*this; - return temp; - } - - SelfType& operator--() { - decrement(); - return *this; - } - - SelfType& operator++() { - increment(); - return *this; - } - - reference operator*() const { return deref(); } - - pointer operator->() const { return &deref(); } -}; - -/** \brief Iterator for object and array value. - */ -class JSON_API ValueIterator : public ValueIteratorBase { - friend class Value; - -public: - typedef Value value_type; - typedef unsigned int size_t; - typedef int difference_type; - typedef Value& reference; - typedef Value* pointer; - typedef ValueIterator SelfType; - - ValueIterator(); - explicit ValueIterator(const ValueConstIterator& other); - ValueIterator(const ValueIterator& other); - -private: -/*! \internal Use by Value to create an iterator. - */ - explicit ValueIterator(const Value::ObjectValues::iterator& current); -public: - SelfType& operator=(const SelfType& other); - - SelfType operator++(int) { - SelfType temp(*this); - ++*this; - return temp; - } - - SelfType operator--(int) { - SelfType temp(*this); - --*this; - return temp; - } - - SelfType& operator--() { - decrement(); - return *this; - } - - SelfType& operator++() { - increment(); - return *this; - } - - reference operator*() const { return deref(); } - - pointer operator->() const { return &deref(); } -}; - -} // namespace Json - - -namespace std { -/// Specialize std::swap() for Json::Value. -template<> -inline void swap(Json::Value& a, Json::Value& b) { a.swap(b); } -} - - -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(pop) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -#endif // CPPTL_JSON_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/value.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/reader.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef CPPTL_JSON_READER_H_INCLUDED -#define CPPTL_JSON_READER_H_INCLUDED - -#if !defined(JSON_IS_AMALGAMATION) -#include "features.h" -#include "value.h" -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#include -#include - -// Disable warning C4251: : needs to have dll-interface to -// be used by... -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(push) -#pragma warning(disable : 4251) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -namespace Json { - -/** \brief Unserialize a JSON document into a - *Value. - * - * \deprecated Use CharReader and CharReaderBuilder. - */ -class JSON_API Reader { -public: - typedef char Char; - typedef const Char* Location; - - /** \brief An error tagged with where in the JSON text it was encountered. - * - * The offsets give the [start, limit) range of bytes within the text. Note - * that this is bytes, not codepoints. - * - */ - struct StructuredError { - size_t offset_start; - size_t offset_limit; - std::string message; - }; - - /** \brief Constructs a Reader allowing all features - * for parsing. - */ - Reader(); - - /** \brief Constructs a Reader allowing the specified feature set - * for parsing. - */ - Reader(const Features& features); - - /** \brief Read a Value from a JSON - * document. - * \param document UTF-8 encoded string containing the document to read. - * \param root [out] Contains the root value of the document if it was - * successfully parsed. - * \param collectComments \c true to collect comment and allow writing them - * back during - * serialization, \c false to discard comments. - * This parameter is ignored if - * Features::allowComments_ - * is \c false. - * \return \c true if the document was successfully parsed, \c false if an - * error occurred. - */ - bool - parse(const std::string& document, Value& root, bool collectComments = true); - - /** \brief Read a Value from a JSON - document. - * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the - document to read. - * \param endDoc Pointer on the end of the UTF-8 encoded string of the - document to read. - * Must be >= beginDoc. - * \param root [out] Contains the root value of the document if it was - * successfully parsed. - * \param collectComments \c true to collect comment and allow writing them - back during - * serialization, \c false to discard comments. - * This parameter is ignored if - Features::allowComments_ - * is \c false. - * \return \c true if the document was successfully parsed, \c false if an - error occurred. - */ - bool parse(const char* beginDoc, - const char* endDoc, - Value& root, - bool collectComments = true); - - /// \brief Parse from input stream. - /// \see Json::operator>>(std::istream&, Json::Value&). - bool parse(std::istream& is, Value& root, bool collectComments = true); - - /** \brief Returns a user friendly string that list errors in the parsed - * document. - * \return Formatted error message with the list of errors with their location - * in - * the parsed document. An empty string is returned if no error - * occurred - * during parsing. - * \deprecated Use getFormattedErrorMessages() instead (typo fix). - */ - JSONCPP_DEPRECATED("Use getFormattedErrorMessages() instead.") - std::string getFormatedErrorMessages() const; - - /** \brief Returns a user friendly string that list errors in the parsed - * document. - * \return Formatted error message with the list of errors with their location - * in - * the parsed document. An empty string is returned if no error - * occurred - * during parsing. - */ - std::string getFormattedErrorMessages() const; - - /** \brief Returns a vector of structured erros encounted while parsing. - * \return A (possibly empty) vector of StructuredError objects. Currently - * only one error can be returned, but the caller should tolerate - * multiple - * errors. This can occur if the parser recovers from a non-fatal - * parse error and then encounters additional errors. - */ - std::vector getStructuredErrors() const; - - /** \brief Add a semantic error message. - * \param value JSON Value location associated with the error - * \param message The error message. - * \return \c true if the error was successfully added, \c false if the - * Value offset exceeds the document size. - */ - bool pushError(const Value& value, const std::string& message); - - /** \brief Add a semantic error message with extra context. - * \param value JSON Value location associated with the error - * \param message The error message. - * \param extra Additional JSON Value location to contextualize the error - * \return \c true if the error was successfully added, \c false if either - * Value offset exceeds the document size. - */ - bool pushError(const Value& value, const std::string& message, const Value& extra); - - /** \brief Return whether there are any errors. - * \return \c true if there are no errors to report \c false if - * errors have occurred. - */ - bool good() const; - -private: - enum TokenType { - tokenEndOfStream = 0, - tokenObjectBegin, - tokenObjectEnd, - tokenArrayBegin, - tokenArrayEnd, - tokenString, - tokenNumber, - tokenTrue, - tokenFalse, - tokenNull, - tokenArraySeparator, - tokenMemberSeparator, - tokenComment, - tokenError - }; - - class Token { - public: - TokenType type_; - Location start_; - Location end_; - }; - - class ErrorInfo { - public: - Token token_; - std::string message_; - Location extra_; - }; - - typedef std::deque Errors; - - bool readToken(Token& token); - void skipSpaces(); - bool match(Location pattern, int patternLength); - bool readComment(); - bool readCStyleComment(); - bool readCppStyleComment(); - bool readString(); - void readNumber(); - bool readValue(); - bool readObject(Token& token); - bool readArray(Token& token); - bool decodeNumber(Token& token); - bool decodeNumber(Token& token, Value& decoded); - bool decodeString(Token& token); - bool decodeString(Token& token, std::string& decoded); - bool decodeDouble(Token& token); - bool decodeDouble(Token& token, Value& decoded); - bool decodeUnicodeCodePoint(Token& token, - Location& current, - Location end, - unsigned int& unicode); - bool decodeUnicodeEscapeSequence(Token& token, - Location& current, - Location end, - unsigned int& unicode); - bool addError(const std::string& message, Token& token, Location extra = 0); - bool recoverFromError(TokenType skipUntilToken); - bool addErrorAndRecover(const std::string& message, - Token& token, - TokenType skipUntilToken); - void skipUntilSpace(); - Value& currentValue(); - Char getNextChar(); - void - getLocationLineAndColumn(Location location, int& line, int& column) const; - std::string getLocationLineAndColumn(Location location) const; - void addComment(Location begin, Location end, CommentPlacement placement); - void skipCommentTokens(Token& token); - - typedef std::stack Nodes; - Nodes nodes_; - Errors errors_; - std::string document_; - Location begin_; - Location end_; - Location current_; - Location lastValueEnd_; - Value* lastValue_; - std::string commentsBefore_; - Features features_; - bool collectComments_; -}; // Reader - -/** Interface for reading JSON from a char array. - */ -class JSON_API CharReader { -public: - virtual ~CharReader() {} - /** \brief Read a Value from a JSON - document. - * The document must be a UTF-8 encoded string containing the document to read. - * - * \param beginDoc Pointer on the beginning of the UTF-8 encoded string of the - document to read. - * \param endDoc Pointer on the end of the UTF-8 encoded string of the - document to read. - * Must be >= beginDoc. - * \param root [out] Contains the root value of the document if it was - * successfully parsed. - * \param errs [out] Formatted error messages (if not NULL) - * a user friendly string that lists errors in the parsed - * document. - * \return \c true if the document was successfully parsed, \c false if an - error occurred. - */ - virtual bool parse( - char const* beginDoc, char const* endDoc, - Value* root, std::string* errs) = 0; - - class JSON_API Factory { - public: - virtual ~Factory() {} - /** \brief Allocate a CharReader via operator new(). - * \throw std::exception if something goes wrong (e.g. invalid settings) - */ - virtual CharReader* newCharReader() const = 0; - }; // Factory -}; // CharReader - -/** \brief Build a CharReader implementation. - -Usage: -\code - using namespace Json; - CharReaderBuilder builder; - builder["collectComments"] = false; - Value value; - std::string errs; - bool ok = parseFromStream(builder, std::cin, &value, &errs); -\endcode -*/ -class JSON_API CharReaderBuilder : public CharReader::Factory { -public: - // Note: We use a Json::Value so that we can add data-members to this class - // without a major version bump. - /** Configuration of this builder. - These are case-sensitive. - Available settings (case-sensitive): - - `"collectComments": false or true` - - true to collect comment and allow writing them - back during serialization, false to discard comments. - This parameter is ignored if allowComments is false. - - `"allowComments": false or true` - - true if comments are allowed. - - `"strictRoot": false or true` - - true if root must be either an array or an object value - - `"allowDroppedNullPlaceholders": false or true` - - true if dropped null placeholders are allowed. (See StreamWriterBuilder.) - - `"allowNumericKeys": false or true` - - true if numeric object keys are allowed. - - `"allowSingleQuotes": false or true` - - true if '' are allowed for strings (both keys and values) - - `"stackLimit": integer` - - Exceeding stackLimit (recursive depth of `readValue()`) will - cause an exception. - - This is a security issue (seg-faults caused by deeply nested JSON), - so the default is low. - - `"failIfExtra": false or true` - - If true, `parse()` returns false when extra non-whitespace trails - the JSON value in the input string. - - `"rejectDupKeys": false or true` - - If true, `parse()` returns false when a key is duplicated within an object. - - `"allowSpecialFloats": false or true` - - If true, special float values (NaNs and infinities) are allowed - and their values are lossfree restorable. - - You can examine 'settings_` yourself - to see the defaults. You can also write and read them just like any - JSON Value. - \sa setDefaults() - */ - Json::Value settings_; - - CharReaderBuilder(); - ~CharReaderBuilder() override; - - CharReader* newCharReader() const override; - - /** \return true if 'settings' are legal and consistent; - * otherwise, indicate bad settings via 'invalid'. - */ - bool validate(Json::Value* invalid) const; - - /** A simple way to update a specific setting. - */ - Value& operator[](std::string key); - - /** Called by ctor, but you can use this to reset settings_. - * \pre 'settings' != NULL (but Json::null is fine) - * \remark Defaults: - * \snippet src/lib_json/json_reader.cpp CharReaderBuilderDefaults - */ - static void setDefaults(Json::Value* settings); - /** Same as old Features::strictMode(). - * \pre 'settings' != NULL (but Json::null is fine) - * \remark Defaults: - * \snippet src/lib_json/json_reader.cpp CharReaderBuilderStrictMode - */ - static void strictMode(Json::Value* settings); -}; - -/** Consume entire stream and use its begin/end. - * Someday we might have a real StreamReader, but for now this - * is convenient. - */ -bool JSON_API parseFromStream( - CharReader::Factory const&, - std::istream&, - Value* root, std::string* errs); - -/** \brief Read from 'sin' into 'root'. - - Always keep comments from the input JSON. - - This can be used to read a file into a particular sub-object. - For example: - \code - Json::Value root; - cin >> root["dir"]["file"]; - cout << root; - \endcode - Result: - \verbatim - { - "dir": { - "file": { - // The input stream JSON would be nested here. - } - } - } - \endverbatim - \throw std::exception on parse error. - \see Json::operator<<() -*/ -JSON_API std::istream& operator>>(std::istream&, Value&); - -} // namespace Json - -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(pop) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -#endif // CPPTL_JSON_READER_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/reader.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/writer.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef JSON_WRITER_H_INCLUDED -#define JSON_WRITER_H_INCLUDED - -#if !defined(JSON_IS_AMALGAMATION) -#include "value.h" -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include - -// Disable warning C4251: : needs to have dll-interface to -// be used by... -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(push) -#pragma warning(disable : 4251) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -namespace Json { - -class Value; - -/** - -Usage: -\code - using namespace Json; - void writeToStdout(StreamWriter::Factory const& factory, Value const& value) { - std::unique_ptr const writer( - factory.newStreamWriter()); - writer->write(value, &std::cout); - std::cout << std::endl; // add lf and flush - } -\endcode -*/ -class JSON_API StreamWriter { -protected: - std::ostream* sout_; // not owned; will not delete -public: - StreamWriter(); - virtual ~StreamWriter(); - /** Write Value into document as configured in sub-class. - Do not take ownership of sout, but maintain a reference during function. - \pre sout != NULL - \return zero on success (For now, we always return zero, so check the stream instead.) - \throw std::exception possibly, depending on configuration - */ - virtual int write(Value const& root, std::ostream* sout) = 0; - - /** \brief A simple abstract factory. - */ - class JSON_API Factory { - public: - virtual ~Factory(); - /** \brief Allocate a CharReader via operator new(). - * \throw std::exception if something goes wrong (e.g. invalid settings) - */ - virtual StreamWriter* newStreamWriter() const = 0; - }; // Factory -}; // StreamWriter - -/** \brief Write into stringstream, then return string, for convenience. - * A StreamWriter will be created from the factory, used, and then deleted. - */ -std::string JSON_API writeString(StreamWriter::Factory const& factory, Value const& root); - - -/** \brief Build a StreamWriter implementation. - -Usage: -\code - using namespace Json; - Value value = ...; - StreamWriterBuilder builder; - builder["commentStyle"] = "None"; - builder["indentation"] = " "; // or whatever you like - std::unique_ptr writer( - builder.newStreamWriter()); - writer->write(value, &std::cout); - std::cout << std::endl; // add lf and flush -\endcode -*/ -class JSON_API StreamWriterBuilder : public StreamWriter::Factory { -public: - // Note: We use a Json::Value so that we can add data-members to this class - // without a major version bump. - /** Configuration of this builder. - Available settings (case-sensitive): - - "commentStyle": "None" or "All" - - "indentation": "" - - "enableYAMLCompatibility": false or true - - slightly change the whitespace around colons - - "dropNullPlaceholders": false or true - - Drop the "null" string from the writer's output for nullValues. - Strictly speaking, this is not valid JSON. But when the output is being - fed to a browser's Javascript, it makes for smaller output and the - browser can handle the output just fine. - - "useSpecialFloats": false or true - - If true, outputs non-finite floating point values in the following way: - NaN values as "NaN", positive infinity as "Infinity", and negative infinity - as "-Infinity". - - You can examine 'settings_` yourself - to see the defaults. You can also write and read them just like any - JSON Value. - \sa setDefaults() - */ - Json::Value settings_; - - StreamWriterBuilder(); - ~StreamWriterBuilder() override; - - /** - * \throw std::exception if something goes wrong (e.g. invalid settings) - */ - StreamWriter* newStreamWriter() const override; - - /** \return true if 'settings' are legal and consistent; - * otherwise, indicate bad settings via 'invalid'. - */ - bool validate(Json::Value* invalid) const; - /** A simple way to update a specific setting. - */ - Value& operator[](std::string key); - - /** Called by ctor, but you can use this to reset settings_. - * \pre 'settings' != NULL (but Json::null is fine) - * \remark Defaults: - * \snippet src/lib_json/json_writer.cpp StreamWriterBuilderDefaults - */ - static void setDefaults(Json::Value* settings); -}; - -/** \brief Abstract class for writers. - * \deprecated Use StreamWriter. (And really, this is an implementation detail.) - */ -class JSON_API Writer { -public: - virtual ~Writer(); - - virtual std::string write(const Value& root) = 0; -}; - -/** \brief Outputs a Value in JSON format - *without formatting (not human friendly). - * - * The JSON document is written in a single line. It is not intended for 'human' - *consumption, - * but may be usefull to support feature such as RPC where bandwith is limited. - * \sa Reader, Value - * \deprecated Use StreamWriterBuilder. - */ -class JSON_API FastWriter : public Writer { - -public: - FastWriter(); - ~FastWriter() override {} - - void enableYAMLCompatibility(); - - /** \brief Drop the "null" string from the writer's output for nullValues. - * Strictly speaking, this is not valid JSON. But when the output is being - * fed to a browser's Javascript, it makes for smaller output and the - * browser can handle the output just fine. - */ - void dropNullPlaceholders(); - - void omitEndingLineFeed(); - -public: // overridden from Writer - std::string write(const Value& root) override; - -private: - void writeValue(const Value& value); - - std::string document_; - bool yamlCompatiblityEnabled_; - bool dropNullPlaceholders_; - bool omitEndingLineFeed_; -}; - -/** \brief Writes a Value in JSON format in a - *human friendly way. - * - * The rules for line break and indent are as follow: - * - Object value: - * - if empty then print {} without indent and line break - * - if not empty the print '{', line break & indent, print one value per - *line - * and then unindent and line break and print '}'. - * - Array value: - * - if empty then print [] without indent and line break - * - if the array contains no object value, empty array or some other value - *types, - * and all the values fit on one lines, then print the array on a single - *line. - * - otherwise, it the values do not fit on one line, or the array contains - * object or non empty array, then print one value per line. - * - * If the Value have comments then they are outputed according to their - *#CommentPlacement. - * - * \sa Reader, Value, Value::setComment() - * \deprecated Use StreamWriterBuilder. - */ -class JSON_API StyledWriter : public Writer { -public: - StyledWriter(); - ~StyledWriter() override {} - -public: // overridden from Writer - /** \brief Serialize a Value in JSON format. - * \param root Value to serialize. - * \return String containing the JSON document that represents the root value. - */ - std::string write(const Value& root) override; - -private: - void writeValue(const Value& value); - void writeArrayValue(const Value& value); - bool isMultineArray(const Value& value); - void pushValue(const std::string& value); - void writeIndent(); - void writeWithIndent(const std::string& value); - void indent(); - void unindent(); - void writeCommentBeforeValue(const Value& root); - void writeCommentAfterValueOnSameLine(const Value& root); - bool hasCommentForValue(const Value& value); - static std::string normalizeEOL(const std::string& text); - - typedef std::vector ChildValues; - - ChildValues childValues_; - std::string document_; - std::string indentString_; - int rightMargin_; - int indentSize_; - bool addChildValues_; -}; - -/** \brief Writes a Value in JSON format in a - human friendly way, - to a stream rather than to a string. - * - * The rules for line break and indent are as follow: - * - Object value: - * - if empty then print {} without indent and line break - * - if not empty the print '{', line break & indent, print one value per - line - * and then unindent and line break and print '}'. - * - Array value: - * - if empty then print [] without indent and line break - * - if the array contains no object value, empty array or some other value - types, - * and all the values fit on one lines, then print the array on a single - line. - * - otherwise, it the values do not fit on one line, or the array contains - * object or non empty array, then print one value per line. - * - * If the Value have comments then they are outputed according to their - #CommentPlacement. - * - * \param indentation Each level will be indented by this amount extra. - * \sa Reader, Value, Value::setComment() - * \deprecated Use StreamWriterBuilder. - */ -class JSON_API StyledStreamWriter { -public: - StyledStreamWriter(std::string indentation = "\t"); - ~StyledStreamWriter() {} - -public: - /** \brief Serialize a Value in JSON format. - * \param out Stream to write to. (Can be ostringstream, e.g.) - * \param root Value to serialize. - * \note There is no point in deriving from Writer, since write() should not - * return a value. - */ - void write(std::ostream& out, const Value& root); - -private: - void writeValue(const Value& value); - void writeArrayValue(const Value& value); - bool isMultineArray(const Value& value); - void pushValue(const std::string& value); - void writeIndent(); - void writeWithIndent(const std::string& value); - void indent(); - void unindent(); - void writeCommentBeforeValue(const Value& root); - void writeCommentAfterValueOnSameLine(const Value& root); - bool hasCommentForValue(const Value& value); - static std::string normalizeEOL(const std::string& text); - - typedef std::vector ChildValues; - - ChildValues childValues_; - std::ostream* document_; - std::string indentString_; - int rightMargin_; - std::string indentation_; - bool addChildValues_ : 1; - bool indented_ : 1; -}; - -#if defined(JSON_HAS_INT64) -std::string JSON_API valueToString(Int value); -std::string JSON_API valueToString(UInt value); -#endif // if defined(JSON_HAS_INT64) -std::string JSON_API valueToString(LargestInt value); -std::string JSON_API valueToString(LargestUInt value); -std::string JSON_API valueToString(double value); -std::string JSON_API valueToString(bool value); -std::string JSON_API valueToQuotedString(const char* value); - -/// \brief Output using the StyledStreamWriter. -/// \see Json::operator>>() -JSON_API std::ostream& operator<<(std::ostream&, const Value& root); - -} // namespace Json - -#if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) -#pragma warning(pop) -#endif // if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) - -#endif // JSON_WRITER_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/writer.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: include/json/assertions.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef CPPTL_JSON_ASSERTIONS_H_INCLUDED -#define CPPTL_JSON_ASSERTIONS_H_INCLUDED - -#include -#include - -#if !defined(JSON_IS_AMALGAMATION) -#include "config.h" -#endif // if !defined(JSON_IS_AMALGAMATION) - -/** It should not be possible for a maliciously designed file to - * cause an abort() or seg-fault, so these macros are used only - * for pre-condition violations and internal logic errors. - */ -#if JSON_USE_EXCEPTION - -// @todo <= add detail about condition in exception -# define JSON_ASSERT(condition) \ - {if (!(condition)) {Json::throwLogicError( "assert json failed" );}} - -# define JSON_FAIL_MESSAGE(message) \ - { \ - std::ostringstream oss; oss << message; \ - Json::throwLogicError(oss.str()); \ - abort(); \ - } - -#else // JSON_USE_EXCEPTION - -# define JSON_ASSERT(condition) assert(condition) - -// The call to assert() will show the failure message in debug builds. In -// release builds we abort, for a core-dump or debugger. -# define JSON_FAIL_MESSAGE(message) \ - { \ - std::ostringstream oss; oss << message; \ - assert(false && oss.str().c_str()); \ - abort(); \ - } - - -#endif - -#define JSON_ASSERT_MESSAGE(condition, message) \ - if (!(condition)) { \ - JSON_FAIL_MESSAGE(message); \ - } - -#endif // CPPTL_JSON_ASSERTIONS_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: include/json/assertions.h -// ////////////////////////////////////////////////////////////////////// - - - - - -#endif //ifndef JSON_AMALGATED_H_INCLUDED diff --git a/lib/protobuf/conformance/third_party/jsoncpp/jsoncpp.cpp b/lib/protobuf/conformance/third_party/jsoncpp/jsoncpp.cpp deleted file mode 100644 index 4d3e0f2..0000000 --- a/lib/protobuf/conformance/third_party/jsoncpp/jsoncpp.cpp +++ /dev/null @@ -1,5192 +0,0 @@ -/// Json-cpp amalgated source (http://jsoncpp.sourceforge.net/). -/// It is intended to be used with #include "json/json.h" - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: LICENSE -// ////////////////////////////////////////////////////////////////////// - -/* -The JsonCpp library's source code, including accompanying documentation, -tests and demonstration applications, are licensed under the following -conditions... - -The author (Baptiste Lepilleur) explicitly disclaims copyright in all -jurisdictions which recognize such a disclaimer. In such jurisdictions, -this software is released into the Public Domain. - -In jurisdictions which do not recognize Public Domain property (e.g. Germany as of -2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is -released under the terms of the MIT License (see below). - -In jurisdictions which recognize Public Domain property, the user of this -software may choose to accept it either as 1) Public Domain, 2) under the -conditions of the MIT License (see below), or 3) under the terms of dual -Public Domain/MIT License conditions described here, as they choose. - -The MIT License is about as close to Public Domain as a license can get, and is -described in clear, concise terms at: - - http://en.wikipedia.org/wiki/MIT_License - -The full text of the MIT License follows: - -======================================================================== -Copyright (c) 2007-2010 Baptiste Lepilleur - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -======================================================================== -(END LICENSE TEXT) - -The MIT license is compatible with both the GPL and commercial -software, affording one all of the rights of Public Domain with the -minor nuisance of being required to keep the above copyright notice -and license text in the source code. Note also that by accepting the -Public Domain "license" you can re-license your copy using whatever -license you like. - -*/ - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: LICENSE -// ////////////////////////////////////////////////////////////////////// - - - - - - -#include "third_party/jsoncpp/json.h" - -#ifndef JSON_IS_AMALGAMATION -#error "Compile with -I PATH_TO_JSON_DIRECTORY" -#endif - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: src/lib_json/json_tool.h -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#ifndef LIB_JSONCPP_JSON_TOOL_H_INCLUDED -#define LIB_JSONCPP_JSON_TOOL_H_INCLUDED - -/* This header provides common string manipulation support, such as UTF-8, - * portable conversion from/to string... - * - * It is an internal header that must not be exposed. - */ - -namespace Json { - -/// Converts a unicode code-point to UTF-8. -static inline std::string codePointToUTF8(unsigned int cp) { - std::string result; - - // based on description from http://en.wikipedia.org/wiki/UTF-8 - - if (cp <= 0x7f) { - result.resize(1); - result[0] = static_cast(cp); - } else if (cp <= 0x7FF) { - result.resize(2); - result[1] = static_cast(0x80 | (0x3f & cp)); - result[0] = static_cast(0xC0 | (0x1f & (cp >> 6))); - } else if (cp <= 0xFFFF) { - result.resize(3); - result[2] = static_cast(0x80 | (0x3f & cp)); - result[1] = static_cast(0x80 | (0x3f & (cp >> 6))); - result[0] = static_cast(0xE0 | (0xf & (cp >> 12))); - } else if (cp <= 0x10FFFF) { - result.resize(4); - result[3] = static_cast(0x80 | (0x3f & cp)); - result[2] = static_cast(0x80 | (0x3f & (cp >> 6))); - result[1] = static_cast(0x80 | (0x3f & (cp >> 12))); - result[0] = static_cast(0xF0 | (0x7 & (cp >> 18))); - } - - return result; -} - -/// Returns true if ch is a control character (in range [1,31]). -static inline bool isControlCharacter(char ch) { return ch > 0 && ch <= 0x1F; } - -enum { - /// Constant that specify the size of the buffer that must be passed to - /// uintToString. - uintToStringBufferSize = 3 * sizeof(LargestUInt) + 1 -}; - -// Defines a char buffer for use with uintToString(). -typedef char UIntToStringBuffer[uintToStringBufferSize]; - -/** Converts an unsigned integer to string. - * @param value Unsigned interger to convert to string - * @param current Input/Output string buffer. - * Must have at least uintToStringBufferSize chars free. - */ -static inline void uintToString(LargestUInt value, char*& current) { - *--current = 0; - do { - *--current = static_cast(value % 10U + static_cast('0')); - value /= 10; - } while (value != 0); -} - -/** Change ',' to '.' everywhere in buffer. - * - * We had a sophisticated way, but it did not work in WinCE. - * @see https://github.com/open-source-parsers/jsoncpp/pull/9 - */ -static inline void fixNumericLocale(char* begin, char* end) { - while (begin < end) { - if (*begin == ',') { - *begin = '.'; - } - ++begin; - } -} - -} // namespace Json { - -#endif // LIB_JSONCPP_JSON_TOOL_H_INCLUDED - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: src/lib_json/json_tool.h -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: src/lib_json/json_reader.cpp -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2011 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#include "json_tool.h" -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(_MSC_VER) -#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above -#define snprintf sprintf_s -#elif _MSC_VER >= 1900 // VC++ 14.0 and above -#define snprintf std::snprintf -#else -#define snprintf _snprintf -#endif -#elif defined(__ANDROID__) || defined(__QNXNTO__) -#define snprintf snprintf -#elif __cplusplus >= 201103L -#define snprintf std::snprintf -#endif - -#if defined(__QNXNTO__) -#define sscanf std::sscanf -#endif - -#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0 -// Disable warning about strdup being deprecated. -#pragma warning(disable : 4996) -#endif - -static int const stackLimit_g = 1000; -static int stackDepth_g = 0; // see readValue() - -namespace Json { - -#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) -typedef std::unique_ptr CharReaderPtr; -#else -typedef std::auto_ptr CharReaderPtr; -#endif - -// Implementation of class Features -// //////////////////////////////// - -Features::Features() - : allowComments_(true), strictRoot_(false), - allowDroppedNullPlaceholders_(false), allowNumericKeys_(false) {} - -Features Features::all() { return Features(); } - -Features Features::strictMode() { - Features features; - features.allowComments_ = false; - features.strictRoot_ = true; - features.allowDroppedNullPlaceholders_ = false; - features.allowNumericKeys_ = false; - return features; -} - -// Implementation of class Reader -// //////////////////////////////// - -static bool containsNewLine(Reader::Location begin, Reader::Location end) { - for (; begin < end; ++begin) - if (*begin == '\n' || *begin == '\r') - return true; - return false; -} - -// Class Reader -// ////////////////////////////////////////////////////////////////// - -Reader::Reader() - : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), - lastValue_(), commentsBefore_(), features_(Features::all()), - collectComments_() {} - -Reader::Reader(const Features& features) - : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), - lastValue_(), commentsBefore_(), features_(features), collectComments_() { -} - -bool -Reader::parse(const std::string& document, Value& root, bool collectComments) { - document_ = document; - const char* begin = document_.c_str(); - const char* end = begin + document_.length(); - return parse(begin, end, root, collectComments); -} - -bool Reader::parse(std::istream& sin, Value& root, bool collectComments) { - // std::istream_iterator begin(sin); - // std::istream_iterator end; - // Those would allow streamed input from a file, if parse() were a - // template function. - - // Since std::string is reference-counted, this at least does not - // create an extra copy. - std::string doc; - std::getline(sin, doc, (char)EOF); - return parse(doc, root, collectComments); -} - -bool Reader::parse(const char* beginDoc, - const char* endDoc, - Value& root, - bool collectComments) { - if (!features_.allowComments_) { - collectComments = false; - } - - begin_ = beginDoc; - end_ = endDoc; - collectComments_ = collectComments; - current_ = begin_; - lastValueEnd_ = 0; - lastValue_ = 0; - commentsBefore_ = ""; - errors_.clear(); - while (!nodes_.empty()) - nodes_.pop(); - nodes_.push(&root); - - stackDepth_g = 0; // Yes, this is bad coding, but options are limited. - bool successful = readValue(); - Token token; - skipCommentTokens(token); - if (collectComments_ && !commentsBefore_.empty()) - root.setComment(commentsBefore_, commentAfter); - if (features_.strictRoot_) { - if (!root.isArray() && !root.isObject()) { - // Set error location to start of doc, ideally should be first token found - // in doc - token.type_ = tokenError; - token.start_ = beginDoc; - token.end_ = endDoc; - addError( - "A valid JSON document must be either an array or an object value.", - token); - return false; - } - } - return successful; -} - -bool Reader::readValue() { - // This is a non-reentrant way to support a stackLimit. Terrible! - // But this deprecated class has a security problem: Bad input can - // cause a seg-fault. This seems like a fair, binary-compatible way - // to prevent the problem. - if (stackDepth_g >= stackLimit_g) throwRuntimeError("Exceeded stackLimit in readValue()."); - ++stackDepth_g; - - Token token; - skipCommentTokens(token); - bool successful = true; - - if (collectComments_ && !commentsBefore_.empty()) { - currentValue().setComment(commentsBefore_, commentBefore); - commentsBefore_ = ""; - } - - switch (token.type_) { - case tokenObjectBegin: - successful = readObject(token); - currentValue().setOffsetLimit(current_ - begin_); - break; - case tokenArrayBegin: - successful = readArray(token); - currentValue().setOffsetLimit(current_ - begin_); - break; - case tokenNumber: - successful = decodeNumber(token); - break; - case tokenString: - successful = decodeString(token); - break; - case tokenTrue: - { - Value v(true); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenFalse: - { - Value v(false); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenNull: - { - Value v; - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenArraySeparator: - case tokenObjectEnd: - case tokenArrayEnd: - if (features_.allowDroppedNullPlaceholders_) { - // "Un-read" the current token and mark the current value as a null - // token. - current_--; - Value v; - currentValue().swapPayload(v); - currentValue().setOffsetStart(current_ - begin_ - 1); - currentValue().setOffsetLimit(current_ - begin_); - break; - } // Else, fall through... - default: - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return addError("Syntax error: value, object or array expected.", token); - } - - if (collectComments_) { - lastValueEnd_ = current_; - lastValue_ = ¤tValue(); - } - - --stackDepth_g; - return successful; -} - -void Reader::skipCommentTokens(Token& token) { - if (features_.allowComments_) { - do { - readToken(token); - } while (token.type_ == tokenComment); - } else { - readToken(token); - } -} - -bool Reader::readToken(Token& token) { - skipSpaces(); - token.start_ = current_; - Char c = getNextChar(); - bool ok = true; - switch (c) { - case '{': - token.type_ = tokenObjectBegin; - break; - case '}': - token.type_ = tokenObjectEnd; - break; - case '[': - token.type_ = tokenArrayBegin; - break; - case ']': - token.type_ = tokenArrayEnd; - break; - case '"': - token.type_ = tokenString; - ok = readString(); - break; - case '/': - token.type_ = tokenComment; - ok = readComment(); - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '-': - token.type_ = tokenNumber; - readNumber(); - break; - case 't': - token.type_ = tokenTrue; - ok = match("rue", 3); - break; - case 'f': - token.type_ = tokenFalse; - ok = match("alse", 4); - break; - case 'n': - token.type_ = tokenNull; - ok = match("ull", 3); - break; - case ',': - token.type_ = tokenArraySeparator; - break; - case ':': - token.type_ = tokenMemberSeparator; - break; - case 0: - token.type_ = tokenEndOfStream; - break; - default: - ok = false; - break; - } - if (!ok) - token.type_ = tokenError; - token.end_ = current_; - return true; -} - -void Reader::skipSpaces() { - while (current_ != end_) { - Char c = *current_; - if (c == ' ' || c == '\t' || c == '\r' || c == '\n') - ++current_; - else - break; - } -} - -bool Reader::match(Location pattern, int patternLength) { - if (end_ - current_ < patternLength) - return false; - int index = patternLength; - while (index--) - if (current_[index] != pattern[index]) - return false; - current_ += patternLength; - return true; -} - -bool Reader::readComment() { - Location commentBegin = current_ - 1; - Char c = getNextChar(); - bool successful = false; - if (c == '*') - successful = readCStyleComment(); - else if (c == '/') - successful = readCppStyleComment(); - if (!successful) - return false; - - if (collectComments_) { - CommentPlacement placement = commentBefore; - if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) { - if (c != '*' || !containsNewLine(commentBegin, current_)) - placement = commentAfterOnSameLine; - } - - addComment(commentBegin, current_, placement); - } - return true; -} - -static std::string normalizeEOL(Reader::Location begin, Reader::Location end) { - std::string normalized; - normalized.reserve(end - begin); - Reader::Location current = begin; - while (current != end) { - char c = *current++; - if (c == '\r') { - if (current != end && *current == '\n') - // convert dos EOL - ++current; - // convert Mac EOL - normalized += '\n'; - } else { - normalized += c; - } - } - return normalized; -} - -void -Reader::addComment(Location begin, Location end, CommentPlacement placement) { - assert(collectComments_); - const std::string& normalized = normalizeEOL(begin, end); - if (placement == commentAfterOnSameLine) { - assert(lastValue_ != 0); - lastValue_->setComment(normalized, placement); - } else { - commentsBefore_ += normalized; - } -} - -bool Reader::readCStyleComment() { - while (current_ != end_) { - Char c = getNextChar(); - if (c == '*' && *current_ == '/') - break; - } - return getNextChar() == '/'; -} - -bool Reader::readCppStyleComment() { - while (current_ != end_) { - Char c = getNextChar(); - if (c == '\n') - break; - if (c == '\r') { - // Consume DOS EOL. It will be normalized in addComment. - if (current_ != end_ && *current_ == '\n') - getNextChar(); - // Break on Moc OS 9 EOL. - break; - } - } - return true; -} - -void Reader::readNumber() { - const char *p = current_; - char c = '0'; // stopgap for already consumed character - // integral part - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - // fractional part - if (c == '.') { - c = (current_ = p) < end_ ? *p++ : 0; - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - } - // exponential part - if (c == 'e' || c == 'E') { - c = (current_ = p) < end_ ? *p++ : 0; - if (c == '+' || c == '-') - c = (current_ = p) < end_ ? *p++ : 0; - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - } -} - -bool Reader::readString() { - Char c = 0; - while (current_ != end_) { - c = getNextChar(); - if (c == '\\') - getNextChar(); - else if (c == '"') - break; - } - return c == '"'; -} - -bool Reader::readObject(Token& tokenStart) { - Token tokenName; - std::string name; - Value init(objectValue); - currentValue().swapPayload(init); - currentValue().setOffsetStart(tokenStart.start_ - begin_); - while (readToken(tokenName)) { - bool initialTokenOk = true; - while (tokenName.type_ == tokenComment && initialTokenOk) - initialTokenOk = readToken(tokenName); - if (!initialTokenOk) - break; - if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object - return true; - name = ""; - if (tokenName.type_ == tokenString) { - if (!decodeString(tokenName, name)) - return recoverFromError(tokenObjectEnd); - } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) { - Value numberName; - if (!decodeNumber(tokenName, numberName)) - return recoverFromError(tokenObjectEnd); - name = numberName.asString(); - } else { - break; - } - - Token colon; - if (!readToken(colon) || colon.type_ != tokenMemberSeparator) { - return addErrorAndRecover( - "Missing ':' after object member name", colon, tokenObjectEnd); - } - Value& value = currentValue()[name]; - nodes_.push(&value); - bool ok = readValue(); - nodes_.pop(); - if (!ok) // error already set - return recoverFromError(tokenObjectEnd); - - Token comma; - if (!readToken(comma) || - (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator && - comma.type_ != tokenComment)) { - return addErrorAndRecover( - "Missing ',' or '}' in object declaration", comma, tokenObjectEnd); - } - bool finalizeTokenOk = true; - while (comma.type_ == tokenComment && finalizeTokenOk) - finalizeTokenOk = readToken(comma); - if (comma.type_ == tokenObjectEnd) - return true; - } - return addErrorAndRecover( - "Missing '}' or object member name", tokenName, tokenObjectEnd); -} - -bool Reader::readArray(Token& tokenStart) { - Value init(arrayValue); - currentValue().swapPayload(init); - currentValue().setOffsetStart(tokenStart.start_ - begin_); - skipSpaces(); - if (*current_ == ']') // empty array - { - Token endArray; - readToken(endArray); - return true; - } - int index = 0; - for (;;) { - Value& value = currentValue()[index++]; - nodes_.push(&value); - bool ok = readValue(); - nodes_.pop(); - if (!ok) // error already set - return recoverFromError(tokenArrayEnd); - - Token token; - // Accept Comment after last item in the array. - ok = readToken(token); - while (token.type_ == tokenComment && ok) { - ok = readToken(token); - } - bool badTokenType = - (token.type_ != tokenArraySeparator && token.type_ != tokenArrayEnd); - if (!ok || badTokenType) { - return addErrorAndRecover( - "Missing ',' or ']' in array declaration", token, tokenArrayEnd); - } - if (token.type_ == tokenArrayEnd) - break; - } - return true; -} - -bool Reader::decodeNumber(Token& token) { - Value decoded; - if (!decodeNumber(token, decoded)) - return false; - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool Reader::decodeNumber(Token& token, Value& decoded) { - // Attempts to parse the number as an integer. If the number is - // larger than the maximum supported value of an integer then - // we decode the number as a double. - Location current = token.start_; - bool isNegative = *current == '-'; - if (isNegative) - ++current; - // TODO: Help the compiler do the div and mod at compile time or get rid of them. - Value::LargestUInt maxIntegerValue = - isNegative ? Value::LargestUInt(Value::maxLargestInt) + 1 - : Value::maxLargestUInt; - Value::LargestUInt threshold = maxIntegerValue / 10; - Value::LargestUInt value = 0; - while (current < token.end_) { - Char c = *current++; - if (c < '0' || c > '9') - return decodeDouble(token, decoded); - Value::UInt digit(c - '0'); - if (value >= threshold) { - // We've hit or exceeded the max value divided by 10 (rounded down). If - // a) we've only just touched the limit, b) this is the last digit, and - // c) it's small enough to fit in that rounding delta, we're okay. - // Otherwise treat this number as a double to avoid overflow. - if (value > threshold || current != token.end_ || - digit > maxIntegerValue % 10) { - return decodeDouble(token, decoded); - } - } - value = value * 10 + digit; - } - if (isNegative && value == maxIntegerValue) - decoded = Value::minLargestInt; - else if (isNegative) - decoded = -Value::LargestInt(value); - else if (value <= Value::LargestUInt(Value::maxInt)) - decoded = Value::LargestInt(value); - else - decoded = value; - return true; -} - -bool Reader::decodeDouble(Token& token) { - Value decoded; - if (!decodeDouble(token, decoded)) - return false; - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool Reader::decodeDouble(Token& token, Value& decoded) { - double value = 0; - std::string buffer(token.start_, token.end_); - std::istringstream is(buffer); - if (!(is >> value)) - return addError("'" + std::string(token.start_, token.end_) + - "' is not a number.", - token); - decoded = value; - return true; -} - -bool Reader::decodeString(Token& token) { - std::string decoded_string; - if (!decodeString(token, decoded_string)) - return false; - Value decoded(decoded_string); - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool Reader::decodeString(Token& token, std::string& decoded) { - decoded.reserve(token.end_ - token.start_ - 2); - Location current = token.start_ + 1; // skip '"' - Location end = token.end_ - 1; // do not include '"' - while (current != end) { - Char c = *current++; - if (c == '"') - break; - else if (c == '\\') { - if (current == end) - return addError("Empty escape sequence in string", token, current); - Char escape = *current++; - switch (escape) { - case '"': - decoded += '"'; - break; - case '/': - decoded += '/'; - break; - case '\\': - decoded += '\\'; - break; - case 'b': - decoded += '\b'; - break; - case 'f': - decoded += '\f'; - break; - case 'n': - decoded += '\n'; - break; - case 'r': - decoded += '\r'; - break; - case 't': - decoded += '\t'; - break; - case 'u': { - unsigned int unicode; - if (!decodeUnicodeCodePoint(token, current, end, unicode)) - return false; - decoded += codePointToUTF8(unicode); - } break; - default: - return addError("Bad escape sequence in string", token, current); - } - } else { - decoded += c; - } - } - return true; -} - -bool Reader::decodeUnicodeCodePoint(Token& token, - Location& current, - Location end, - unsigned int& unicode) { - - if (!decodeUnicodeEscapeSequence(token, current, end, unicode)) - return false; - if (unicode >= 0xD800 && unicode <= 0xDBFF) { - // surrogate pairs - if (end - current < 6) - return addError( - "additional six characters expected to parse unicode surrogate pair.", - token, - current); - unsigned int surrogatePair; - if (*(current++) == '\\' && *(current++) == 'u') { - if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) { - unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF); - } else - return false; - } else - return addError("expecting another \\u token to begin the second half of " - "a unicode surrogate pair", - token, - current); - } - return true; -} - -bool Reader::decodeUnicodeEscapeSequence(Token& token, - Location& current, - Location end, - unsigned int& unicode) { - if (end - current < 4) - return addError( - "Bad unicode escape sequence in string: four digits expected.", - token, - current); - unicode = 0; - for (int index = 0; index < 4; ++index) { - Char c = *current++; - unicode *= 16; - if (c >= '0' && c <= '9') - unicode += c - '0'; - else if (c >= 'a' && c <= 'f') - unicode += c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - unicode += c - 'A' + 10; - else - return addError( - "Bad unicode escape sequence in string: hexadecimal digit expected.", - token, - current); - } - return true; -} - -bool -Reader::addError(const std::string& message, Token& token, Location extra) { - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = extra; - errors_.push_back(info); - return false; -} - -bool Reader::recoverFromError(TokenType skipUntilToken) { - int errorCount = int(errors_.size()); - Token skip; - for (;;) { - if (!readToken(skip)) - errors_.resize(errorCount); // discard errors caused by recovery - if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) - break; - } - errors_.resize(errorCount); - return false; -} - -bool Reader::addErrorAndRecover(const std::string& message, - Token& token, - TokenType skipUntilToken) { - addError(message, token); - return recoverFromError(skipUntilToken); -} - -Value& Reader::currentValue() { return *(nodes_.top()); } - -Reader::Char Reader::getNextChar() { - if (current_ == end_) - return 0; - return *current_++; -} - -void Reader::getLocationLineAndColumn(Location location, - int& line, - int& column) const { - Location current = begin_; - Location lastLineStart = current; - line = 0; - while (current < location && current != end_) { - Char c = *current++; - if (c == '\r') { - if (*current == '\n') - ++current; - lastLineStart = current; - ++line; - } else if (c == '\n') { - lastLineStart = current; - ++line; - } - } - // column & line start at 1 - column = int(location - lastLineStart) + 1; - ++line; -} - -std::string Reader::getLocationLineAndColumn(Location location) const { - int line, column; - getLocationLineAndColumn(location, line, column); - char buffer[18 + 16 + 16 + 1]; - snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column); - return buffer; -} - -// Deprecated. Preserved for backward compatibility -std::string Reader::getFormatedErrorMessages() const { - return getFormattedErrorMessages(); -} - -std::string Reader::getFormattedErrorMessages() const { - std::string formattedMessage; - for (Errors::const_iterator itError = errors_.begin(); - itError != errors_.end(); - ++itError) { - const ErrorInfo& error = *itError; - formattedMessage += - "* " + getLocationLineAndColumn(error.token_.start_) + "\n"; - formattedMessage += " " + error.message_ + "\n"; - if (error.extra_) - formattedMessage += - "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n"; - } - return formattedMessage; -} - -std::vector Reader::getStructuredErrors() const { - std::vector allErrors; - for (Errors::const_iterator itError = errors_.begin(); - itError != errors_.end(); - ++itError) { - const ErrorInfo& error = *itError; - Reader::StructuredError structured; - structured.offset_start = error.token_.start_ - begin_; - structured.offset_limit = error.token_.end_ - begin_; - structured.message = error.message_; - allErrors.push_back(structured); - } - return allErrors; -} - -bool Reader::pushError(const Value& value, const std::string& message) { - size_t length = end_ - begin_; - if(value.getOffsetStart() > length - || value.getOffsetLimit() > length) - return false; - Token token; - token.type_ = tokenError; - token.start_ = begin_ + value.getOffsetStart(); - token.end_ = end_ + value.getOffsetLimit(); - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = 0; - errors_.push_back(info); - return true; -} - -bool Reader::pushError(const Value& value, const std::string& message, const Value& extra) { - size_t length = end_ - begin_; - if(value.getOffsetStart() > length - || value.getOffsetLimit() > length - || extra.getOffsetLimit() > length) - return false; - Token token; - token.type_ = tokenError; - token.start_ = begin_ + value.getOffsetStart(); - token.end_ = begin_ + value.getOffsetLimit(); - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = begin_ + extra.getOffsetStart(); - errors_.push_back(info); - return true; -} - -bool Reader::good() const { - return !errors_.size(); -} - -// exact copy of Features -class OurFeatures { -public: - static OurFeatures all(); - bool allowComments_; - bool strictRoot_; - bool allowDroppedNullPlaceholders_; - bool allowNumericKeys_; - bool allowSingleQuotes_; - bool failIfExtra_; - bool rejectDupKeys_; - bool allowSpecialFloats_; - int stackLimit_; -}; // OurFeatures - -// exact copy of Implementation of class Features -// //////////////////////////////// - -OurFeatures OurFeatures::all() { return OurFeatures(); } - -// Implementation of class Reader -// //////////////////////////////// - -// exact copy of Reader, renamed to OurReader -class OurReader { -public: - typedef char Char; - typedef const Char* Location; - struct StructuredError { - size_t offset_start; - size_t offset_limit; - std::string message; - }; - - OurReader(OurFeatures const& features); - bool parse(const char* beginDoc, - const char* endDoc, - Value& root, - bool collectComments = true); - std::string getFormattedErrorMessages() const; - std::vector getStructuredErrors() const; - bool pushError(const Value& value, const std::string& message); - bool pushError(const Value& value, const std::string& message, const Value& extra); - bool good() const; - -private: - OurReader(OurReader const&); // no impl - void operator=(OurReader const&); // no impl - - enum TokenType { - tokenEndOfStream = 0, - tokenObjectBegin, - tokenObjectEnd, - tokenArrayBegin, - tokenArrayEnd, - tokenString, - tokenNumber, - tokenTrue, - tokenFalse, - tokenNull, - tokenNaN, - tokenPosInf, - tokenNegInf, - tokenArraySeparator, - tokenMemberSeparator, - tokenComment, - tokenError - }; - - class Token { - public: - TokenType type_; - Location start_; - Location end_; - }; - - class ErrorInfo { - public: - Token token_; - std::string message_; - Location extra_; - }; - - typedef std::deque Errors; - - bool readToken(Token& token); - void skipSpaces(); - bool match(Location pattern, int patternLength); - bool readComment(); - bool readCStyleComment(); - bool readCppStyleComment(); - bool readString(); - bool readStringSingleQuote(); - bool readNumber(bool checkInf); - bool readValue(); - bool readObject(Token& token); - bool readArray(Token& token); - bool decodeNumber(Token& token); - bool decodeNumber(Token& token, Value& decoded); - bool decodeString(Token& token); - bool decodeString(Token& token, std::string& decoded); - bool decodeDouble(Token& token); - bool decodeDouble(Token& token, Value& decoded); - bool decodeUnicodeCodePoint(Token& token, - Location& current, - Location end, - unsigned int& unicode); - bool decodeUnicodeEscapeSequence(Token& token, - Location& current, - Location end, - unsigned int& unicode); - bool addError(const std::string& message, Token& token, Location extra = 0); - bool recoverFromError(TokenType skipUntilToken); - bool addErrorAndRecover(const std::string& message, - Token& token, - TokenType skipUntilToken); - void skipUntilSpace(); - Value& currentValue(); - Char getNextChar(); - void - getLocationLineAndColumn(Location location, int& line, int& column) const; - std::string getLocationLineAndColumn(Location location) const; - void addComment(Location begin, Location end, CommentPlacement placement); - void skipCommentTokens(Token& token); - - typedef std::stack Nodes; - Nodes nodes_; - Errors errors_; - std::string document_; - Location begin_; - Location end_; - Location current_; - Location lastValueEnd_; - Value* lastValue_; - std::string commentsBefore_; - int stackDepth_; - - OurFeatures const features_; - bool collectComments_; -}; // OurReader - -// complete copy of Read impl, for OurReader - -OurReader::OurReader(OurFeatures const& features) - : errors_(), document_(), begin_(), end_(), current_(), lastValueEnd_(), - lastValue_(), commentsBefore_(), - stackDepth_(0), - features_(features), collectComments_() { -} - -bool OurReader::parse(const char* beginDoc, - const char* endDoc, - Value& root, - bool collectComments) { - if (!features_.allowComments_) { - collectComments = false; - } - - begin_ = beginDoc; - end_ = endDoc; - collectComments_ = collectComments; - current_ = begin_; - lastValueEnd_ = 0; - lastValue_ = 0; - commentsBefore_ = ""; - errors_.clear(); - while (!nodes_.empty()) - nodes_.pop(); - nodes_.push(&root); - - stackDepth_ = 0; - bool successful = readValue(); - Token token; - skipCommentTokens(token); - if (features_.failIfExtra_) { - if (token.type_ != tokenError && token.type_ != tokenEndOfStream) { - addError("Extra non-whitespace after JSON value.", token); - return false; - } - } - if (collectComments_ && !commentsBefore_.empty()) - root.setComment(commentsBefore_, commentAfter); - if (features_.strictRoot_) { - if (!root.isArray() && !root.isObject()) { - // Set error location to start of doc, ideally should be first token found - // in doc - token.type_ = tokenError; - token.start_ = beginDoc; - token.end_ = endDoc; - addError( - "A valid JSON document must be either an array or an object value.", - token); - return false; - } - } - return successful; -} - -bool OurReader::readValue() { - if (stackDepth_ >= features_.stackLimit_) throwRuntimeError("Exceeded stackLimit in readValue()."); - ++stackDepth_; - Token token; - skipCommentTokens(token); - bool successful = true; - - if (collectComments_ && !commentsBefore_.empty()) { - currentValue().setComment(commentsBefore_, commentBefore); - commentsBefore_ = ""; - } - - switch (token.type_) { - case tokenObjectBegin: - successful = readObject(token); - currentValue().setOffsetLimit(current_ - begin_); - break; - case tokenArrayBegin: - successful = readArray(token); - currentValue().setOffsetLimit(current_ - begin_); - break; - case tokenNumber: - successful = decodeNumber(token); - break; - case tokenString: - successful = decodeString(token); - break; - case tokenTrue: - { - Value v(true); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenFalse: - { - Value v(false); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenNull: - { - Value v; - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenNaN: - { - Value v(std::numeric_limits::quiet_NaN()); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenPosInf: - { - Value v(std::numeric_limits::infinity()); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenNegInf: - { - Value v(-std::numeric_limits::infinity()); - currentValue().swapPayload(v); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - } - break; - case tokenArraySeparator: - case tokenObjectEnd: - case tokenArrayEnd: - if (features_.allowDroppedNullPlaceholders_) { - // "Un-read" the current token and mark the current value as a null - // token. - current_--; - Value v; - currentValue().swapPayload(v); - currentValue().setOffsetStart(current_ - begin_ - 1); - currentValue().setOffsetLimit(current_ - begin_); - break; - } // else, fall through ... - default: - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return addError("Syntax error: value, object or array expected.", token); - } - - if (collectComments_) { - lastValueEnd_ = current_; - lastValue_ = ¤tValue(); - } - - --stackDepth_; - return successful; -} - -void OurReader::skipCommentTokens(Token& token) { - if (features_.allowComments_) { - do { - readToken(token); - } while (token.type_ == tokenComment); - } else { - readToken(token); - } -} - -bool OurReader::readToken(Token& token) { - skipSpaces(); - token.start_ = current_; - Char c = getNextChar(); - bool ok = true; - switch (c) { - case '{': - token.type_ = tokenObjectBegin; - break; - case '}': - token.type_ = tokenObjectEnd; - break; - case '[': - token.type_ = tokenArrayBegin; - break; - case ']': - token.type_ = tokenArrayEnd; - break; - case '"': - token.type_ = tokenString; - ok = readString(); - break; - case '\'': - if (features_.allowSingleQuotes_) { - token.type_ = tokenString; - ok = readStringSingleQuote(); - break; - } // else continue - case '/': - token.type_ = tokenComment; - ok = readComment(); - break; - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - token.type_ = tokenNumber; - readNumber(false); - break; - case '-': - if (readNumber(true)) { - token.type_ = tokenNumber; - } else { - token.type_ = tokenNegInf; - ok = features_.allowSpecialFloats_ && match("nfinity", 7); - } - break; - case 't': - token.type_ = tokenTrue; - ok = match("rue", 3); - break; - case 'f': - token.type_ = tokenFalse; - ok = match("alse", 4); - break; - case 'n': - token.type_ = tokenNull; - ok = match("ull", 3); - break; - case 'N': - if (features_.allowSpecialFloats_) { - token.type_ = tokenNaN; - ok = match("aN", 2); - } else { - ok = false; - } - break; - case 'I': - if (features_.allowSpecialFloats_) { - token.type_ = tokenPosInf; - ok = match("nfinity", 7); - } else { - ok = false; - } - break; - case ',': - token.type_ = tokenArraySeparator; - break; - case ':': - token.type_ = tokenMemberSeparator; - break; - case 0: - token.type_ = tokenEndOfStream; - break; - default: - ok = false; - break; - } - if (!ok) - token.type_ = tokenError; - token.end_ = current_; - return true; -} - -void OurReader::skipSpaces() { - while (current_ != end_) { - Char c = *current_; - if (c == ' ' || c == '\t' || c == '\r' || c == '\n') - ++current_; - else - break; - } -} - -bool OurReader::match(Location pattern, int patternLength) { - if (end_ - current_ < patternLength) - return false; - int index = patternLength; - while (index--) - if (current_[index] != pattern[index]) - return false; - current_ += patternLength; - return true; -} - -bool OurReader::readComment() { - Location commentBegin = current_ - 1; - Char c = getNextChar(); - bool successful = false; - if (c == '*') - successful = readCStyleComment(); - else if (c == '/') - successful = readCppStyleComment(); - if (!successful) - return false; - - if (collectComments_) { - CommentPlacement placement = commentBefore; - if (lastValueEnd_ && !containsNewLine(lastValueEnd_, commentBegin)) { - if (c != '*' || !containsNewLine(commentBegin, current_)) - placement = commentAfterOnSameLine; - } - - addComment(commentBegin, current_, placement); - } - return true; -} - -void -OurReader::addComment(Location begin, Location end, CommentPlacement placement) { - assert(collectComments_); - const std::string& normalized = normalizeEOL(begin, end); - if (placement == commentAfterOnSameLine) { - assert(lastValue_ != 0); - lastValue_->setComment(normalized, placement); - } else { - commentsBefore_ += normalized; - } -} - -bool OurReader::readCStyleComment() { - while (current_ != end_) { - Char c = getNextChar(); - if (c == '*' && *current_ == '/') - break; - } - return getNextChar() == '/'; -} - -bool OurReader::readCppStyleComment() { - while (current_ != end_) { - Char c = getNextChar(); - if (c == '\n') - break; - if (c == '\r') { - // Consume DOS EOL. It will be normalized in addComment. - if (current_ != end_ && *current_ == '\n') - getNextChar(); - // Break on Moc OS 9 EOL. - break; - } - } - return true; -} - -bool OurReader::readNumber(bool checkInf) { - const char *p = current_; - if (checkInf && p != end_ && *p == 'I') { - current_ = ++p; - return false; - } - char c = '0'; // stopgap for already consumed character - // integral part - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - // fractional part - if (c == '.') { - c = (current_ = p) < end_ ? *p++ : 0; - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - } - // exponential part - if (c == 'e' || c == 'E') { - c = (current_ = p) < end_ ? *p++ : 0; - if (c == '+' || c == '-') - c = (current_ = p) < end_ ? *p++ : 0; - while (c >= '0' && c <= '9') - c = (current_ = p) < end_ ? *p++ : 0; - } - return true; -} -bool OurReader::readString() { - Char c = 0; - while (current_ != end_) { - c = getNextChar(); - if (c == '\\') - getNextChar(); - else if (c == '"') - break; - } - return c == '"'; -} - - -bool OurReader::readStringSingleQuote() { - Char c = 0; - while (current_ != end_) { - c = getNextChar(); - if (c == '\\') - getNextChar(); - else if (c == '\'') - break; - } - return c == '\''; -} - -bool OurReader::readObject(Token& tokenStart) { - Token tokenName; - std::string name; - Value init(objectValue); - currentValue().swapPayload(init); - currentValue().setOffsetStart(tokenStart.start_ - begin_); - while (readToken(tokenName)) { - bool initialTokenOk = true; - while (tokenName.type_ == tokenComment && initialTokenOk) - initialTokenOk = readToken(tokenName); - if (!initialTokenOk) - break; - if (tokenName.type_ == tokenObjectEnd && name.empty()) // empty object - return true; - name = ""; - if (tokenName.type_ == tokenString) { - if (!decodeString(tokenName, name)) - return recoverFromError(tokenObjectEnd); - } else if (tokenName.type_ == tokenNumber && features_.allowNumericKeys_) { - Value numberName; - if (!decodeNumber(tokenName, numberName)) - return recoverFromError(tokenObjectEnd); - name = numberName.asString(); - } else { - break; - } - - Token colon; - if (!readToken(colon) || colon.type_ != tokenMemberSeparator) { - return addErrorAndRecover( - "Missing ':' after object member name", colon, tokenObjectEnd); - } - if (name.length() >= (1U<<30)) throwRuntimeError("keylength >= 2^30"); - if (features_.rejectDupKeys_ && currentValue().isMember(name)) { - std::string msg = "Duplicate key: '" + name + "'"; - return addErrorAndRecover( - msg, tokenName, tokenObjectEnd); - } - Value& value = currentValue()[name]; - nodes_.push(&value); - bool ok = readValue(); - nodes_.pop(); - if (!ok) // error already set - return recoverFromError(tokenObjectEnd); - - Token comma; - if (!readToken(comma) || - (comma.type_ != tokenObjectEnd && comma.type_ != tokenArraySeparator && - comma.type_ != tokenComment)) { - return addErrorAndRecover( - "Missing ',' or '}' in object declaration", comma, tokenObjectEnd); - } - bool finalizeTokenOk = true; - while (comma.type_ == tokenComment && finalizeTokenOk) - finalizeTokenOk = readToken(comma); - if (comma.type_ == tokenObjectEnd) - return true; - } - return addErrorAndRecover( - "Missing '}' or object member name", tokenName, tokenObjectEnd); -} - -bool OurReader::readArray(Token& tokenStart) { - Value init(arrayValue); - currentValue().swapPayload(init); - currentValue().setOffsetStart(tokenStart.start_ - begin_); - skipSpaces(); - if (*current_ == ']') // empty array - { - Token endArray; - readToken(endArray); - return true; - } - int index = 0; - for (;;) { - Value& value = currentValue()[index++]; - nodes_.push(&value); - bool ok = readValue(); - nodes_.pop(); - if (!ok) // error already set - return recoverFromError(tokenArrayEnd); - - Token token; - // Accept Comment after last item in the array. - ok = readToken(token); - while (token.type_ == tokenComment && ok) { - ok = readToken(token); - } - bool badTokenType = - (token.type_ != tokenArraySeparator && token.type_ != tokenArrayEnd); - if (!ok || badTokenType) { - return addErrorAndRecover( - "Missing ',' or ']' in array declaration", token, tokenArrayEnd); - } - if (token.type_ == tokenArrayEnd) - break; - } - return true; -} - -bool OurReader::decodeNumber(Token& token) { - Value decoded; - if (!decodeNumber(token, decoded)) - return false; - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool OurReader::decodeNumber(Token& token, Value& decoded) { - // Attempts to parse the number as an integer. If the number is - // larger than the maximum supported value of an integer then - // we decode the number as a double. - Location current = token.start_; - bool isNegative = *current == '-'; - if (isNegative) - ++current; - // TODO: Help the compiler do the div and mod at compile time or get rid of them. - Value::LargestUInt maxIntegerValue = - isNegative ? Value::LargestUInt(-Value::minLargestInt) - : Value::maxLargestUInt; - Value::LargestUInt threshold = maxIntegerValue / 10; - Value::LargestUInt value = 0; - while (current < token.end_) { - Char c = *current++; - if (c < '0' || c > '9') - return decodeDouble(token, decoded); - Value::UInt digit(c - '0'); - if (value >= threshold) { - // We've hit or exceeded the max value divided by 10 (rounded down). If - // a) we've only just touched the limit, b) this is the last digit, and - // c) it's small enough to fit in that rounding delta, we're okay. - // Otherwise treat this number as a double to avoid overflow. - if (value > threshold || current != token.end_ || - digit > maxIntegerValue % 10) { - return decodeDouble(token, decoded); - } - } - value = value * 10 + digit; - } - if (isNegative) - decoded = -Value::LargestInt(value); - else if (value <= Value::LargestUInt(Value::maxInt)) - decoded = Value::LargestInt(value); - else - decoded = value; - return true; -} - -bool OurReader::decodeDouble(Token& token) { - Value decoded; - if (!decodeDouble(token, decoded)) - return false; - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool OurReader::decodeDouble(Token& token, Value& decoded) { - double value = 0; - const int bufferSize = 32; - int count; - int length = int(token.end_ - token.start_); - - // Sanity check to avoid buffer overflow exploits. - if (length < 0) { - return addError("Unable to parse token length", token); - } - - // Avoid using a string constant for the format control string given to - // sscanf, as this can cause hard to debug crashes on OS X. See here for more - // info: - // - // http://developer.apple.com/library/mac/#DOCUMENTATION/DeveloperTools/gcc-4.0.1/gcc/Incompatibilities.html - char format[] = "%lf"; - - if (length <= bufferSize) { - Char buffer[bufferSize + 1]; - memcpy(buffer, token.start_, length); - buffer[length] = 0; - count = sscanf(buffer, format, &value); - } else { - std::string buffer(token.start_, token.end_); - count = sscanf(buffer.c_str(), format, &value); - } - - if (count != 1) - return addError("'" + std::string(token.start_, token.end_) + - "' is not a number.", - token); - decoded = value; - return true; -} - -bool OurReader::decodeString(Token& token) { - std::string decoded_string; - if (!decodeString(token, decoded_string)) - return false; - Value decoded(decoded_string); - currentValue().swapPayload(decoded); - currentValue().setOffsetStart(token.start_ - begin_); - currentValue().setOffsetLimit(token.end_ - begin_); - return true; -} - -bool OurReader::decodeString(Token& token, std::string& decoded) { - decoded.reserve(token.end_ - token.start_ - 2); - Location current = token.start_ + 1; // skip '"' - Location end = token.end_ - 1; // do not include '"' - while (current != end) { - Char c = *current++; - if (c == '"') - break; - else if (c == '\\') { - if (current == end) - return addError("Empty escape sequence in string", token, current); - Char escape = *current++; - switch (escape) { - case '"': - decoded += '"'; - break; - case '/': - decoded += '/'; - break; - case '\\': - decoded += '\\'; - break; - case 'b': - decoded += '\b'; - break; - case 'f': - decoded += '\f'; - break; - case 'n': - decoded += '\n'; - break; - case 'r': - decoded += '\r'; - break; - case 't': - decoded += '\t'; - break; - case 'u': { - unsigned int unicode; - if (!decodeUnicodeCodePoint(token, current, end, unicode)) - return false; - decoded += codePointToUTF8(unicode); - } break; - default: - return addError("Bad escape sequence in string", token, current); - } - } else { - decoded += c; - } - } - return true; -} - -bool OurReader::decodeUnicodeCodePoint(Token& token, - Location& current, - Location end, - unsigned int& unicode) { - - if (!decodeUnicodeEscapeSequence(token, current, end, unicode)) - return false; - if (unicode >= 0xD800 && unicode <= 0xDBFF) { - // surrogate pairs - if (end - current < 6) - return addError( - "additional six characters expected to parse unicode surrogate pair.", - token, - current); - unsigned int surrogatePair; - if (*(current++) == '\\' && *(current++) == 'u') { - if (decodeUnicodeEscapeSequence(token, current, end, surrogatePair)) { - unicode = 0x10000 + ((unicode & 0x3FF) << 10) + (surrogatePair & 0x3FF); - } else - return false; - } else - return addError("expecting another \\u token to begin the second half of " - "a unicode surrogate pair", - token, - current); - } - return true; -} - -bool OurReader::decodeUnicodeEscapeSequence(Token& token, - Location& current, - Location end, - unsigned int& unicode) { - if (end - current < 4) - return addError( - "Bad unicode escape sequence in string: four digits expected.", - token, - current); - unicode = 0; - for (int index = 0; index < 4; ++index) { - Char c = *current++; - unicode *= 16; - if (c >= '0' && c <= '9') - unicode += c - '0'; - else if (c >= 'a' && c <= 'f') - unicode += c - 'a' + 10; - else if (c >= 'A' && c <= 'F') - unicode += c - 'A' + 10; - else - return addError( - "Bad unicode escape sequence in string: hexadecimal digit expected.", - token, - current); - } - return true; -} - -bool -OurReader::addError(const std::string& message, Token& token, Location extra) { - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = extra; - errors_.push_back(info); - return false; -} - -bool OurReader::recoverFromError(TokenType skipUntilToken) { - int errorCount = int(errors_.size()); - Token skip; - for (;;) { - if (!readToken(skip)) - errors_.resize(errorCount); // discard errors caused by recovery - if (skip.type_ == skipUntilToken || skip.type_ == tokenEndOfStream) - break; - } - errors_.resize(errorCount); - return false; -} - -bool OurReader::addErrorAndRecover(const std::string& message, - Token& token, - TokenType skipUntilToken) { - addError(message, token); - return recoverFromError(skipUntilToken); -} - -Value& OurReader::currentValue() { return *(nodes_.top()); } - -OurReader::Char OurReader::getNextChar() { - if (current_ == end_) - return 0; - return *current_++; -} - -void OurReader::getLocationLineAndColumn(Location location, - int& line, - int& column) const { - Location current = begin_; - Location lastLineStart = current; - line = 0; - while (current < location && current != end_) { - Char c = *current++; - if (c == '\r') { - if (*current == '\n') - ++current; - lastLineStart = current; - ++line; - } else if (c == '\n') { - lastLineStart = current; - ++line; - } - } - // column & line start at 1 - column = int(location - lastLineStart) + 1; - ++line; -} - -std::string OurReader::getLocationLineAndColumn(Location location) const { - int line, column; - getLocationLineAndColumn(location, line, column); - char buffer[18 + 16 + 16 + 1]; - snprintf(buffer, sizeof(buffer), "Line %d, Column %d", line, column); - return buffer; -} - -std::string OurReader::getFormattedErrorMessages() const { - std::string formattedMessage; - for (Errors::const_iterator itError = errors_.begin(); - itError != errors_.end(); - ++itError) { - const ErrorInfo& error = *itError; - formattedMessage += - "* " + getLocationLineAndColumn(error.token_.start_) + "\n"; - formattedMessage += " " + error.message_ + "\n"; - if (error.extra_) - formattedMessage += - "See " + getLocationLineAndColumn(error.extra_) + " for detail.\n"; - } - return formattedMessage; -} - -std::vector OurReader::getStructuredErrors() const { - std::vector allErrors; - for (Errors::const_iterator itError = errors_.begin(); - itError != errors_.end(); - ++itError) { - const ErrorInfo& error = *itError; - OurReader::StructuredError structured; - structured.offset_start = error.token_.start_ - begin_; - structured.offset_limit = error.token_.end_ - begin_; - structured.message = error.message_; - allErrors.push_back(structured); - } - return allErrors; -} - -bool OurReader::pushError(const Value& value, const std::string& message) { - size_t length = end_ - begin_; - if(value.getOffsetStart() > length - || value.getOffsetLimit() > length) - return false; - Token token; - token.type_ = tokenError; - token.start_ = begin_ + value.getOffsetStart(); - token.end_ = end_ + value.getOffsetLimit(); - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = 0; - errors_.push_back(info); - return true; -} - -bool OurReader::pushError(const Value& value, const std::string& message, const Value& extra) { - size_t length = end_ - begin_; - if(value.getOffsetStart() > length - || value.getOffsetLimit() > length - || extra.getOffsetLimit() > length) - return false; - Token token; - token.type_ = tokenError; - token.start_ = begin_ + value.getOffsetStart(); - token.end_ = begin_ + value.getOffsetLimit(); - ErrorInfo info; - info.token_ = token; - info.message_ = message; - info.extra_ = begin_ + extra.getOffsetStart(); - errors_.push_back(info); - return true; -} - -bool OurReader::good() const { - return !errors_.size(); -} - - -class OurCharReader : public CharReader { - bool const collectComments_; - OurReader reader_; -public: - OurCharReader( - bool collectComments, - OurFeatures const& features) - : collectComments_(collectComments) - , reader_(features) - {} - bool parse( - char const* beginDoc, char const* endDoc, - Value* root, std::string* errs) override { - bool ok = reader_.parse(beginDoc, endDoc, *root, collectComments_); - if (errs) { - *errs = reader_.getFormattedErrorMessages(); - } - return ok; - } -}; - -CharReaderBuilder::CharReaderBuilder() -{ - setDefaults(&settings_); -} -CharReaderBuilder::~CharReaderBuilder() -{} -CharReader* CharReaderBuilder::newCharReader() const -{ - bool collectComments = settings_["collectComments"].asBool(); - OurFeatures features = OurFeatures::all(); - features.allowComments_ = settings_["allowComments"].asBool(); - features.strictRoot_ = settings_["strictRoot"].asBool(); - features.allowDroppedNullPlaceholders_ = settings_["allowDroppedNullPlaceholders"].asBool(); - features.allowNumericKeys_ = settings_["allowNumericKeys"].asBool(); - features.allowSingleQuotes_ = settings_["allowSingleQuotes"].asBool(); - features.stackLimit_ = settings_["stackLimit"].asInt(); - features.failIfExtra_ = settings_["failIfExtra"].asBool(); - features.rejectDupKeys_ = settings_["rejectDupKeys"].asBool(); - features.allowSpecialFloats_ = settings_["allowSpecialFloats"].asBool(); - return new OurCharReader(collectComments, features); -} -static void getValidReaderKeys(std::set* valid_keys) -{ - valid_keys->clear(); - valid_keys->insert("collectComments"); - valid_keys->insert("allowComments"); - valid_keys->insert("strictRoot"); - valid_keys->insert("allowDroppedNullPlaceholders"); - valid_keys->insert("allowNumericKeys"); - valid_keys->insert("allowSingleQuotes"); - valid_keys->insert("stackLimit"); - valid_keys->insert("failIfExtra"); - valid_keys->insert("rejectDupKeys"); - valid_keys->insert("allowSpecialFloats"); -} -bool CharReaderBuilder::validate(Json::Value* invalid) const -{ - Json::Value my_invalid; - if (!invalid) invalid = &my_invalid; // so we do not need to test for NULL - Json::Value& inv = *invalid; - std::set valid_keys; - getValidReaderKeys(&valid_keys); - Value::Members keys = settings_.getMemberNames(); - size_t n = keys.size(); - for (size_t i = 0; i < n; ++i) { - std::string const& key = keys[i]; - if (valid_keys.find(key) == valid_keys.end()) { - inv[key] = settings_[key]; - } - } - return 0u == inv.size(); -} -Value& CharReaderBuilder::operator[](std::string key) -{ - return settings_[key]; -} -// static -void CharReaderBuilder::strictMode(Json::Value* settings) -{ -//! [CharReaderBuilderStrictMode] - (*settings)["allowComments"] = false; - (*settings)["strictRoot"] = true; - (*settings)["allowDroppedNullPlaceholders"] = false; - (*settings)["allowNumericKeys"] = false; - (*settings)["allowSingleQuotes"] = false; - (*settings)["stackLimit"] = 1000; - (*settings)["failIfExtra"] = true; - (*settings)["rejectDupKeys"] = true; - (*settings)["allowSpecialFloats"] = false; -//! [CharReaderBuilderStrictMode] -} -// static -void CharReaderBuilder::setDefaults(Json::Value* settings) -{ -//! [CharReaderBuilderDefaults] - (*settings)["collectComments"] = true; - (*settings)["allowComments"] = true; - (*settings)["strictRoot"] = false; - (*settings)["allowDroppedNullPlaceholders"] = false; - (*settings)["allowNumericKeys"] = false; - (*settings)["allowSingleQuotes"] = false; - (*settings)["stackLimit"] = 1000; - (*settings)["failIfExtra"] = false; - (*settings)["rejectDupKeys"] = false; - (*settings)["allowSpecialFloats"] = false; -//! [CharReaderBuilderDefaults] -} - -////////////////////////////////// -// global functions - -bool parseFromStream( - CharReader::Factory const& fact, std::istream& sin, - Value* root, std::string* errs) -{ - std::ostringstream ssin; - ssin << sin.rdbuf(); - std::string doc = ssin.str(); - char const* begin = doc.data(); - char const* end = begin + doc.size(); - // Note that we do not actually need a null-terminator. - CharReaderPtr const reader(fact.newCharReader()); - return reader->parse(begin, end, root, errs); -} - -std::istream& operator>>(std::istream& sin, Value& root) { - CharReaderBuilder b; - std::string errs; - bool ok = parseFromStream(b, sin, &root, &errs); - if (!ok) { - fprintf(stderr, - "Error from reader: %s", - errs.c_str()); - - throwRuntimeError(errs); - } - return sin; -} - -} // namespace Json - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: src/lib_json/json_reader.cpp -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: src/lib_json/json_valueiterator.inl -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2007-2010 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -// included by json_value.cpp - -namespace Json { - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class ValueIteratorBase -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -ValueIteratorBase::ValueIteratorBase() - : current_(), isNull_(true) { -} - -ValueIteratorBase::ValueIteratorBase( - const Value::ObjectValues::iterator& current) - : current_(current), isNull_(false) {} - -Value& ValueIteratorBase::deref() const { - return current_->second; -} - -void ValueIteratorBase::increment() { - ++current_; -} - -void ValueIteratorBase::decrement() { - --current_; -} - -ValueIteratorBase::difference_type -ValueIteratorBase::computeDistance(const SelfType& other) const { -#ifdef JSON_USE_CPPTL_SMALLMAP - return other.current_ - current_; -#else - // Iterator for null value are initialized using the default - // constructor, which initialize current_ to the default - // std::map::iterator. As begin() and end() are two instance - // of the default std::map::iterator, they can not be compared. - // To allow this, we handle this comparison specifically. - if (isNull_ && other.isNull_) { - return 0; - } - - // Usage of std::distance is not portable (does not compile with Sun Studio 12 - // RogueWave STL, - // which is the one used by default). - // Using a portable hand-made version for non random iterator instead: - // return difference_type( std::distance( current_, other.current_ ) ); - difference_type myDistance = 0; - for (Value::ObjectValues::iterator it = current_; it != other.current_; - ++it) { - ++myDistance; - } - return myDistance; -#endif -} - -bool ValueIteratorBase::isEqual(const SelfType& other) const { - if (isNull_) { - return other.isNull_; - } - return current_ == other.current_; -} - -void ValueIteratorBase::copy(const SelfType& other) { - current_ = other.current_; - isNull_ = other.isNull_; -} - -Value ValueIteratorBase::key() const { - const Value::CZString czstring = (*current_).first; - if (czstring.data()) { - if (czstring.isStaticString()) - return Value(StaticString(czstring.data())); - return Value(czstring.data(), czstring.data() + czstring.length()); - } - return Value(czstring.index()); -} - -UInt ValueIteratorBase::index() const { - const Value::CZString czstring = (*current_).first; - if (!czstring.data()) - return czstring.index(); - return Value::UInt(-1); -} - -std::string ValueIteratorBase::name() const { - char const* keey; - char const* end; - keey = memberName(&end); - if (!keey) return std::string(); - return std::string(keey, end); -} - -char const* ValueIteratorBase::memberName() const { - const char* cname = (*current_).first.data(); - return cname ? cname : ""; -} - -char const* ValueIteratorBase::memberName(char const** end) const { - const char* cname = (*current_).first.data(); - if (!cname) { - *end = NULL; - return NULL; - } - *end = cname + (*current_).first.length(); - return cname; -} - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class ValueConstIterator -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -ValueConstIterator::ValueConstIterator() {} - -ValueConstIterator::ValueConstIterator( - const Value::ObjectValues::iterator& current) - : ValueIteratorBase(current) {} - -ValueConstIterator::ValueConstIterator(ValueIterator const& other) - : ValueIteratorBase(other) {} - -ValueConstIterator& ValueConstIterator:: -operator=(const ValueIteratorBase& other) { - copy(other); - return *this; -} - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class ValueIterator -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -ValueIterator::ValueIterator() {} - -ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current) - : ValueIteratorBase(current) {} - -ValueIterator::ValueIterator(const ValueConstIterator& other) - : ValueIteratorBase(other) { - throwRuntimeError("ConstIterator to Iterator should never be allowed."); -} - -ValueIterator::ValueIterator(const ValueIterator& other) - : ValueIteratorBase(other) {} - -ValueIterator& ValueIterator::operator=(const SelfType& other) { - copy(other); - return *this; -} - -} // namespace Json - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: src/lib_json/json_valueiterator.inl -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: src/lib_json/json_value.cpp -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2011 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#include -#include -#ifdef JSON_USE_CPPTL -#include -#endif -#include // size_t -#include // min() - -#define JSON_ASSERT_UNREACHABLE assert(false) - -namespace Json { - -// This is a walkaround to avoid the static initialization of Value::null. -// kNull must be word-aligned to avoid crashing on ARM. We use an alignment of -// 8 (instead of 4) as a bit of future-proofing. -#if defined(__ARMEL__) -#define ALIGNAS(byte_alignment) __attribute__((aligned(byte_alignment))) -#else -#define ALIGNAS(byte_alignment) -#endif -static const unsigned char ALIGNAS(8) kNull[sizeof(Value)] = { 0 }; -const unsigned char& kNullRef = kNull[0]; -const Value& Value::null = reinterpret_cast(kNullRef); -const Value& Value::nullRef = null; - -const Int Value::minInt = Int(~(UInt(-1) / 2)); -const Int Value::maxInt = Int(UInt(-1) / 2); -const UInt Value::maxUInt = UInt(-1); -#if defined(JSON_HAS_INT64) -const Int64 Value::minInt64 = Int64(~(UInt64(-1) / 2)); -const Int64 Value::maxInt64 = Int64(UInt64(-1) / 2); -const UInt64 Value::maxUInt64 = UInt64(-1); -// The constant is hard-coded because some compiler have trouble -// converting Value::maxUInt64 to a double correctly (AIX/xlC). -// Assumes that UInt64 is a 64 bits integer. -static const double maxUInt64AsDouble = 18446744073709551615.0; -#endif // defined(JSON_HAS_INT64) -const LargestInt Value::minLargestInt = LargestInt(~(LargestUInt(-1) / 2)); -const LargestInt Value::maxLargestInt = LargestInt(LargestUInt(-1) / 2); -const LargestUInt Value::maxLargestUInt = LargestUInt(-1); - -#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) -template -static inline bool InRange(double d, T min, U max) { - return d >= min && d <= max; -} -#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) -static inline double integerToDouble(Json::UInt64 value) { - return static_cast(Int64(value / 2)) * 2.0 + Int64(value & 1); -} - -template static inline double integerToDouble(T value) { - return static_cast(value); -} - -template -static inline bool InRange(double d, T min, U max) { - return d >= integerToDouble(min) && d <= integerToDouble(max); -} -#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - -/** Duplicates the specified string value. - * @param value Pointer to the string to duplicate. Must be zero-terminated if - * length is "unknown". - * @param length Length of the value. if equals to unknown, then it will be - * computed using strlen(value). - * @return Pointer on the duplicate instance of string. - */ -static inline char* duplicateStringValue(const char* value, - size_t length) { - // Avoid an integer overflow in the call to malloc below by limiting length - // to a sane value. - if (length >= (size_t)Value::maxInt) - length = Value::maxInt - 1; - - char* newString = static_cast(malloc(length + 1)); - if (newString == NULL) { - throwRuntimeError( - "in Json::Value::duplicateStringValue(): " - "Failed to allocate string value buffer"); - } - memcpy(newString, value, length); - newString[length] = 0; - return newString; -} - -/* Record the length as a prefix. - */ -static inline char* duplicateAndPrefixStringValue( - const char* value, - unsigned int length) -{ - // Avoid an integer overflow in the call to malloc below by limiting length - // to a sane value. - JSON_ASSERT_MESSAGE(length <= (unsigned)Value::maxInt - sizeof(unsigned) - 1U, - "in Json::Value::duplicateAndPrefixStringValue(): " - "length too big for prefixing"); - unsigned actualLength = length + static_cast(sizeof(unsigned)) + 1U; - char* newString = static_cast(malloc(actualLength)); - if (newString == 0) { - throwRuntimeError( - "in Json::Value::duplicateAndPrefixStringValue(): " - "Failed to allocate string value buffer"); - } - *reinterpret_cast(newString) = length; - memcpy(newString + sizeof(unsigned), value, length); - newString[actualLength - 1U] = 0; // to avoid buffer over-run accidents by users later - return newString; -} -inline static void decodePrefixedString( - bool isPrefixed, char const* prefixed, - unsigned* length, char const** value) -{ - if (!isPrefixed) { - *length = static_cast(strlen(prefixed)); - *value = prefixed; - } else { - *length = *reinterpret_cast(prefixed); - *value = prefixed + sizeof(unsigned); - } -} -/** Free the string duplicated by duplicateStringValue()/duplicateAndPrefixStringValue(). - */ -static inline void releaseStringValue(char* value) { free(value); } - -} // namespace Json - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ValueInternals... -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -#if !defined(JSON_IS_AMALGAMATION) - -#include "json_valueiterator.inl" -#endif // if !defined(JSON_IS_AMALGAMATION) - -namespace Json { - -Exception::Exception(std::string const& msg) - : msg_(msg) -{} -Exception::~Exception() throw() -{} -char const* Exception::what() const throw() -{ - return msg_.c_str(); -} -RuntimeError::RuntimeError(std::string const& msg) - : Exception(msg) -{} -LogicError::LogicError(std::string const& msg) - : Exception(msg) -{} -void throwRuntimeError(std::string const& msg) -{ - throw RuntimeError(msg); -} -void throwLogicError(std::string const& msg) -{ - throw LogicError(msg); -} - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class Value::CommentInfo -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -Value::CommentInfo::CommentInfo() : comment_(0) {} - -Value::CommentInfo::~CommentInfo() { - if (comment_) - releaseStringValue(comment_); -} - -void Value::CommentInfo::setComment(const char* text, size_t len) { - if (comment_) { - releaseStringValue(comment_); - comment_ = 0; - } - JSON_ASSERT(text != 0); - JSON_ASSERT_MESSAGE( - text[0] == '\0' || text[0] == '/', - "in Json::Value::setComment(): Comments must start with /"); - // It seems that /**/ style comments are acceptable as well. - comment_ = duplicateStringValue(text, len); -} - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class Value::CZString -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -// Notes: policy_ indicates if the string was allocated when -// a string is stored. - -Value::CZString::CZString(ArrayIndex aindex) : cstr_(0), index_(aindex) {} - -Value::CZString::CZString(char const* str, unsigned ulength, DuplicationPolicy allocate) - : cstr_(str) { - // allocate != duplicate - storage_.policy_ = allocate & 0x3; - storage_.length_ = ulength & 0x3FFFFFFF; -} - -Value::CZString::CZString(const CZString& other) - : cstr_(other.storage_.policy_ != noDuplication && other.cstr_ != 0 - ? duplicateStringValue(other.cstr_, other.storage_.length_) - : other.cstr_) { - storage_.policy_ = (other.cstr_ - ? (static_cast(other.storage_.policy_) == noDuplication - ? noDuplication : duplicate) - : static_cast(other.storage_.policy_)); - storage_.length_ = other.storage_.length_; -} - -#if JSON_HAS_RVALUE_REFERENCES -Value::CZString::CZString(CZString&& other) - : cstr_(other.cstr_), index_(other.index_) { - other.cstr_ = nullptr; -} -#endif - -Value::CZString::~CZString() { - if (cstr_ && storage_.policy_ == duplicate) - releaseStringValue(const_cast(cstr_)); -} - -void Value::CZString::swap(CZString& other) { - std::swap(cstr_, other.cstr_); - std::swap(index_, other.index_); -} - -Value::CZString& Value::CZString::operator=(CZString other) { - swap(other); - return *this; -} - -bool Value::CZString::operator<(const CZString& other) const { - if (!cstr_) return index_ < other.index_; - //return strcmp(cstr_, other.cstr_) < 0; - // Assume both are strings. - unsigned this_len = this->storage_.length_; - unsigned other_len = other.storage_.length_; - unsigned min_len = std::min(this_len, other_len); - int comp = memcmp(this->cstr_, other.cstr_, min_len); - if (comp < 0) return true; - if (comp > 0) return false; - return (this_len < other_len); -} - -bool Value::CZString::operator==(const CZString& other) const { - if (!cstr_) return index_ == other.index_; - //return strcmp(cstr_, other.cstr_) == 0; - // Assume both are strings. - unsigned this_len = this->storage_.length_; - unsigned other_len = other.storage_.length_; - if (this_len != other_len) return false; - int comp = memcmp(this->cstr_, other.cstr_, this_len); - return comp == 0; -} - -ArrayIndex Value::CZString::index() const { return index_; } - -//const char* Value::CZString::c_str() const { return cstr_; } -const char* Value::CZString::data() const { return cstr_; } -unsigned Value::CZString::length() const { return storage_.length_; } -bool Value::CZString::isStaticString() const { return storage_.policy_ == noDuplication; } - -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// class Value::Value -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// -// ////////////////////////////////////////////////////////////////// - -/*! \internal Default constructor initialization must be equivalent to: - * memset( this, 0, sizeof(Value) ) - * This optimization is used in ValueInternalMap fast allocator. - */ -Value::Value(ValueType vtype) { - initBasic(vtype); - switch (vtype) { - case nullValue: - break; - case intValue: - case uintValue: - value_.int_ = 0; - break; - case realValue: - value_.real_ = 0.0; - break; - case stringValue: - value_.string_ = 0; - break; - case arrayValue: - case objectValue: - value_.map_ = new ObjectValues(); - break; - case booleanValue: - value_.bool_ = false; - break; - default: - JSON_ASSERT_UNREACHABLE; - } -} - -Value::Value(Int value) { - initBasic(intValue); - value_.int_ = value; -} - -Value::Value(UInt value) { - initBasic(uintValue); - value_.uint_ = value; -} -#if defined(JSON_HAS_INT64) -Value::Value(Int64 value) { - initBasic(intValue); - value_.int_ = value; -} -Value::Value(UInt64 value) { - initBasic(uintValue); - value_.uint_ = value; -} -#endif // defined(JSON_HAS_INT64) - -Value::Value(double value) { - initBasic(realValue); - value_.real_ = value; -} - -Value::Value(const char* value) { - initBasic(stringValue, true); - value_.string_ = duplicateAndPrefixStringValue(value, static_cast(strlen(value))); -} - -Value::Value(const char* beginValue, const char* endValue) { - initBasic(stringValue, true); - value_.string_ = - duplicateAndPrefixStringValue(beginValue, static_cast(endValue - beginValue)); -} - -Value::Value(const std::string& value) { - initBasic(stringValue, true); - value_.string_ = - duplicateAndPrefixStringValue(value.data(), static_cast(value.length())); -} - -Value::Value(const StaticString& value) { - initBasic(stringValue); - value_.string_ = const_cast(value.c_str()); -} - -#ifdef JSON_USE_CPPTL -Value::Value(const CppTL::ConstString& value) { - initBasic(stringValue, true); - value_.string_ = duplicateAndPrefixStringValue(value, static_cast(value.length())); -} -#endif - -Value::Value(bool value) { - initBasic(booleanValue); - value_.bool_ = value; -} - -Value::Value(Value const& other) - : type_(other.type_), allocated_(false) - , - comments_(0), start_(other.start_), limit_(other.limit_) -{ - switch (type_) { - case nullValue: - case intValue: - case uintValue: - case realValue: - case booleanValue: - value_ = other.value_; - break; - case stringValue: - if (other.value_.string_ && other.allocated_) { - unsigned len; - char const* str; - decodePrefixedString(other.allocated_, other.value_.string_, - &len, &str); - value_.string_ = duplicateAndPrefixStringValue(str, len); - allocated_ = true; - } else { - value_.string_ = other.value_.string_; - allocated_ = false; - } - break; - case arrayValue: - case objectValue: - value_.map_ = new ObjectValues(*other.value_.map_); - break; - default: - JSON_ASSERT_UNREACHABLE; - } - if (other.comments_) { - comments_ = new CommentInfo[numberOfCommentPlacement]; - for (int comment = 0; comment < numberOfCommentPlacement; ++comment) { - const CommentInfo& otherComment = other.comments_[comment]; - if (otherComment.comment_) - comments_[comment].setComment( - otherComment.comment_, strlen(otherComment.comment_)); - } - } -} - -#if JSON_HAS_RVALUE_REFERENCES -// Move constructor -Value::Value(Value&& other) { - initBasic(nullValue); - swap(other); -} -#endif - -Value::~Value() { - switch (type_) { - case nullValue: - case intValue: - case uintValue: - case realValue: - case booleanValue: - break; - case stringValue: - if (allocated_) - releaseStringValue(value_.string_); - break; - case arrayValue: - case objectValue: - delete value_.map_; - break; - default: - JSON_ASSERT_UNREACHABLE; - } - - if (comments_) - delete[] comments_; -} - -Value& Value::operator=(Value other) { - swap(other); - return *this; -} - -void Value::swapPayload(Value& other) { - ValueType temp = type_; - type_ = other.type_; - other.type_ = temp; - std::swap(value_, other.value_); - int temp2 = allocated_; - allocated_ = other.allocated_; - other.allocated_ = temp2 & 0x1; -} - -void Value::swap(Value& other) { - swapPayload(other); - std::swap(comments_, other.comments_); - std::swap(start_, other.start_); - std::swap(limit_, other.limit_); -} - -ValueType Value::type() const { return type_; } - -int Value::compare(const Value& other) const { - if (*this < other) - return -1; - if (*this > other) - return 1; - return 0; -} - -bool Value::operator<(const Value& other) const { - int typeDelta = type_ - other.type_; - if (typeDelta) - return typeDelta < 0 ? true : false; - switch (type_) { - case nullValue: - return false; - case intValue: - return value_.int_ < other.value_.int_; - case uintValue: - return value_.uint_ < other.value_.uint_; - case realValue: - return value_.real_ < other.value_.real_; - case booleanValue: - return value_.bool_ < other.value_.bool_; - case stringValue: - { - if ((value_.string_ == 0) || (other.value_.string_ == 0)) { - if (other.value_.string_) return true; - else return false; - } - unsigned this_len; - unsigned other_len; - char const* this_str; - char const* other_str; - decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); - decodePrefixedString(other.allocated_, other.value_.string_, &other_len, &other_str); - unsigned min_len = std::min(this_len, other_len); - int comp = memcmp(this_str, other_str, min_len); - if (comp < 0) return true; - if (comp > 0) return false; - return (this_len < other_len); - } - case arrayValue: - case objectValue: { - int delta = int(value_.map_->size() - other.value_.map_->size()); - if (delta) - return delta < 0; - return (*value_.map_) < (*other.value_.map_); - } - default: - JSON_ASSERT_UNREACHABLE; - } - return false; // unreachable -} - -bool Value::operator<=(const Value& other) const { return !(other < *this); } - -bool Value::operator>=(const Value& other) const { return !(*this < other); } - -bool Value::operator>(const Value& other) const { return other < *this; } - -bool Value::operator==(const Value& other) const { - // if ( type_ != other.type_ ) - // GCC 2.95.3 says: - // attempt to take address of bit-field structure member `Json::Value::type_' - // Beats me, but a temp solves the problem. - int temp = other.type_; - if (type_ != temp) - return false; - switch (type_) { - case nullValue: - return true; - case intValue: - return value_.int_ == other.value_.int_; - case uintValue: - return value_.uint_ == other.value_.uint_; - case realValue: - return value_.real_ == other.value_.real_; - case booleanValue: - return value_.bool_ == other.value_.bool_; - case stringValue: - { - if ((value_.string_ == 0) || (other.value_.string_ == 0)) { - return (value_.string_ == other.value_.string_); - } - unsigned this_len; - unsigned other_len; - char const* this_str; - char const* other_str; - decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); - decodePrefixedString(other.allocated_, other.value_.string_, &other_len, &other_str); - if (this_len != other_len) return false; - int comp = memcmp(this_str, other_str, this_len); - return comp == 0; - } - case arrayValue: - case objectValue: - return value_.map_->size() == other.value_.map_->size() && - (*value_.map_) == (*other.value_.map_); - default: - JSON_ASSERT_UNREACHABLE; - } - return false; // unreachable -} - -bool Value::operator!=(const Value& other) const { return !(*this == other); } - -const char* Value::asCString() const { - JSON_ASSERT_MESSAGE(type_ == stringValue, - "in Json::Value::asCString(): requires stringValue"); - if (value_.string_ == 0) return 0; - unsigned this_len; - char const* this_str; - decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); - return this_str; -} - -bool Value::getString(char const** str, char const** cend) const { - if (type_ != stringValue) return false; - if (value_.string_ == 0) return false; - unsigned length; - decodePrefixedString(this->allocated_, this->value_.string_, &length, str); - *cend = *str + length; - return true; -} - -std::string Value::asString() const { - switch (type_) { - case nullValue: - return ""; - case stringValue: - { - if (value_.string_ == 0) return ""; - unsigned this_len; - char const* this_str; - decodePrefixedString(this->allocated_, this->value_.string_, &this_len, &this_str); - return std::string(this_str, this_len); - } - case booleanValue: - return value_.bool_ ? "true" : "false"; - case intValue: - return valueToString(value_.int_); - case uintValue: - return valueToString(value_.uint_); - case realValue: - return valueToString(value_.real_); - default: - JSON_FAIL_MESSAGE("Type is not convertible to string"); - } -} - -#ifdef JSON_USE_CPPTL -CppTL::ConstString Value::asConstString() const { - unsigned len; - char const* str; - decodePrefixedString(allocated_, value_.string_, - &len, &str); - return CppTL::ConstString(str, len); -} -#endif - -Value::Int Value::asInt() const { - switch (type_) { - case intValue: - JSON_ASSERT_MESSAGE(isInt(), "LargestInt out of Int range"); - return Int(value_.int_); - case uintValue: - JSON_ASSERT_MESSAGE(isInt(), "LargestUInt out of Int range"); - return Int(value_.uint_); - case realValue: - JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt, maxInt), - "double out of Int range"); - return Int(value_.real_); - case nullValue: - return 0; - case booleanValue: - return value_.bool_ ? 1 : 0; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to Int."); -} - -Value::UInt Value::asUInt() const { - switch (type_) { - case intValue: - JSON_ASSERT_MESSAGE(isUInt(), "LargestInt out of UInt range"); - return UInt(value_.int_); - case uintValue: - JSON_ASSERT_MESSAGE(isUInt(), "LargestUInt out of UInt range"); - return UInt(value_.uint_); - case realValue: - JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt), - "double out of UInt range"); - return UInt(value_.real_); - case nullValue: - return 0; - case booleanValue: - return value_.bool_ ? 1 : 0; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to UInt."); -} - -#if defined(JSON_HAS_INT64) - -Value::Int64 Value::asInt64() const { - switch (type_) { - case intValue: - return Int64(value_.int_); - case uintValue: - JSON_ASSERT_MESSAGE(isInt64(), "LargestUInt out of Int64 range"); - return Int64(value_.uint_); - case realValue: - JSON_ASSERT_MESSAGE(InRange(value_.real_, minInt64, maxInt64), - "double out of Int64 range"); - return Int64(value_.real_); - case nullValue: - return 0; - case booleanValue: - return value_.bool_ ? 1 : 0; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to Int64."); -} - -Value::UInt64 Value::asUInt64() const { - switch (type_) { - case intValue: - JSON_ASSERT_MESSAGE(isUInt64(), "LargestInt out of UInt64 range"); - return UInt64(value_.int_); - case uintValue: - return UInt64(value_.uint_); - case realValue: - JSON_ASSERT_MESSAGE(InRange(value_.real_, 0, maxUInt64), - "double out of UInt64 range"); - return UInt64(value_.real_); - case nullValue: - return 0; - case booleanValue: - return value_.bool_ ? 1 : 0; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to UInt64."); -} -#endif // if defined(JSON_HAS_INT64) - -LargestInt Value::asLargestInt() const { -#if defined(JSON_NO_INT64) - return asInt(); -#else - return asInt64(); -#endif -} - -LargestUInt Value::asLargestUInt() const { -#if defined(JSON_NO_INT64) - return asUInt(); -#else - return asUInt64(); -#endif -} - -double Value::asDouble() const { - switch (type_) { - case intValue: - return static_cast(value_.int_); - case uintValue: -#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - return static_cast(value_.uint_); -#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - return integerToDouble(value_.uint_); -#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - case realValue: - return value_.real_; - case nullValue: - return 0.0; - case booleanValue: - return value_.bool_ ? 1.0 : 0.0; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to double."); -} - -float Value::asFloat() const { - switch (type_) { - case intValue: - return static_cast(value_.int_); - case uintValue: -#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - return static_cast(value_.uint_); -#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - return integerToDouble(value_.uint_); -#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) - case realValue: - return static_cast(value_.real_); - case nullValue: - return 0.0; - case booleanValue: - return value_.bool_ ? 1.0f : 0.0f; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to float."); -} - -bool Value::asBool() const { - switch (type_) { - case booleanValue: - return value_.bool_; - case nullValue: - return false; - case intValue: - return value_.int_ ? true : false; - case uintValue: - return value_.uint_ ? true : false; - case realValue: - // This is kind of strange. Not recommended. - return (value_.real_ != 0.0) ? true : false; - default: - break; - } - JSON_FAIL_MESSAGE("Value is not convertible to bool."); -} - -bool Value::isConvertibleTo(ValueType other) const { - switch (other) { - case nullValue: - return (isNumeric() && asDouble() == 0.0) || - (type_ == booleanValue && value_.bool_ == false) || - (type_ == stringValue && asString() == "") || - (type_ == arrayValue && value_.map_->size() == 0) || - (type_ == objectValue && value_.map_->size() == 0) || - type_ == nullValue; - case intValue: - return isInt() || - (type_ == realValue && InRange(value_.real_, minInt, maxInt)) || - type_ == booleanValue || type_ == nullValue; - case uintValue: - return isUInt() || - (type_ == realValue && InRange(value_.real_, 0, maxUInt)) || - type_ == booleanValue || type_ == nullValue; - case realValue: - return isNumeric() || type_ == booleanValue || type_ == nullValue; - case booleanValue: - return isNumeric() || type_ == booleanValue || type_ == nullValue; - case stringValue: - return isNumeric() || type_ == booleanValue || type_ == stringValue || - type_ == nullValue; - case arrayValue: - return type_ == arrayValue || type_ == nullValue; - case objectValue: - return type_ == objectValue || type_ == nullValue; - } - JSON_ASSERT_UNREACHABLE; - return false; -} - -/// Number of values in array or object -ArrayIndex Value::size() const { - switch (type_) { - case nullValue: - case intValue: - case uintValue: - case realValue: - case booleanValue: - case stringValue: - return 0; - case arrayValue: // size of the array is highest index + 1 - if (!value_.map_->empty()) { - ObjectValues::const_iterator itLast = value_.map_->end(); - --itLast; - return (*itLast).first.index() + 1; - } - return 0; - case objectValue: - return ArrayIndex(value_.map_->size()); - } - JSON_ASSERT_UNREACHABLE; - return 0; // unreachable; -} - -bool Value::empty() const { - if (isNull() || isArray() || isObject()) - return size() == 0u; - else - return false; -} - -bool Value::operator!() const { return isNull(); } - -void Value::clear() { - JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue || - type_ == objectValue, - "in Json::Value::clear(): requires complex value"); - start_ = 0; - limit_ = 0; - switch (type_) { - case arrayValue: - case objectValue: - value_.map_->clear(); - break; - default: - break; - } -} - -void Value::resize(ArrayIndex newSize) { - JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == arrayValue, - "in Json::Value::resize(): requires arrayValue"); - if (type_ == nullValue) - *this = Value(arrayValue); - ArrayIndex oldSize = size(); - if (newSize == 0) - clear(); - else if (newSize > oldSize) - (*this)[newSize - 1]; - else { - for (ArrayIndex index = newSize; index < oldSize; ++index) { - value_.map_->erase(index); - } - assert(size() == newSize); - } -} - -Value& Value::operator[](ArrayIndex index) { - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == arrayValue, - "in Json::Value::operator[](ArrayIndex): requires arrayValue"); - if (type_ == nullValue) - *this = Value(arrayValue); - CZString key(index); - ObjectValues::iterator it = value_.map_->lower_bound(key); - if (it != value_.map_->end() && (*it).first == key) - return (*it).second; - - ObjectValues::value_type defaultValue(key, nullRef); - it = value_.map_->insert(it, defaultValue); - return (*it).second; -} - -Value& Value::operator[](int index) { - JSON_ASSERT_MESSAGE( - index >= 0, - "in Json::Value::operator[](int index): index cannot be negative"); - return (*this)[ArrayIndex(index)]; -} - -const Value& Value::operator[](ArrayIndex index) const { - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == arrayValue, - "in Json::Value::operator[](ArrayIndex)const: requires arrayValue"); - if (type_ == nullValue) - return nullRef; - CZString key(index); - ObjectValues::const_iterator it = value_.map_->find(key); - if (it == value_.map_->end()) - return nullRef; - return (*it).second; -} - -const Value& Value::operator[](int index) const { - JSON_ASSERT_MESSAGE( - index >= 0, - "in Json::Value::operator[](int index) const: index cannot be negative"); - return (*this)[ArrayIndex(index)]; -} - -void Value::initBasic(ValueType vtype, bool allocated) { - type_ = vtype; - allocated_ = allocated; - comments_ = 0; - start_ = 0; - limit_ = 0; -} - -// Access an object value by name, create a null member if it does not exist. -// @pre Type of '*this' is object or null. -// @param key is null-terminated. -Value& Value::resolveReference(const char* key) { - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == objectValue, - "in Json::Value::resolveReference(): requires objectValue"); - if (type_ == nullValue) - *this = Value(objectValue); - CZString actualKey( - key, static_cast(strlen(key)), CZString::noDuplication); // NOTE! - ObjectValues::iterator it = value_.map_->lower_bound(actualKey); - if (it != value_.map_->end() && (*it).first == actualKey) - return (*it).second; - - ObjectValues::value_type defaultValue(actualKey, nullRef); - it = value_.map_->insert(it, defaultValue); - Value& value = (*it).second; - return value; -} - -// @param key is not null-terminated. -Value& Value::resolveReference(char const* key, char const* cend) -{ - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == objectValue, - "in Json::Value::resolveReference(key, end): requires objectValue"); - if (type_ == nullValue) - *this = Value(objectValue); - CZString actualKey( - key, static_cast(cend-key), CZString::duplicateOnCopy); - ObjectValues::iterator it = value_.map_->lower_bound(actualKey); - if (it != value_.map_->end() && (*it).first == actualKey) - return (*it).second; - - ObjectValues::value_type defaultValue(actualKey, nullRef); - it = value_.map_->insert(it, defaultValue); - Value& value = (*it).second; - return value; -} - -Value Value::get(ArrayIndex index, const Value& defaultValue) const { - const Value* value = &((*this)[index]); - return value == &nullRef ? defaultValue : *value; -} - -bool Value::isValidIndex(ArrayIndex index) const { return index < size(); } - -Value const* Value::find(char const* key, char const* cend) const -{ - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == objectValue, - "in Json::Value::find(key, end, found): requires objectValue or nullValue"); - if (type_ == nullValue) return NULL; - CZString actualKey(key, static_cast(cend-key), CZString::noDuplication); - ObjectValues::const_iterator it = value_.map_->find(actualKey); - if (it == value_.map_->end()) return NULL; - return &(*it).second; -} -const Value& Value::operator[](const char* key) const -{ - Value const* found = find(key, key + strlen(key)); - if (!found) return nullRef; - return *found; -} -Value const& Value::operator[](std::string const& key) const -{ - Value const* found = find(key.data(), key.data() + key.length()); - if (!found) return nullRef; - return *found; -} - -Value& Value::operator[](const char* key) { - return resolveReference(key, key + strlen(key)); -} - -Value& Value::operator[](const std::string& key) { - return resolveReference(key.data(), key.data() + key.length()); -} - -Value& Value::operator[](const StaticString& key) { - return resolveReference(key.c_str()); -} - -#ifdef JSON_USE_CPPTL -Value& Value::operator[](const CppTL::ConstString& key) { - return resolveReference(key.c_str(), key.end_c_str()); -} -Value const& Value::operator[](CppTL::ConstString const& key) const -{ - Value const* found = find(key.c_str(), key.end_c_str()); - if (!found) return nullRef; - return *found; -} -#endif - -Value& Value::append(const Value& value) { return (*this)[size()] = value; } - -Value Value::get(char const* key, char const* cend, Value const& defaultValue) const -{ - Value const* found = find(key, cend); - return !found ? defaultValue : *found; -} -Value Value::get(char const* key, Value const& defaultValue) const -{ - return get(key, key + strlen(key), defaultValue); -} -Value Value::get(std::string const& key, Value const& defaultValue) const -{ - return get(key.data(), key.data() + key.length(), defaultValue); -} - - -bool Value::removeMember(const char* key, const char* cend, Value* removed) -{ - if (type_ != objectValue) { - return false; - } - CZString actualKey(key, static_cast(cend-key), CZString::noDuplication); - ObjectValues::iterator it = value_.map_->find(actualKey); - if (it == value_.map_->end()) - return false; - *removed = it->second; - value_.map_->erase(it); - return true; -} -bool Value::removeMember(const char* key, Value* removed) -{ - return removeMember(key, key + strlen(key), removed); -} -bool Value::removeMember(std::string const& key, Value* removed) -{ - return removeMember(key.data(), key.data() + key.length(), removed); -} -Value Value::removeMember(const char* key) -{ - JSON_ASSERT_MESSAGE(type_ == nullValue || type_ == objectValue, - "in Json::Value::removeMember(): requires objectValue"); - if (type_ == nullValue) - return nullRef; - - Value removed; // null - removeMember(key, key + strlen(key), &removed); - return removed; // still null if removeMember() did nothing -} -Value Value::removeMember(const std::string& key) -{ - return removeMember(key.c_str()); -} - -bool Value::removeIndex(ArrayIndex index, Value* removed) { - if (type_ != arrayValue) { - return false; - } - CZString key(index); - ObjectValues::iterator it = value_.map_->find(key); - if (it == value_.map_->end()) { - return false; - } - *removed = it->second; - ArrayIndex oldSize = size(); - // shift left all items left, into the place of the "removed" - for (ArrayIndex i = index; i < (oldSize - 1); ++i){ - CZString keey(i); - (*value_.map_)[keey] = (*this)[i + 1]; - } - // erase the last one ("leftover") - CZString keyLast(oldSize - 1); - ObjectValues::iterator itLast = value_.map_->find(keyLast); - value_.map_->erase(itLast); - return true; -} - -#ifdef JSON_USE_CPPTL -Value Value::get(const CppTL::ConstString& key, - const Value& defaultValue) const { - return get(key.c_str(), key.end_c_str(), defaultValue); -} -#endif - -bool Value::isMember(char const* key, char const* cend) const -{ - Value const* value = find(key, cend); - return NULL != value; -} -bool Value::isMember(char const* key) const -{ - return isMember(key, key + strlen(key)); -} -bool Value::isMember(std::string const& key) const -{ - return isMember(key.data(), key.data() + key.length()); -} - -#ifdef JSON_USE_CPPTL -bool Value::isMember(const CppTL::ConstString& key) const { - return isMember(key.c_str(), key.end_c_str()); -} -#endif - -Value::Members Value::getMemberNames() const { - JSON_ASSERT_MESSAGE( - type_ == nullValue || type_ == objectValue, - "in Json::Value::getMemberNames(), value must be objectValue"); - if (type_ == nullValue) - return Value::Members(); - Members members; - members.reserve(value_.map_->size()); - ObjectValues::const_iterator it = value_.map_->begin(); - ObjectValues::const_iterator itEnd = value_.map_->end(); - for (; it != itEnd; ++it) { - members.push_back(std::string((*it).first.data(), - (*it).first.length())); - } - return members; -} -// -//# ifdef JSON_USE_CPPTL -// EnumMemberNames -// Value::enumMemberNames() const -//{ -// if ( type_ == objectValue ) -// { -// return CppTL::Enum::any( CppTL::Enum::transform( -// CppTL::Enum::keys( *(value_.map_), CppTL::Type() ), -// MemberNamesTransform() ) ); -// } -// return EnumMemberNames(); -//} -// -// -// EnumValues -// Value::enumValues() const -//{ -// if ( type_ == objectValue || type_ == arrayValue ) -// return CppTL::Enum::anyValues( *(value_.map_), -// CppTL::Type() ); -// return EnumValues(); -//} -// -//# endif - -static bool IsIntegral(double d) { - double integral_part; - return modf(d, &integral_part) == 0.0; -} - -bool Value::isNull() const { return type_ == nullValue; } - -bool Value::isBool() const { return type_ == booleanValue; } - -bool Value::isInt() const { - switch (type_) { - case intValue: - return value_.int_ >= minInt && value_.int_ <= maxInt; - case uintValue: - return value_.uint_ <= UInt(maxInt); - case realValue: - return value_.real_ >= minInt && value_.real_ <= maxInt && - IsIntegral(value_.real_); - default: - break; - } - return false; -} - -bool Value::isUInt() const { - switch (type_) { - case intValue: - return value_.int_ >= 0 && LargestUInt(value_.int_) <= LargestUInt(maxUInt); - case uintValue: - return value_.uint_ <= maxUInt; - case realValue: - return value_.real_ >= 0 && value_.real_ <= maxUInt && - IsIntegral(value_.real_); - default: - break; - } - return false; -} - -bool Value::isInt64() const { -#if defined(JSON_HAS_INT64) - switch (type_) { - case intValue: - return true; - case uintValue: - return value_.uint_ <= UInt64(maxInt64); - case realValue: - // Note that maxInt64 (= 2^63 - 1) is not exactly representable as a - // double, so double(maxInt64) will be rounded up to 2^63. Therefore we - // require the value to be strictly less than the limit. - return value_.real_ >= double(minInt64) && - value_.real_ < double(maxInt64) && IsIntegral(value_.real_); - default: - break; - } -#endif // JSON_HAS_INT64 - return false; -} - -bool Value::isUInt64() const { -#if defined(JSON_HAS_INT64) - switch (type_) { - case intValue: - return value_.int_ >= 0; - case uintValue: - return true; - case realValue: - // Note that maxUInt64 (= 2^64 - 1) is not exactly representable as a - // double, so double(maxUInt64) will be rounded up to 2^64. Therefore we - // require the value to be strictly less than the limit. - return value_.real_ >= 0 && value_.real_ < maxUInt64AsDouble && - IsIntegral(value_.real_); - default: - break; - } -#endif // JSON_HAS_INT64 - return false; -} - -bool Value::isIntegral() const { -#if defined(JSON_HAS_INT64) - return isInt64() || isUInt64(); -#else - return isInt() || isUInt(); -#endif -} - -bool Value::isDouble() const { return type_ == realValue || isIntegral(); } - -bool Value::isNumeric() const { return isIntegral() || isDouble(); } - -bool Value::isString() const { return type_ == stringValue; } - -bool Value::isArray() const { return type_ == arrayValue; } - -bool Value::isObject() const { return type_ == objectValue; } - -void Value::setComment(const char* comment, size_t len, CommentPlacement placement) { - if (!comments_) - comments_ = new CommentInfo[numberOfCommentPlacement]; - if ((len > 0) && (comment[len-1] == '\n')) { - // Always discard trailing newline, to aid indentation. - len -= 1; - } - comments_[placement].setComment(comment, len); -} - -void Value::setComment(const char* comment, CommentPlacement placement) { - setComment(comment, strlen(comment), placement); -} - -void Value::setComment(const std::string& comment, CommentPlacement placement) { - setComment(comment.c_str(), comment.length(), placement); -} - -bool Value::hasComment(CommentPlacement placement) const { - return comments_ != 0 && comments_[placement].comment_ != 0; -} - -std::string Value::getComment(CommentPlacement placement) const { - if (hasComment(placement)) - return comments_[placement].comment_; - return ""; -} - -void Value::setOffsetStart(size_t start) { start_ = start; } - -void Value::setOffsetLimit(size_t limit) { limit_ = limit; } - -size_t Value::getOffsetStart() const { return start_; } - -size_t Value::getOffsetLimit() const { return limit_; } - -std::string Value::toStyledString() const { - StyledWriter writer; - return writer.write(*this); -} - -Value::const_iterator Value::begin() const { - switch (type_) { - case arrayValue: - case objectValue: - if (value_.map_) - return const_iterator(value_.map_->begin()); - break; - default: - break; - } - return const_iterator(); -} - -Value::const_iterator Value::end() const { - switch (type_) { - case arrayValue: - case objectValue: - if (value_.map_) - return const_iterator(value_.map_->end()); - break; - default: - break; - } - return const_iterator(); -} - -Value::iterator Value::begin() { - switch (type_) { - case arrayValue: - case objectValue: - if (value_.map_) - return iterator(value_.map_->begin()); - break; - default: - break; - } - return iterator(); -} - -Value::iterator Value::end() { - switch (type_) { - case arrayValue: - case objectValue: - if (value_.map_) - return iterator(value_.map_->end()); - break; - default: - break; - } - return iterator(); -} - -// class PathArgument -// ////////////////////////////////////////////////////////////////// - -PathArgument::PathArgument() : key_(), index_(), kind_(kindNone) {} - -PathArgument::PathArgument(ArrayIndex index) - : key_(), index_(index), kind_(kindIndex) {} - -PathArgument::PathArgument(const char* key) - : key_(key), index_(), kind_(kindKey) {} - -PathArgument::PathArgument(const std::string& key) - : key_(key.c_str()), index_(), kind_(kindKey) {} - -// class Path -// ////////////////////////////////////////////////////////////////// - -Path::Path(const std::string& path, - const PathArgument& a1, - const PathArgument& a2, - const PathArgument& a3, - const PathArgument& a4, - const PathArgument& a5) { - InArgs in; - in.push_back(&a1); - in.push_back(&a2); - in.push_back(&a3); - in.push_back(&a4); - in.push_back(&a5); - makePath(path, in); -} - -void Path::makePath(const std::string& path, const InArgs& in) { - const char* current = path.c_str(); - const char* end = current + path.length(); - InArgs::const_iterator itInArg = in.begin(); - while (current != end) { - if (*current == '[') { - ++current; - if (*current == '%') - addPathInArg(path, in, itInArg, PathArgument::kindIndex); - else { - ArrayIndex index = 0; - for (; current != end && *current >= '0' && *current <= '9'; ++current) - index = index * 10 + ArrayIndex(*current - '0'); - args_.push_back(index); - } - if (current == end || *current++ != ']') - invalidPath(path, int(current - path.c_str())); - } else if (*current == '%') { - addPathInArg(path, in, itInArg, PathArgument::kindKey); - ++current; - } else if (*current == '.') { - ++current; - } else { - const char* beginName = current; - while (current != end && !strchr("[.", *current)) - ++current; - args_.push_back(std::string(beginName, current)); - } - } -} - -void Path::addPathInArg(const std::string& /*path*/, - const InArgs& in, - InArgs::const_iterator& itInArg, - PathArgument::Kind kind) { - if (itInArg == in.end()) { - // Error: missing argument %d - } else if ((*itInArg)->kind_ != kind) { - // Error: bad argument type - } else { - args_.push_back(**itInArg); - } -} - -void Path::invalidPath(const std::string& /*path*/, int /*location*/) { - // Error: invalid path. -} - -const Value& Path::resolve(const Value& root) const { - const Value* node = &root; - for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { - const PathArgument& arg = *it; - if (arg.kind_ == PathArgument::kindIndex) { - if (!node->isArray() || !node->isValidIndex(arg.index_)) { - // Error: unable to resolve path (array value expected at position... - } - node = &((*node)[arg.index_]); - } else if (arg.kind_ == PathArgument::kindKey) { - if (!node->isObject()) { - // Error: unable to resolve path (object value expected at position...) - } - node = &((*node)[arg.key_]); - if (node == &Value::nullRef) { - // Error: unable to resolve path (object has no member named '' at - // position...) - } - } - } - return *node; -} - -Value Path::resolve(const Value& root, const Value& defaultValue) const { - const Value* node = &root; - for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { - const PathArgument& arg = *it; - if (arg.kind_ == PathArgument::kindIndex) { - if (!node->isArray() || !node->isValidIndex(arg.index_)) - return defaultValue; - node = &((*node)[arg.index_]); - } else if (arg.kind_ == PathArgument::kindKey) { - if (!node->isObject()) - return defaultValue; - node = &((*node)[arg.key_]); - if (node == &Value::nullRef) - return defaultValue; - } - } - return *node; -} - -Value& Path::make(Value& root) const { - Value* node = &root; - for (Args::const_iterator it = args_.begin(); it != args_.end(); ++it) { - const PathArgument& arg = *it; - if (arg.kind_ == PathArgument::kindIndex) { - if (!node->isArray()) { - // Error: node is not an array at position ... - } - node = &((*node)[arg.index_]); - } else if (arg.kind_ == PathArgument::kindKey) { - if (!node->isObject()) { - // Error: node is not an object at position... - } - node = &((*node)[arg.key_]); - } - } - return *node; -} - -} // namespace Json - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: src/lib_json/json_value.cpp -// ////////////////////////////////////////////////////////////////////// - - - - - - -// ////////////////////////////////////////////////////////////////////// -// Beginning of content of file: src/lib_json/json_writer.cpp -// ////////////////////////////////////////////////////////////////////// - -// Copyright 2011 Baptiste Lepilleur -// Distributed under MIT license, or public domain if desired and -// recognized in your jurisdiction. -// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE - -#if !defined(JSON_IS_AMALGAMATION) -#include -#include "json_tool.h" -#endif // if !defined(JSON_IS_AMALGAMATION) -#include -#include -#include -#include -#include -#include -#include -#include - -#if defined(_MSC_VER) && _MSC_VER >= 1200 && _MSC_VER < 1800 // Between VC++ 6.0 and VC++ 11.0 -#include -#define isfinite _finite -#elif defined(__sun) && defined(__SVR4) //Solaris -#if !defined(isfinite) -#include -#define isfinite finite -#endif -#elif defined(_AIX) -#if !defined(isfinite) -#include -#define isfinite finite -#endif -#elif defined(__hpux) -#if !defined(isfinite) -#if defined(__ia64) && !defined(finite) -#define isfinite(x) ((sizeof(x) == sizeof(float) ? \ - _Isfinitef(x) : _IsFinite(x))) -#else -#include -#define isfinite finite -#endif -#endif -#else -#include -#if !(defined(__QNXNTO__)) // QNX already defines isfinite -#define isfinite std::isfinite -#endif -#endif - -#if defined(_MSC_VER) -#if !defined(WINCE) && defined(__STDC_SECURE_LIB__) && _MSC_VER >= 1500 // VC++ 9.0 and above -#define snprintf sprintf_s -#elif _MSC_VER >= 1900 // VC++ 14.0 and above -#define snprintf std::snprintf -#else -#define snprintf _snprintf -#endif -#elif defined(__ANDROID__) || defined(__QNXNTO__) -#define snprintf snprintf -#elif __cplusplus >= 201103L -#define snprintf std::snprintf -#endif - -#if defined(__BORLANDC__) -#include -#define isfinite _finite -#define snprintf _snprintf -#endif - -#if defined(_MSC_VER) && _MSC_VER >= 1400 // VC++ 8.0 -// Disable warning about strdup being deprecated. -#pragma warning(disable : 4996) -#endif - -namespace Json { - -#if __cplusplus >= 201103L || (defined(_CPPLIB_VER) && _CPPLIB_VER >= 520) -typedef std::unique_ptr StreamWriterPtr; -#else -typedef std::auto_ptr StreamWriterPtr; -#endif - -static bool containsControlCharacter(const char* str) { - while (*str) { - if (isControlCharacter(*(str++))) - return true; - } - return false; -} - -static bool containsControlCharacter0(const char* str, unsigned len) { - char const* end = str + len; - while (end != str) { - if (isControlCharacter(*str) || 0==*str) - return true; - ++str; - } - return false; -} - -std::string valueToString(LargestInt value) { - UIntToStringBuffer buffer; - char* current = buffer + sizeof(buffer); - if (value == Value::minLargestInt) { - uintToString(LargestUInt(Value::maxLargestInt) + 1, current); - *--current = '-'; - } else if (value < 0) { - uintToString(LargestUInt(-value), current); - *--current = '-'; - } else { - uintToString(LargestUInt(value), current); - } - assert(current >= buffer); - return current; -} - -std::string valueToString(LargestUInt value) { - UIntToStringBuffer buffer; - char* current = buffer + sizeof(buffer); - uintToString(value, current); - assert(current >= buffer); - return current; -} - -#if defined(JSON_HAS_INT64) - -std::string valueToString(Int value) { - return valueToString(LargestInt(value)); -} - -std::string valueToString(UInt value) { - return valueToString(LargestUInt(value)); -} - -#endif // # if defined(JSON_HAS_INT64) - -std::string valueToString(double value, bool useSpecialFloats, unsigned int precision) { - // Allocate a buffer that is more than large enough to store the 16 digits of - // precision requested below. - char buffer[32]; - int len = -1; - - char formatString[6]; - sprintf(formatString, "%%.%dg", precision); - - // Print into the buffer. We need not request the alternative representation - // that always has a decimal point because JSON doesn't distingish the - // concepts of reals and integers. - if (isfinite(value)) { - len = snprintf(buffer, sizeof(buffer), formatString, value); - } else { - // IEEE standard states that NaN values will not compare to themselves - if (value != value) { - len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "NaN" : "null"); - } else if (value < 0) { - len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "-Infinity" : "-1e+9999"); - } else { - len = snprintf(buffer, sizeof(buffer), useSpecialFloats ? "Infinity" : "1e+9999"); - } - // For those, we do not need to call fixNumLoc, but it is fast. - } - assert(len >= 0); - fixNumericLocale(buffer, buffer + len); - return buffer; -} - -std::string valueToString(double value) { return valueToString(value, false, 17); } - -std::string valueToString(bool value) { return value ? "true" : "false"; } - -std::string valueToQuotedString(const char* value) { - if (value == NULL) - return ""; - // Not sure how to handle unicode... - if (strpbrk(value, "\"\\\b\f\n\r\t") == NULL && - !containsControlCharacter(value)) - return std::string("\"") + value + "\""; - // We have to walk value and escape any special characters. - // Appending to std::string is not efficient, but this should be rare. - // (Note: forward slashes are *not* rare, but I am not escaping them.) - std::string::size_type maxsize = - strlen(value) * 2 + 3; // allescaped+quotes+NULL - std::string result; - result.reserve(maxsize); // to avoid lots of mallocs - result += "\""; - for (const char* c = value; *c != 0; ++c) { - switch (*c) { - case '\"': - result += "\\\""; - break; - case '\\': - result += "\\\\"; - break; - case '\b': - result += "\\b"; - break; - case '\f': - result += "\\f"; - break; - case '\n': - result += "\\n"; - break; - case '\r': - result += "\\r"; - break; - case '\t': - result += "\\t"; - break; - // case '/': - // Even though \/ is considered a legal escape in JSON, a bare - // slash is also legal, so I see no reason to escape it. - // (I hope I am not misunderstanding something. - // blep notes: actually escaping \/ may be useful in javascript to avoid (*c); - result += oss.str(); - } else { - result += *c; - } - break; - } - } - result += "\""; - return result; -} - -// https://github.com/upcaste/upcaste/blob/master/src/upcore/src/cstring/strnpbrk.cpp -static char const* strnpbrk(char const* s, char const* accept, size_t n) { - assert((s || !n) && accept); - - char const* const end = s + n; - for (char const* cur = s; cur < end; ++cur) { - int const c = *cur; - for (char const* a = accept; *a; ++a) { - if (*a == c) { - return cur; - } - } - } - return NULL; -} -static std::string valueToQuotedStringN(const char* value, unsigned length) { - if (value == NULL) - return ""; - // Not sure how to handle unicode... - if (strnpbrk(value, "\"\\\b\f\n\r\t", length) == NULL && - !containsControlCharacter0(value, length)) - return std::string("\"") + value + "\""; - // We have to walk value and escape any special characters. - // Appending to std::string is not efficient, but this should be rare. - // (Note: forward slashes are *not* rare, but I am not escaping them.) - std::string::size_type maxsize = - length * 2 + 3; // allescaped+quotes+NULL - std::string result; - result.reserve(maxsize); // to avoid lots of mallocs - result += "\""; - char const* end = value + length; - for (const char* c = value; c != end; ++c) { - switch (*c) { - case '\"': - result += "\\\""; - break; - case '\\': - result += "\\\\"; - break; - case '\b': - result += "\\b"; - break; - case '\f': - result += "\\f"; - break; - case '\n': - result += "\\n"; - break; - case '\r': - result += "\\r"; - break; - case '\t': - result += "\\t"; - break; - // case '/': - // Even though \/ is considered a legal escape in JSON, a bare - // slash is also legal, so I see no reason to escape it. - // (I hope I am not misunderstanding something.) - // blep notes: actually escaping \/ may be useful in javascript to avoid (*c); - result += oss.str(); - } else { - result += *c; - } - break; - } - } - result += "\""; - return result; -} - -// Class Writer -// ////////////////////////////////////////////////////////////////// -Writer::~Writer() {} - -// Class FastWriter -// ////////////////////////////////////////////////////////////////// - -FastWriter::FastWriter() - : yamlCompatiblityEnabled_(false), dropNullPlaceholders_(false), - omitEndingLineFeed_(false) {} - -void FastWriter::enableYAMLCompatibility() { yamlCompatiblityEnabled_ = true; } - -void FastWriter::dropNullPlaceholders() { dropNullPlaceholders_ = true; } - -void FastWriter::omitEndingLineFeed() { omitEndingLineFeed_ = true; } - -std::string FastWriter::write(const Value& root) { - document_ = ""; - writeValue(root); - if (!omitEndingLineFeed_) - document_ += "\n"; - return document_; -} - -void FastWriter::writeValue(const Value& value) { - switch (value.type()) { - case nullValue: - if (!dropNullPlaceholders_) - document_ += "null"; - break; - case intValue: - document_ += valueToString(value.asLargestInt()); - break; - case uintValue: - document_ += valueToString(value.asLargestUInt()); - break; - case realValue: - document_ += valueToString(value.asDouble()); - break; - case stringValue: - { - // Is NULL possible for value.string_? - char const* str; - char const* end; - bool ok = value.getString(&str, &end); - if (ok) document_ += valueToQuotedStringN(str, static_cast(end-str)); - break; - } - case booleanValue: - document_ += valueToString(value.asBool()); - break; - case arrayValue: { - document_ += '['; - int size = value.size(); - for (int index = 0; index < size; ++index) { - if (index > 0) - document_ += ','; - writeValue(value[index]); - } - document_ += ']'; - } break; - case objectValue: { - Value::Members members(value.getMemberNames()); - document_ += '{'; - for (Value::Members::iterator it = members.begin(); it != members.end(); - ++it) { - const std::string& name = *it; - if (it != members.begin()) - document_ += ','; - document_ += valueToQuotedStringN(name.data(), static_cast(name.length())); - document_ += yamlCompatiblityEnabled_ ? ": " : ":"; - writeValue(value[name]); - } - document_ += '}'; - } break; - } -} - -// Class StyledWriter -// ////////////////////////////////////////////////////////////////// - -StyledWriter::StyledWriter() - : rightMargin_(74), indentSize_(3), addChildValues_() {} - -std::string StyledWriter::write(const Value& root) { - document_ = ""; - addChildValues_ = false; - indentString_ = ""; - writeCommentBeforeValue(root); - writeValue(root); - writeCommentAfterValueOnSameLine(root); - document_ += "\n"; - return document_; -} - -void StyledWriter::writeValue(const Value& value) { - switch (value.type()) { - case nullValue: - pushValue("null"); - break; - case intValue: - pushValue(valueToString(value.asLargestInt())); - break; - case uintValue: - pushValue(valueToString(value.asLargestUInt())); - break; - case realValue: - pushValue(valueToString(value.asDouble())); - break; - case stringValue: - { - // Is NULL possible for value.string_? - char const* str; - char const* end; - bool ok = value.getString(&str, &end); - if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); - else pushValue(""); - break; - } - case booleanValue: - pushValue(valueToString(value.asBool())); - break; - case arrayValue: - writeArrayValue(value); - break; - case objectValue: { - Value::Members members(value.getMemberNames()); - if (members.empty()) - pushValue("{}"); - else { - writeWithIndent("{"); - indent(); - Value::Members::iterator it = members.begin(); - for (;;) { - const std::string& name = *it; - const Value& childValue = value[name]; - writeCommentBeforeValue(childValue); - writeWithIndent(valueToQuotedString(name.c_str())); - document_ += " : "; - writeValue(childValue); - if (++it == members.end()) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - document_ += ','; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("}"); - } - } break; - } -} - -void StyledWriter::writeArrayValue(const Value& value) { - unsigned size = value.size(); - if (size == 0) - pushValue("[]"); - else { - bool isArrayMultiLine = isMultineArray(value); - if (isArrayMultiLine) { - writeWithIndent("["); - indent(); - bool hasChildValue = !childValues_.empty(); - unsigned index = 0; - for (;;) { - const Value& childValue = value[index]; - writeCommentBeforeValue(childValue); - if (hasChildValue) - writeWithIndent(childValues_[index]); - else { - writeIndent(); - writeValue(childValue); - } - if (++index == size) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - document_ += ','; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("]"); - } else // output on a single line - { - assert(childValues_.size() == size); - document_ += "[ "; - for (unsigned index = 0; index < size; ++index) { - if (index > 0) - document_ += ", "; - document_ += childValues_[index]; - } - document_ += " ]"; - } - } -} - -bool StyledWriter::isMultineArray(const Value& value) { - int size = value.size(); - bool isMultiLine = size * 3 >= rightMargin_; - childValues_.clear(); - for (int index = 0; index < size && !isMultiLine; ++index) { - const Value& childValue = value[index]; - isMultiLine = ((childValue.isArray() || childValue.isObject()) && - childValue.size() > 0); - } - if (!isMultiLine) // check if line length > max line length - { - childValues_.reserve(size); - addChildValues_ = true; - int lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' - for (int index = 0; index < size; ++index) { - if (hasCommentForValue(value[index])) { - isMultiLine = true; - } - writeValue(value[index]); - lineLength += int(childValues_[index].length()); - } - addChildValues_ = false; - isMultiLine = isMultiLine || lineLength >= rightMargin_; - } - return isMultiLine; -} - -void StyledWriter::pushValue(const std::string& value) { - if (addChildValues_) - childValues_.push_back(value); - else - document_ += value; -} - -void StyledWriter::writeIndent() { - if (!document_.empty()) { - char last = document_[document_.length() - 1]; - if (last == ' ') // already indented - return; - if (last != '\n') // Comments may add new-line - document_ += '\n'; - } - document_ += indentString_; -} - -void StyledWriter::writeWithIndent(const std::string& value) { - writeIndent(); - document_ += value; -} - -void StyledWriter::indent() { indentString_ += std::string(indentSize_, ' '); } - -void StyledWriter::unindent() { - assert(int(indentString_.size()) >= indentSize_); - indentString_.resize(indentString_.size() - indentSize_); -} - -void StyledWriter::writeCommentBeforeValue(const Value& root) { - if (!root.hasComment(commentBefore)) - return; - - document_ += "\n"; - writeIndent(); - const std::string& comment = root.getComment(commentBefore); - std::string::const_iterator iter = comment.begin(); - while (iter != comment.end()) { - document_ += *iter; - if (*iter == '\n' && - (iter != comment.end() && *(iter + 1) == '/')) - writeIndent(); - ++iter; - } - - // Comments are stripped of trailing newlines, so add one here - document_ += "\n"; -} - -void StyledWriter::writeCommentAfterValueOnSameLine(const Value& root) { - if (root.hasComment(commentAfterOnSameLine)) - document_ += " " + root.getComment(commentAfterOnSameLine); - - if (root.hasComment(commentAfter)) { - document_ += "\n"; - document_ += root.getComment(commentAfter); - document_ += "\n"; - } -} - -bool StyledWriter::hasCommentForValue(const Value& value) { - return value.hasComment(commentBefore) || - value.hasComment(commentAfterOnSameLine) || - value.hasComment(commentAfter); -} - -// Class StyledStreamWriter -// ////////////////////////////////////////////////////////////////// - -StyledStreamWriter::StyledStreamWriter(std::string indentation) - : document_(NULL), rightMargin_(74), indentation_(indentation), - addChildValues_() {} - -void StyledStreamWriter::write(std::ostream& out, const Value& root) { - document_ = &out; - addChildValues_ = false; - indentString_ = ""; - indented_ = true; - writeCommentBeforeValue(root); - if (!indented_) writeIndent(); - indented_ = true; - writeValue(root); - writeCommentAfterValueOnSameLine(root); - *document_ << "\n"; - document_ = NULL; // Forget the stream, for safety. -} - -void StyledStreamWriter::writeValue(const Value& value) { - switch (value.type()) { - case nullValue: - pushValue("null"); - break; - case intValue: - pushValue(valueToString(value.asLargestInt())); - break; - case uintValue: - pushValue(valueToString(value.asLargestUInt())); - break; - case realValue: - pushValue(valueToString(value.asDouble())); - break; - case stringValue: - { - // Is NULL possible for value.string_? - char const* str; - char const* end; - bool ok = value.getString(&str, &end); - if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); - else pushValue(""); - break; - } - case booleanValue: - pushValue(valueToString(value.asBool())); - break; - case arrayValue: - writeArrayValue(value); - break; - case objectValue: { - Value::Members members(value.getMemberNames()); - if (members.empty()) - pushValue("{}"); - else { - writeWithIndent("{"); - indent(); - Value::Members::iterator it = members.begin(); - for (;;) { - const std::string& name = *it; - const Value& childValue = value[name]; - writeCommentBeforeValue(childValue); - writeWithIndent(valueToQuotedString(name.c_str())); - *document_ << " : "; - writeValue(childValue); - if (++it == members.end()) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - *document_ << ","; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("}"); - } - } break; - } -} - -void StyledStreamWriter::writeArrayValue(const Value& value) { - unsigned size = value.size(); - if (size == 0) - pushValue("[]"); - else { - bool isArrayMultiLine = isMultineArray(value); - if (isArrayMultiLine) { - writeWithIndent("["); - indent(); - bool hasChildValue = !childValues_.empty(); - unsigned index = 0; - for (;;) { - const Value& childValue = value[index]; - writeCommentBeforeValue(childValue); - if (hasChildValue) - writeWithIndent(childValues_[index]); - else { - if (!indented_) writeIndent(); - indented_ = true; - writeValue(childValue); - indented_ = false; - } - if (++index == size) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - *document_ << ","; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("]"); - } else // output on a single line - { - assert(childValues_.size() == size); - *document_ << "[ "; - for (unsigned index = 0; index < size; ++index) { - if (index > 0) - *document_ << ", "; - *document_ << childValues_[index]; - } - *document_ << " ]"; - } - } -} - -bool StyledStreamWriter::isMultineArray(const Value& value) { - int size = value.size(); - bool isMultiLine = size * 3 >= rightMargin_; - childValues_.clear(); - for (int index = 0; index < size && !isMultiLine; ++index) { - const Value& childValue = value[index]; - isMultiLine = ((childValue.isArray() || childValue.isObject()) && - childValue.size() > 0); - } - if (!isMultiLine) // check if line length > max line length - { - childValues_.reserve(size); - addChildValues_ = true; - int lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' - for (int index = 0; index < size; ++index) { - if (hasCommentForValue(value[index])) { - isMultiLine = true; - } - writeValue(value[index]); - lineLength += int(childValues_[index].length()); - } - addChildValues_ = false; - isMultiLine = isMultiLine || lineLength >= rightMargin_; - } - return isMultiLine; -} - -void StyledStreamWriter::pushValue(const std::string& value) { - if (addChildValues_) - childValues_.push_back(value); - else - *document_ << value; -} - -void StyledStreamWriter::writeIndent() { - // blep intended this to look at the so-far-written string - // to determine whether we are already indented, but - // with a stream we cannot do that. So we rely on some saved state. - // The caller checks indented_. - *document_ << '\n' << indentString_; -} - -void StyledStreamWriter::writeWithIndent(const std::string& value) { - if (!indented_) writeIndent(); - *document_ << value; - indented_ = false; -} - -void StyledStreamWriter::indent() { indentString_ += indentation_; } - -void StyledStreamWriter::unindent() { - assert(indentString_.size() >= indentation_.size()); - indentString_.resize(indentString_.size() - indentation_.size()); -} - -void StyledStreamWriter::writeCommentBeforeValue(const Value& root) { - if (!root.hasComment(commentBefore)) - return; - - if (!indented_) writeIndent(); - const std::string& comment = root.getComment(commentBefore); - std::string::const_iterator iter = comment.begin(); - while (iter != comment.end()) { - *document_ << *iter; - if (*iter == '\n' && - (iter != comment.end() && *(iter + 1) == '/')) - // writeIndent(); // would include newline - *document_ << indentString_; - ++iter; - } - indented_ = false; -} - -void StyledStreamWriter::writeCommentAfterValueOnSameLine(const Value& root) { - if (root.hasComment(commentAfterOnSameLine)) - *document_ << ' ' << root.getComment(commentAfterOnSameLine); - - if (root.hasComment(commentAfter)) { - writeIndent(); - *document_ << root.getComment(commentAfter); - } - indented_ = false; -} - -bool StyledStreamWriter::hasCommentForValue(const Value& value) { - return value.hasComment(commentBefore) || - value.hasComment(commentAfterOnSameLine) || - value.hasComment(commentAfter); -} - -////////////////////////// -// BuiltStyledStreamWriter - -/// Scoped enums are not available until C++11. -struct CommentStyle { - /// Decide whether to write comments. - enum Enum { - None, ///< Drop all comments. - Most, ///< Recover odd behavior of previous versions (not implemented yet). - All ///< Keep all comments. - }; -}; - -struct BuiltStyledStreamWriter : public StreamWriter -{ - BuiltStyledStreamWriter( - std::string const& indentation, - CommentStyle::Enum cs, - std::string const& colonSymbol, - std::string const& nullSymbol, - std::string const& endingLineFeedSymbol, - bool useSpecialFloats, - unsigned int precision); - int write(Value const& root, std::ostream* sout) override; -private: - void writeValue(Value const& value); - void writeArrayValue(Value const& value); - bool isMultineArray(Value const& value); - void pushValue(std::string const& value); - void writeIndent(); - void writeWithIndent(std::string const& value); - void indent(); - void unindent(); - void writeCommentBeforeValue(Value const& root); - void writeCommentAfterValueOnSameLine(Value const& root); - static bool hasCommentForValue(const Value& value); - - typedef std::vector ChildValues; - - ChildValues childValues_; - std::string indentString_; - int rightMargin_; - std::string indentation_; - CommentStyle::Enum cs_; - std::string colonSymbol_; - std::string nullSymbol_; - std::string endingLineFeedSymbol_; - bool addChildValues_ : 1; - bool indented_ : 1; - bool useSpecialFloats_ : 1; - unsigned int precision_; -}; -BuiltStyledStreamWriter::BuiltStyledStreamWriter( - std::string const& indentation, - CommentStyle::Enum cs, - std::string const& colonSymbol, - std::string const& nullSymbol, - std::string const& endingLineFeedSymbol, - bool useSpecialFloats, - unsigned int precision) - : rightMargin_(74) - , indentation_(indentation) - , cs_(cs) - , colonSymbol_(colonSymbol) - , nullSymbol_(nullSymbol) - , endingLineFeedSymbol_(endingLineFeedSymbol) - , addChildValues_(false) - , indented_(false) - , useSpecialFloats_(useSpecialFloats) - , precision_(precision) -{ -} -int BuiltStyledStreamWriter::write(Value const& root, std::ostream* sout) -{ - sout_ = sout; - addChildValues_ = false; - indented_ = true; - indentString_ = ""; - writeCommentBeforeValue(root); - if (!indented_) writeIndent(); - indented_ = true; - writeValue(root); - writeCommentAfterValueOnSameLine(root); - *sout_ << endingLineFeedSymbol_; - sout_ = NULL; - return 0; -} -void BuiltStyledStreamWriter::writeValue(Value const& value) { - switch (value.type()) { - case nullValue: - pushValue(nullSymbol_); - break; - case intValue: - pushValue(valueToString(value.asLargestInt())); - break; - case uintValue: - pushValue(valueToString(value.asLargestUInt())); - break; - case realValue: - pushValue(valueToString(value.asDouble(), useSpecialFloats_, precision_)); - break; - case stringValue: - { - // Is NULL is possible for value.string_? - char const* str; - char const* end; - bool ok = value.getString(&str, &end); - if (ok) pushValue(valueToQuotedStringN(str, static_cast(end-str))); - else pushValue(""); - break; - } - case booleanValue: - pushValue(valueToString(value.asBool())); - break; - case arrayValue: - writeArrayValue(value); - break; - case objectValue: { - Value::Members members(value.getMemberNames()); - if (members.empty()) - pushValue("{}"); - else { - writeWithIndent("{"); - indent(); - Value::Members::iterator it = members.begin(); - for (;;) { - std::string const& name = *it; - Value const& childValue = value[name]; - writeCommentBeforeValue(childValue); - writeWithIndent(valueToQuotedStringN(name.data(), static_cast(name.length()))); - *sout_ << colonSymbol_; - writeValue(childValue); - if (++it == members.end()) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - *sout_ << ","; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("}"); - } - } break; - } -} - -void BuiltStyledStreamWriter::writeArrayValue(Value const& value) { - unsigned size = value.size(); - if (size == 0) - pushValue("[]"); - else { - bool isMultiLine = (cs_ == CommentStyle::All) || isMultineArray(value); - if (isMultiLine) { - writeWithIndent("["); - indent(); - bool hasChildValue = !childValues_.empty(); - unsigned index = 0; - for (;;) { - Value const& childValue = value[index]; - writeCommentBeforeValue(childValue); - if (hasChildValue) - writeWithIndent(childValues_[index]); - else { - if (!indented_) writeIndent(); - indented_ = true; - writeValue(childValue); - indented_ = false; - } - if (++index == size) { - writeCommentAfterValueOnSameLine(childValue); - break; - } - *sout_ << ","; - writeCommentAfterValueOnSameLine(childValue); - } - unindent(); - writeWithIndent("]"); - } else // output on a single line - { - assert(childValues_.size() == size); - *sout_ << "["; - if (!indentation_.empty()) *sout_ << " "; - for (unsigned index = 0; index < size; ++index) { - if (index > 0) - *sout_ << ", "; - *sout_ << childValues_[index]; - } - if (!indentation_.empty()) *sout_ << " "; - *sout_ << "]"; - } - } -} - -bool BuiltStyledStreamWriter::isMultineArray(Value const& value) { - int size = value.size(); - bool isMultiLine = size * 3 >= rightMargin_; - childValues_.clear(); - for (int index = 0; index < size && !isMultiLine; ++index) { - Value const& childValue = value[index]; - isMultiLine = ((childValue.isArray() || childValue.isObject()) && - childValue.size() > 0); - } - if (!isMultiLine) // check if line length > max line length - { - childValues_.reserve(size); - addChildValues_ = true; - int lineLength = 4 + (size - 1) * 2; // '[ ' + ', '*n + ' ]' - for (int index = 0; index < size; ++index) { - if (hasCommentForValue(value[index])) { - isMultiLine = true; - } - writeValue(value[index]); - lineLength += int(childValues_[index].length()); - } - addChildValues_ = false; - isMultiLine = isMultiLine || lineLength >= rightMargin_; - } - return isMultiLine; -} - -void BuiltStyledStreamWriter::pushValue(std::string const& value) { - if (addChildValues_) - childValues_.push_back(value); - else - *sout_ << value; -} - -void BuiltStyledStreamWriter::writeIndent() { - // blep intended this to look at the so-far-written string - // to determine whether we are already indented, but - // with a stream we cannot do that. So we rely on some saved state. - // The caller checks indented_. - - if (!indentation_.empty()) { - // In this case, drop newlines too. - *sout_ << '\n' << indentString_; - } -} - -void BuiltStyledStreamWriter::writeWithIndent(std::string const& value) { - if (!indented_) writeIndent(); - *sout_ << value; - indented_ = false; -} - -void BuiltStyledStreamWriter::indent() { indentString_ += indentation_; } - -void BuiltStyledStreamWriter::unindent() { - assert(indentString_.size() >= indentation_.size()); - indentString_.resize(indentString_.size() - indentation_.size()); -} - -void BuiltStyledStreamWriter::writeCommentBeforeValue(Value const& root) { - if (cs_ == CommentStyle::None) return; - if (!root.hasComment(commentBefore)) - return; - - if (!indented_) writeIndent(); - const std::string& comment = root.getComment(commentBefore); - std::string::const_iterator iter = comment.begin(); - while (iter != comment.end()) { - *sout_ << *iter; - if (*iter == '\n' && - (iter != comment.end() && *(iter + 1) == '/')) - // writeIndent(); // would write extra newline - *sout_ << indentString_; - ++iter; - } - indented_ = false; -} - -void BuiltStyledStreamWriter::writeCommentAfterValueOnSameLine(Value const& root) { - if (cs_ == CommentStyle::None) return; - if (root.hasComment(commentAfterOnSameLine)) - *sout_ << " " + root.getComment(commentAfterOnSameLine); - - if (root.hasComment(commentAfter)) { - writeIndent(); - *sout_ << root.getComment(commentAfter); - } -} - -// static -bool BuiltStyledStreamWriter::hasCommentForValue(const Value& value) { - return value.hasComment(commentBefore) || - value.hasComment(commentAfterOnSameLine) || - value.hasComment(commentAfter); -} - -/////////////// -// StreamWriter - -StreamWriter::StreamWriter() - : sout_(NULL) -{ -} -StreamWriter::~StreamWriter() -{ -} -StreamWriter::Factory::~Factory() -{} -StreamWriterBuilder::StreamWriterBuilder() -{ - setDefaults(&settings_); -} -StreamWriterBuilder::~StreamWriterBuilder() -{} -StreamWriter* StreamWriterBuilder::newStreamWriter() const -{ - std::string indentation = settings_["indentation"].asString(); - std::string cs_str = settings_["commentStyle"].asString(); - bool eyc = settings_["enableYAMLCompatibility"].asBool(); - bool dnp = settings_["dropNullPlaceholders"].asBool(); - bool usf = settings_["useSpecialFloats"].asBool(); - unsigned int pre = settings_["precision"].asUInt(); - CommentStyle::Enum cs = CommentStyle::All; - if (cs_str == "All") { - cs = CommentStyle::All; - } else if (cs_str == "None") { - cs = CommentStyle::None; - } else { - throwRuntimeError("commentStyle must be 'All' or 'None'"); - } - std::string colonSymbol = " : "; - if (eyc) { - colonSymbol = ": "; - } else if (indentation.empty()) { - colonSymbol = ":"; - } - std::string nullSymbol = "null"; - if (dnp) { - nullSymbol = ""; - } - if (pre > 17) pre = 17; - std::string endingLineFeedSymbol = ""; - return new BuiltStyledStreamWriter( - indentation, cs, - colonSymbol, nullSymbol, endingLineFeedSymbol, usf, pre); -} -static void getValidWriterKeys(std::set* valid_keys) -{ - valid_keys->clear(); - valid_keys->insert("indentation"); - valid_keys->insert("commentStyle"); - valid_keys->insert("enableYAMLCompatibility"); - valid_keys->insert("dropNullPlaceholders"); - valid_keys->insert("useSpecialFloats"); - valid_keys->insert("precision"); -} -bool StreamWriterBuilder::validate(Json::Value* invalid) const -{ - Json::Value my_invalid; - if (!invalid) invalid = &my_invalid; // so we do not need to test for NULL - Json::Value& inv = *invalid; - std::set valid_keys; - getValidWriterKeys(&valid_keys); - Value::Members keys = settings_.getMemberNames(); - size_t n = keys.size(); - for (size_t i = 0; i < n; ++i) { - std::string const& key = keys[i]; - if (valid_keys.find(key) == valid_keys.end()) { - inv[key] = settings_[key]; - } - } - return 0u == inv.size(); -} -Value& StreamWriterBuilder::operator[](std::string key) -{ - return settings_[key]; -} -// static -void StreamWriterBuilder::setDefaults(Json::Value* settings) -{ - //! [StreamWriterBuilderDefaults] - (*settings)["commentStyle"] = "All"; - (*settings)["indentation"] = "\t"; - (*settings)["enableYAMLCompatibility"] = false; - (*settings)["dropNullPlaceholders"] = false; - (*settings)["useSpecialFloats"] = false; - (*settings)["precision"] = 17; - //! [StreamWriterBuilderDefaults] -} - -std::string writeString(StreamWriter::Factory const& builder, Value const& root) { - std::ostringstream sout; - StreamWriterPtr const writer(builder.newStreamWriter()); - writer->write(root, &sout); - return sout.str(); -} - -std::ostream& operator<<(std::ostream& sout, Value const& root) { - StreamWriterBuilder builder; - StreamWriterPtr const writer(builder.newStreamWriter()); - writer->write(root, &sout); - return sout; -} - -} // namespace Json - -// ////////////////////////////////////////////////////////////////////// -// End of content of file: src/lib_json/json_writer.cpp -// ////////////////////////////////////////////////////////////////////// - - - - - diff --git a/lib/protobuf/conformance/update_failure_list.py b/lib/protobuf/conformance/update_failure_list.py deleted file mode 100755 index ad42ed3..0000000 --- a/lib/protobuf/conformance/update_failure_list.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/env python -# 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. - -"""Script to update a failure list file to add/remove failures. - -This is sort of like comm(1), except it recognizes comments and ignores them. -""" - -import argparse - -parser = argparse.ArgumentParser( - description='Adds/removes failures from the failure list.') -parser.add_argument('filename', type=str, help='failure list file to update') -parser.add_argument('--add', dest='add_list', action='append') -parser.add_argument('--remove', dest='remove_list', action='append') - -args = parser.parse_args() - -add_set = set() -remove_set = set() - -for add_file in (args.add_list or []): - with open(add_file) as f: - for line in f: - add_set.add(line) - -for remove_file in (args.remove_list or []): - with open(remove_file) as f: - for line in f: - if line in add_set: - raise Exception("Asked to both add and remove test: " + line) - remove_set.add(line.strip()) - -add_list = sorted(add_set, reverse=True) - -with open(args.filename) as in_file: - existing_list = in_file.read() - -with open(args.filename, "w") as f: - for line in existing_list.splitlines(True): - test = line.split("#")[0].strip() - while len(add_list) > 0 and test > add_list[-1]: - f.write(add_list.pop()) - if test not in remove_set: - f.write(line) diff --git a/lib/protobuf/csharp/.gitignore b/lib/protobuf/csharp/.gitignore deleted file mode 100644 index d0d7ae0..0000000 --- a/lib/protobuf/csharp/.gitignore +++ /dev/null @@ -1,34 +0,0 @@ -# Output -bin -obj -project.lock.json -TestResult.xml - -# Possibly legacy now? -mono/bin -mono/tmp -mono/protoc -build_output -build_temp -build/msbuild*.log -lib/Microsoft.Silverlight.Testing -lib/NUnit - -# -# Untracked files -# -.vs -*.user -*.suo -*.nupkg -_ReSharper.* -*.sln.cache -mono/TestResult.xml -mono/.libs -mono/*.exe -mono/*.dll -lib/protoc.exe -*.ncrunch* - -# Benchmark output -BenchmarkDotNet.Artifacts/ diff --git a/lib/protobuf/csharp/CHANGES.txt b/lib/protobuf/csharp/CHANGES.txt deleted file mode 100644 index 8574b7c..0000000 --- a/lib/protobuf/csharp/CHANGES.txt +++ /dev/null @@ -1,148 +0,0 @@ -=============================================================================== -Welcome to the C# port of Google Protocol Buffers, written by Jon Skeet -(skeet@pobox.com) based on the work of many talented people. - -=============================================================================== -RELEASE NOTES - Code imported into Google's main protobuf repository -=============================================================================== - -Everything below note this represents history of protobuf-csharp-port project -before the code was merged into csharp/ subtree of GitHub google/protobuf -repository. -Frozen legacy version of the original project is available in -https://github.com/jskeet/protobuf-csharp-port. - -=============================================================================== -RELEASE NOTES - Version 2.4.1.555 -=============================================================================== - -Changes: -- Upgrade solution format to Visual Studio 2012. -- Add the ability to print a builder (not just a message) -- TextGenerator introduces a new overload of PrintTo -- Munge protoc's error format into a VS-C#-compatible output format. -- Work to make ProtoGen clone that acts as a protoc.exe plugin. -- Added the AllowPartiallyTrustedCallers attribute -- Optimized enum parsing. - -Fixes: -- Fix for bug in limited input stream's Position, Introduced Position on - output stream -- Fix for writing a character to a JSON output overflows allocated buffer -- Optimize FromBase64String to return Empty when presented with empty string. -- Use string.Concat instead of operator to avoid potential import problems -- Issue 81: quoting for NUnit parameters. -- Issue 56: NuGet package is noisy -- Issue 70: Portable library project has some invalid Nunit-based code. -- Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily -- Issue 84: warning CS0219: The variable `size' is assigned but never used - -=============================================================================== -RELEASE NOTES - Version 2.4.1.521 -=============================================================================== - -Changes: -- Add generated_code_attributes option, defaulted to false -- Added support for Portable library -- Added 'Unsafe' static type in ByteString to allow direct buffer access - -Fixes: -- Issue 50: The XML serializer will fail to deserialize a message with empty - child message -- Issue 45: Use of 'item' as a field name causes AmbiguousMatchException -- Issue 49: Generated nested static Types class should be partial -- Issue 38: Disable CLSCompliant warnings (3021) -- Issue 40: proto_path does not work for command-line file names -- Issue 54: should retire all bytes in buffer (bufferSize) -- Issue 43: Fix to correct identical 'umbrella_classname' options from trying - to write to the same filename. - -=============================================================================== -RELEASE NOTES - Version 2.4.1.473 -=============================================================================== - -Features: -- Added option service_generator_type to control service generation with - NONE, GENERIC, INTERFACE, or IRPCDISPATCH -- Added interfaces IRpcDispatch and IRpcServerStub to provide for blocking - services and implementations. -- Added ProtoGen.exe command-line argument "--protoc_dir=" to specify the - location of protoc.exe. -- Extracted interfaces for ICodedInputStream and ICodedOutputStream to allow - custom implementation of writers with both speed and size optimizations. -- Addition of the "Google.ProtoBuffers.Serialization" assembly to support - reading and writing messages to/from XML, JSON, IDictionary<,> and others. -- Several performance related fixes and tweeks -- Issue 3: Add option to mark generated code with attribute -- Issue 20: Support for decorating classes [Serializable] -- Issue 21: Decorate fields with [deprecated=true] as [System.Obsolete] -- Issue 22: Reusable Builder classes -- Issue 24: Support for using Json/Xml formats with ICodedInputStream -- Issue 25: Added support for NuGet packages -- Issue 31: Upgraded protoc.exe and descriptor to 2.4.1 - -Fixes: -- Issue 13: Message with Field same name as message causes uncompilable .cs -- Issue 16: Does not integrate well with other tooling -- Issue 19: Support for negative enum values -- Issue 26: AddRange in GeneratedBuilder iterates twice. -- Issue 27: Remove XML documentation output from test projects to clear - warnings/errors. -- Issue 28: Circular message dependencies result in null default values for - Message fields. -- Issue 29: Message classes generated have a public default constructor. You - can disable private ctor generation with the option generate_private_ctor. -- Issue 35: Fixed a bug in ProtoGen handling of arguments with trailing \ -- Big-endian support for float, and double on Silverlight -- Packed and Unpacked parsing allow for all repeated, as per version 2.3 -- Fix for leaving Builder a public ctor on internal classes for use with - generic "where T: new()" constraints. - -Other: -- Changed the code signing key to a privately held key -- Reformatted all code and line-endings to C# defaults -- Reworking of performance benchmarks to produce reliable results, option /v2 -- Issue 34: Silverlight assemblies are now unit tested - -=============================================================================== -RELEASE NOTES - Version 2.3.0.277 -=============================================================================== - -Features: -- Added cls_compliance option to generate attributes indicating - non-CLS-compliance. -- Added file_extension option to control the generated output file's extension. -- Added umbrella_namespace option to place the umbrella class into a nested - namespace to address issues with proto files having the same name as a - message it contains. -- Added output_directory option to set the output path for the source file(s). -- Added ignore_google_protobuf option to avoid generating code for includes - from the google.protobuf package. -- Added the LITE framework (Google.ProtoBuffersLite.dll) and the ability to - generate code with "option optimize_for = LITE_RUNTIME;". -- Added ability to invoke protoc.exe from within ProtoGen.exe. -- Upgraded to protoc.exe (2.3) compiler. - -Fixes: -- Issue 9: Class cannot be static and sealed error -- Issue 12: default value for enumerate fields must be filled out - -Other: -- Rewrite of build using MSbuild instead of NAnt -- Moved to NUnit Version 2.2.8.0 -- Changed to using secure .snk for releases - -=============================================================================== -RELEASE NOTES - Version 0.9.1 -=============================================================================== - -Fixes: -- issue 10: Incorrect encoding of packed fields when serialized - -=============================================================================== -RELEASE NOTES - Version 0.9.0 -=============================================================================== - -- Initial release - -=============================================================================== \ No newline at end of file diff --git a/lib/protobuf/csharp/Google.Protobuf.Tools.nuspec b/lib/protobuf/csharp/Google.Protobuf.Tools.nuspec deleted file mode 100644 index 87372b6..0000000 --- a/lib/protobuf/csharp/Google.Protobuf.Tools.nuspec +++ /dev/null @@ -1,39 +0,0 @@ - - - - Google.Protobuf.Tools - Google Protocol Buffers tools - Tools for Protocol Buffers - Google's data interchange format. - See project site for more info. - 3.9.1 - Google Inc. - protobuf-packages - https://github.com/protocolbuffers/protobuf/blob/master/LICENSE - https://github.com/protocolbuffers/protobuf - false - Tools for Protocol Buffers - Copyright 2015, Google Inc. - Protocol Buffers Binary Serialization Format Google proto proto3 - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/protobuf/csharp/Google.Protobuf.Tools.targets b/lib/protobuf/csharp/Google.Protobuf.Tools.targets deleted file mode 100644 index 682e11b..0000000 --- a/lib/protobuf/csharp/Google.Protobuf.Tools.targets +++ /dev/null @@ -1,11 +0,0 @@ - - - $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)/../tools/')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/linux_x64/protoc')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/linux_x86/protoc')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/macosx_x64/protoc')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/macosx_x86/protoc')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/windows_x64/protoc.exe')) - $([System.IO.Path]::GetFullPath('$(protoc_tools)/windows_x86/protoc.exe')) - - diff --git a/lib/protobuf/csharp/README.md b/lib/protobuf/csharp/README.md deleted file mode 100644 index 9aab782..0000000 --- a/lib/protobuf/csharp/README.md +++ /dev/null @@ -1,96 +0,0 @@ -This directory contains the C# Protocol Buffers runtime library. - -Usage -===== - -The easiest way how to use C# protobufs is via the `Google.Protobuf` -NuGet package. Just add the NuGet package to your VS project. - -You will also want to install the `Google.Protobuf.Tools` NuGet package, which -contains precompiled version of `protoc.exe` and a copy of well known `.proto` -files under the package's `tools` directory. - -To generate C# files from your `.proto` files, invoke `protoc` with the -`--csharp_out` option. - -Supported platforms -=================== - -The runtime library is built as a portable class library, supporting: - -- .NET 4.5 -- Windows 8 -- Windows Phone Silverlight 8 -- Windows Phone 8.1 -- .NET Core - -You should be able to use Protocol Buffers in Visual Studio 2012 and -all later versions. This includes all code generated by `protoc`, -which only uses features from C# 3 and earlier. - -Building -======== - -Open the `src/Google.Protobuf.sln` solution in Visual Studio 2017 or -later. - -Although *users* of this project are only expected to have Visual -Studio 2012 or later, *developers* of the library are required to -have Visual Studio 2017 or later, as the library uses C# 6 features -in its implementation, as well as the new Visual Studio 2017 csproj -format. These features have no impact when using the compiled code - -they're only relevant when building the `Google.Protobuf` assembly. - -In order to run and debug the AddressBook example in the IDE, you must -install the optional component, ".Net Core 1.0 - 1.1 development tools -for Web" (as it's labelled in current versions of the VS2017 -installer), above and beyond the main .NET Core cross-platform -development feature. - -Testing -======= - -The unit tests use [NUnit 3](https://github.com/nunit/nunit). Tests can be -run using the Visual Studio Test Explorer or `dotnet test`. - -.NET 3.5 -======== - -We don't officially support .NET 3.5. However, there has been some effort -to make enabling .NET 3.5 support relatively painless in case you require it. -There's no guarantee that this will continue in the future, so rely on .NET -3.5 support at your peril. - -To enable .NET 3.5 support, you must edit the `TargetFrameworks` elements of -[src/Google.Protobuf/Google.Protobuf.csproj](src/Google.Protobuf/Google.Protobuf.csproj) -(and [src/Google.Protobuf.Test/Google.Protobuf.Test.csproj](src/Google.Protobuf.Test/Google.Protobuf.Test.csproj) -if you want to run the unit tests): - -Open the .csproj file in a text editor and simply add `net35` to the list of -target frameworks, noting that the `TargetFrameworks` element appears twice in -the file (once in the first `PropertyGroup` element, and again in the second -`PropertyGroup` element, i.e., the one with the conditional). - -History of C# protobufs -======================= - -This subtree was originally imported from https://github.com/jskeet/protobuf-csharp-port -and represents the latest development version of C# protobufs, that will now be developed -and maintained by Google. All the development will be done in open, under this repository -(https://github.com/protocolbuffers/protobuf). - -The previous project differs from this project in a number of ways: - -- The old code only supported proto2; the new code only supports -proto3 (so no unknown fields, no required/optional distinction, no -extensions) -- The old code was based on immutable message types and builders for -them -- The old code did not support maps or `oneof` -- The old code had its own JSON representation, whereas the new code -uses the standard protobuf JSON representation -- The old code had no notion of the "well-known types" which have -special support in the new code -- The old project supported some older platforms (such as older -versions of Silverlight) which are not currently supported in the -new project diff --git a/lib/protobuf/csharp/build_packages.bat b/lib/protobuf/csharp/build_packages.bat deleted file mode 100644 index d720565..0000000 --- a/lib/protobuf/csharp/build_packages.bat +++ /dev/null @@ -1,10 +0,0 @@ -@rem Builds Google.Protobuf NuGet packages - -dotnet restore src/Google.Protobuf.sln -dotnet pack -c Release src/Google.Protobuf.sln || goto :error - -goto :EOF - -:error -echo Failed! -exit /b %errorlevel% diff --git a/lib/protobuf/csharp/build_tools.sh b/lib/protobuf/csharp/build_tools.sh deleted file mode 100755 index 182c5c5..0000000 --- a/lib/protobuf/csharp/build_tools.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/bash - -if [ $# -ne 1 ]; then - cat < - -Example: - $ $0 3.0.0 - -This script will download pre-built protoc binaries from maven repository and -create the Google.Protobuf.Tools package. Well-known type .proto files will also -be included. -EOF - exit 1 -fi - -VERSION_NUMBER=$1 -# pairs. -declare -a FILE_NAMES=( \ - windows_x86 windows-x86_32.exe \ - windows_x64 windows-x86_64.exe \ - macosx_x86 osx-x86_32.exe \ - macosx_x64 osx-x86_64.exe \ - linux_x86 linux-x86_32.exe \ - linux_x64 linux-x86_64.exe \ -) - -set -e - -mkdir -p protoc -# Create a zip file for each binary. -for((i=0;i<${#FILE_NAMES[@]};i+=2));do - DIR_NAME=${FILE_NAMES[$i]} - mkdir -p protoc/$DIR_NAME - - if [ ${DIR_NAME:0:3} = "win" ]; then - TARGET_BINARY="protoc.exe" - else - TARGET_BINARY="protoc" - fi - - BINARY_NAME=${FILE_NAMES[$(($i+1))]} - BINARY_URL=http://repo1.maven.org/maven2/com/google/protobuf/protoc/${VERSION_NUMBER}/protoc-${VERSION_NUMBER}-${BINARY_NAME} - - if ! wget ${BINARY_URL} -O protoc/$DIR_NAME/$TARGET_BINARY &> /dev/null; then - echo "[ERROR] Failed to download ${BINARY_URL}" >&2 - echo "[ERROR] Skipped $protoc-${VERSION_NAME}-${DIR_NAME}" >&2 - continue - fi -done - -nuget pack Google.Protobuf.Tools.nuspec diff --git a/lib/protobuf/csharp/buildall.bat b/lib/protobuf/csharp/buildall.bat deleted file mode 100644 index 821ffb3..0000000 --- a/lib/protobuf/csharp/buildall.bat +++ /dev/null @@ -1,13 +0,0 @@ -@rem Builds Google.Protobuf and runs the tests - -dotnet build src/Google.Protobuf.sln || goto :error - -echo Running tests. - -dotnet test src/Google.Protobuf.Test/Google.Protobuf.Test.csproj || goto :error - -goto :EOF - -:error -echo Failed! -exit /b %errorlevel% diff --git a/lib/protobuf/csharp/buildall.sh b/lib/protobuf/csharp/buildall.sh deleted file mode 100755 index 43b5ac3..0000000 --- a/lib/protobuf/csharp/buildall.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -CONFIG=Release -SRC=$(dirname $0)/src - -set -ex - -echo Building relevant projects. -dotnet restore $SRC/Google.Protobuf.sln -dotnet build -c $CONFIG $SRC/Google.Protobuf.sln - -echo Running tests. -# Only test netcoreapp2.1, which uses the .NET Core runtime. -# If we want to test the .NET 4.5 version separately, we could -# run Mono explicitly. However, we don't have any differences between -# the .NET 4.5 and netstandard2.1 assemblies. -dotnet test -c $CONFIG -f netcoreapp2.1 $SRC/Google.Protobuf.Test/Google.Protobuf.Test.csproj diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/csharp/protos/unittest_issues.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/csharp/protos/unittest_issues.proto deleted file mode 100644 index b6178bf..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/csharp/protos/unittest_issues.proto +++ /dev/null @@ -1,126 +0,0 @@ -syntax = "proto3"; - -// These proto descriptors have at one time been reported as an issue or defect. -// They are kept here to replicate the issue, and continue to verify the fix. - -// Issue: Non-"Google.Protobuffers" namespace will ensure that protobuffer library types are qualified -option csharp_namespace = "UnitTest.Issues.TestProtos"; - -package unittest_issues; -option optimize_for = SPEED; - -// Issue 307: when generating doubly-nested types, any references -// should be of the form A.Types.B.Types.C. -message Issue307 { - message NestedOnce { - message NestedTwice { - } - } -} - -// Old issue 13: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=13 -// New issue 309: https://github.com/protocolbuffers/protobuf/issues/309 - -// message A { -// optional int32 _A = 1; -// } - -// message B { -// optional int32 B_ = 1; -// } - -//message AB { -// optional int32 a_b = 1; -//} - -// Similar issue with numeric names -// Java code failed too, so probably best for this to be a restriction. -// See https://github.com/protocolbuffers/protobuf/issues/308 -// message NumberField { -// optional int32 _01 = 1; -// } - -// issue 19 - negative enum values - -enum NegativeEnum { - NEGATIVE_ENUM_ZERO = 0; - FiveBelow = -5; - MinusOne = -1; -} - -message NegativeEnumMessage { - NegativeEnum value = 1; - repeated NegativeEnum values = 2 [packed = false]; - repeated NegativeEnum packed_values = 3 [packed=true]; -} - -// Issue 21: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=21 -// Decorate fields with [deprecated=true] as [System.Obsolete] - -message DeprecatedChild { -} - -enum DeprecatedEnum { - DEPRECATED_ZERO = 0; - one = 1; -} - -message DeprecatedFieldsMessage { - int32 PrimitiveValue = 1 [deprecated = true]; - repeated int32 PrimitiveArray = 2 [deprecated = true]; - - DeprecatedChild MessageValue = 3 [deprecated = true]; - repeated DeprecatedChild MessageArray = 4 [deprecated = true]; - - DeprecatedEnum EnumValue = 5 [deprecated = true]; - repeated DeprecatedEnum EnumArray = 6 [deprecated = true]; -} - -// Issue 45: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=45 -message ItemField { - int32 item = 1; -} - -message ReservedNames { - // Force a nested type called Types - message SomeNestedType { - } - - int32 types = 1; - int32 descriptor = 2; -} - -message TestJsonFieldOrdering { - // These fields are deliberately not declared in numeric - // order, and the oneof fields aren't contiguous either. - // This allows for reasonably robust tests of JSON output - // ordering. - // TestFieldOrderings in unittest_proto3.proto is similar, - // but doesn't include oneofs. - // TODO: Consider adding oneofs to TestFieldOrderings, although - // that will require fixing other tests in multiple platforms. - // Alternatively, consider just adding this to - // unittest_proto3.proto if multiple platforms want it. - - int32 plain_int32 = 4; - - oneof o1 { - string o1_string = 2; - int32 o1_int32 = 5; - } - - string plain_string = 1; - - oneof o2 { - int32 o2_int32 = 6; - string o2_string = 3; - } - -} - -message TestJsonName { - // Message for testing the effects for of the json_name option - string name = 1; - string description = 2 [json_name = "desc"]; - string guid = 3 [json_name = "exid"]; -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/map_unittest_proto3.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/map_unittest_proto3.proto deleted file mode 100644 index 16be277..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/map_unittest_proto3.proto +++ /dev/null @@ -1,120 +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. - -// This file is mostly equivalent to map_unittest.proto, but imports -// unittest_proto3.proto instead of unittest.proto, so that it only -// uses proto3 messages. This makes it suitable for testing -// implementations which only support proto3. -// The TestRequiredMessageMap message has been removed as there are no -// required fields in proto3. -syntax = "proto3"; - -option cc_enable_arenas = true; -option csharp_namespace = "Google.Protobuf.TestProtos"; - -import "google/protobuf/unittest_proto3.proto"; - -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In map_test_util.h we do "using namespace unittest = protobuf_unittest". -package protobuf_unittest; - -// Tests maps. -message TestMap { - map map_int32_int32 = 1; - map map_int64_int64 = 2; - map map_uint32_uint32 = 3; - map map_uint64_uint64 = 4; - map map_sint32_sint32 = 5; - map map_sint64_sint64 = 6; - map map_fixed32_fixed32 = 7; - map map_fixed64_fixed64 = 8; - map map_sfixed32_sfixed32 = 9; - map map_sfixed64_sfixed64 = 10; - map map_int32_float = 11; - map map_int32_double = 12; - map map_bool_bool = 13; - map map_string_string = 14; - map map_int32_bytes = 15; - map map_int32_enum = 16; - map map_int32_foreign_message = 17; -} - -message TestMapSubmessage { - TestMap test_map = 1; -} - -message TestMessageMap { - map map_int32_message = 1; -} - -// Two map fields share the same entry default instance. -message TestSameTypeMap { - map map1 = 1; - map map2 = 2; -} - -enum MapEnum { - MAP_ENUM_FOO = 0; - MAP_ENUM_BAR = 1; - MAP_ENUM_BAZ = 2; -} - -message TestArenaMap { - map map_int32_int32 = 1; - map map_int64_int64 = 2; - map map_uint32_uint32 = 3; - map map_uint64_uint64 = 4; - map map_sint32_sint32 = 5; - map map_sint64_sint64 = 6; - map map_fixed32_fixed32 = 7; - map map_fixed64_fixed64 = 8; - map map_sfixed32_sfixed32 = 9; - map map_sfixed64_sfixed64 = 10; - map map_int32_float = 11; - map map_int32_double = 12; - map map_bool_bool = 13; - map map_int32_enum = 14; - map map_int32_foreign_message = 15; -} - -// Previously, message containing enum called Type cannot be used as value of -// map field. -message MessageContainingEnumCalledType { - enum Type { - TYPE_FOO = 0; - } - map type = 1; -} - -// Previously, message cannot contain map field called "entry". -message MessageContainingMapCalledEntry { - map entry = 1; -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_proto3.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_proto3.proto deleted file mode 100644 index 59673ea..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_proto3.proto +++ /dev/null @@ -1,68 +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. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file which is imported by unittest_proto3.proto to test importing. - -syntax = "proto3"; - -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In test_util.h we do -// "using namespace unittest_import = protobuf_unittest_import". -package protobuf_unittest_import; - -option optimize_for = SPEED; -option cc_enable_arenas = true; - -// Exercise the java_package option. -option java_package = "com.google.protobuf.test"; -option csharp_namespace = "Google.Protobuf.TestProtos"; - -// Do not set a java_outer_classname here to verify that Proto2 works without -// one. - -// Test public import -import public "google/protobuf/unittest_import_public_proto3.proto"; - -message ImportMessage { - int32 d = 1; -} - -enum ImportEnum { - IMPORT_ENUM_UNSPECIFIED = 0; - IMPORT_FOO = 7; - IMPORT_BAR = 8; - IMPORT_BAZ = 9; -} - diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_public_proto3.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_public_proto3.proto deleted file mode 100644 index d6f11e2..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_import_public_proto3.proto +++ /dev/null @@ -1,42 +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. - -// Author: liujisi@google.com (Pherl Liu) - -syntax = "proto3"; - -package protobuf_unittest_import; - -option java_package = "com.google.protobuf.test"; -option csharp_namespace = "Google.Protobuf.TestProtos"; - -message PublicImportMessage { - int32 e = 1; -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_proto3.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_proto3.proto deleted file mode 100644 index f59d217..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_proto3.proto +++ /dev/null @@ -1,388 +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. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file we will use for unit testing. - -syntax = "proto3"; - -// Some generic_services option(s) added automatically. -// See: http://go/proto2-generic-services-default -option cc_generic_services = true; // auto-added -option java_generic_services = true; // auto-added -option py_generic_services = true; // auto-added -option cc_enable_arenas = true; -option csharp_namespace = "Google.Protobuf.TestProtos"; - -import "google/protobuf/unittest_import_proto3.proto"; - -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -// In test_util.h we do "using namespace unittest = protobuf_unittest". -package protobuf_unittest; - -// Protos optimized for SPEED use a strict superset of the generated code -// of equivalent ones optimized for CODE_SIZE, so we should optimize all our -// tests for speed unless explicitly testing code size optimization. -option optimize_for = SPEED; - -option java_outer_classname = "UnittestProto"; - -// This proto includes every type of field in both singular and repeated -// forms. -message TestAllTypes { - message NestedMessage { - // The field name "b" fails to compile in proto1 because it conflicts with - // a local variable named "b" in one of the generated methods. Doh. - // This file needs to compile in proto1 to test backwards-compatibility. - int32 bb = 1; - } - - enum NestedEnum { - NESTED_ENUM_UNSPECIFIED = 0; - FOO = 1; - BAR = 2; - BAZ = 3; - NEG = -1; // Intentionally negative. - } - - // Singular - int32 single_int32 = 1; - int64 single_int64 = 2; - uint32 single_uint32 = 3; - uint64 single_uint64 = 4; - sint32 single_sint32 = 5; - sint64 single_sint64 = 6; - fixed32 single_fixed32 = 7; - fixed64 single_fixed64 = 8; - sfixed32 single_sfixed32 = 9; - sfixed64 single_sfixed64 = 10; - float single_float = 11; - double single_double = 12; - bool single_bool = 13; - string single_string = 14; - bytes single_bytes = 15; - - NestedMessage single_nested_message = 18; - ForeignMessage single_foreign_message = 19; - protobuf_unittest_import.ImportMessage single_import_message = 20; - - NestedEnum single_nested_enum = 21; - ForeignEnum single_foreign_enum = 22; - protobuf_unittest_import.ImportEnum single_import_enum = 23; - - // Defined in unittest_import_public.proto - protobuf_unittest_import.PublicImportMessage - single_public_import_message = 26; - - // Repeated - repeated int32 repeated_int32 = 31; - repeated int64 repeated_int64 = 32; - repeated uint32 repeated_uint32 = 33; - repeated uint64 repeated_uint64 = 34; - repeated sint32 repeated_sint32 = 35; - repeated sint64 repeated_sint64 = 36; - repeated fixed32 repeated_fixed32 = 37; - repeated fixed64 repeated_fixed64 = 38; - repeated sfixed32 repeated_sfixed32 = 39; - repeated sfixed64 repeated_sfixed64 = 40; - repeated float repeated_float = 41; - repeated double repeated_double = 42; - repeated bool repeated_bool = 43; - repeated string repeated_string = 44; - repeated bytes repeated_bytes = 45; - - repeated NestedMessage repeated_nested_message = 48; - repeated ForeignMessage repeated_foreign_message = 49; - repeated protobuf_unittest_import.ImportMessage repeated_import_message = 50; - - repeated NestedEnum repeated_nested_enum = 51; - repeated ForeignEnum repeated_foreign_enum = 52; - repeated protobuf_unittest_import.ImportEnum repeated_import_enum = 53; - // Defined in unittest_import_public.proto - repeated protobuf_unittest_import.PublicImportMessage - repeated_public_import_message = 54; - - // For oneof test - oneof oneof_field { - uint32 oneof_uint32 = 111; - NestedMessage oneof_nested_message = 112; - string oneof_string = 113; - bytes oneof_bytes = 114; - } -} - -// This proto includes a recusively nested message. -message NestedTestAllTypes { - NestedTestAllTypes child = 1; - TestAllTypes payload = 2; - repeated NestedTestAllTypes repeated_child = 3; -} - -message TestDeprecatedFields { - int32 deprecated_int32 = 1 [deprecated=true]; -} - -// Define these after TestAllTypes to make sure the compiler can handle -// that. -message ForeignMessage { - int32 c = 1; -} - -enum ForeignEnum { - FOREIGN_UNSPECIFIED = 0; - FOREIGN_FOO = 4; - FOREIGN_BAR = 5; - FOREIGN_BAZ = 6; -} - -message TestReservedFields { - reserved 2, 15, 9 to 11; - reserved "bar", "baz"; -} - - -// Test that we can use NestedMessage from outside TestAllTypes. -message TestForeignNested { - TestAllTypes.NestedMessage foreign_nested = 1; -} - -// Test that really large tag numbers don't break anything. -message TestReallyLargeTagNumber { - // The largest possible tag number is 2^28 - 1, since the wire format uses - // three bits to communicate wire type. - int32 a = 1; - int32 bb = 268435455; -} - -message TestRecursiveMessage { - TestRecursiveMessage a = 1; - int32 i = 2; -} - -// Test that mutual recursion works. -message TestMutualRecursionA { - TestMutualRecursionB bb = 1; -} - -message TestMutualRecursionB { - TestMutualRecursionA a = 1; - int32 optional_int32 = 2; -} - - -// Test an enum that has multiple values with the same number. -enum TestEnumWithDupValue { - TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED = 0; - option allow_alias = true; - - FOO1 = 1; - BAR1 = 2; - BAZ = 3; - FOO2 = 1; - BAR2 = 2; -} - -// Test an enum with large, unordered values. -enum TestSparseEnum { - TEST_SPARSE_ENUM_UNSPECIFIED = 0; - SPARSE_A = 123; - SPARSE_B = 62374; - SPARSE_C = 12589234; - SPARSE_D = -15; - SPARSE_E = -53452; - // In proto3, value 0 must be the first one specified - // SPARSE_F = 0; - SPARSE_G = 2; -} - -// Test message with CamelCase field names. This violates Protocol Buffer -// standard style. -message TestCamelCaseFieldNames { - int32 PrimitiveField = 1; - string StringField = 2; - ForeignEnum EnumField = 3; - ForeignMessage MessageField = 4; - - repeated int32 RepeatedPrimitiveField = 7; - repeated string RepeatedStringField = 8; - repeated ForeignEnum RepeatedEnumField = 9; - repeated ForeignMessage RepeatedMessageField = 10; -} - - -// We list fields out of order, to ensure that we're using field number and not -// field index to determine serialization order. -message TestFieldOrderings { - string my_string = 11; - int64 my_int = 1; - float my_float = 101; - message NestedMessage { - int64 oo = 2; - // The field name "b" fails to compile in proto1 because it conflicts with - // a local variable named "b" in one of the generated methods. Doh. - // This file needs to compile in proto1 to test backwards-compatibility. - int32 bb = 1; - } - - NestedMessage single_nested_message = 200; -} - -message SparseEnumMessage { - TestSparseEnum sparse_enum = 1; -} - -// Test String and Bytes: string is for valid UTF-8 strings -message OneString { - string data = 1; -} - -message MoreString { - repeated string data = 1; -} - -message OneBytes { - bytes data = 1; -} - -message MoreBytes { - bytes data = 1; -} - -// Test int32, uint32, int64, uint64, and bool are all compatible -message Int32Message { - int32 data = 1; -} - -message Uint32Message { - uint32 data = 1; -} - -message Int64Message { - int64 data = 1; -} - -message Uint64Message { - uint64 data = 1; -} - -message BoolMessage { - bool data = 1; -} - -// Test oneofs. -message TestOneof { - oneof foo { - int32 foo_int = 1; - string foo_string = 2; - TestAllTypes foo_message = 3; - } -} - -// Test messages for packed fields - -message TestPackedTypes { - repeated int32 packed_int32 = 90 [packed = true]; - repeated int64 packed_int64 = 91 [packed = true]; - repeated uint32 packed_uint32 = 92 [packed = true]; - repeated uint64 packed_uint64 = 93 [packed = true]; - repeated sint32 packed_sint32 = 94 [packed = true]; - repeated sint64 packed_sint64 = 95 [packed = true]; - repeated fixed32 packed_fixed32 = 96 [packed = true]; - repeated fixed64 packed_fixed64 = 97 [packed = true]; - repeated sfixed32 packed_sfixed32 = 98 [packed = true]; - repeated sfixed64 packed_sfixed64 = 99 [packed = true]; - repeated float packed_float = 100 [packed = true]; - repeated double packed_double = 101 [packed = true]; - repeated bool packed_bool = 102 [packed = true]; - repeated ForeignEnum packed_enum = 103 [packed = true]; -} - -// A message with the same fields as TestPackedTypes, but without packing. Used -// to test packed <-> unpacked wire compatibility. -message TestUnpackedTypes { - repeated int32 unpacked_int32 = 90 [packed = false]; - repeated int64 unpacked_int64 = 91 [packed = false]; - repeated uint32 unpacked_uint32 = 92 [packed = false]; - repeated uint64 unpacked_uint64 = 93 [packed = false]; - repeated sint32 unpacked_sint32 = 94 [packed = false]; - repeated sint64 unpacked_sint64 = 95 [packed = false]; - repeated fixed32 unpacked_fixed32 = 96 [packed = false]; - repeated fixed64 unpacked_fixed64 = 97 [packed = false]; - repeated sfixed32 unpacked_sfixed32 = 98 [packed = false]; - repeated sfixed64 unpacked_sfixed64 = 99 [packed = false]; - repeated float unpacked_float = 100 [packed = false]; - repeated double unpacked_double = 101 [packed = false]; - repeated bool unpacked_bool = 102 [packed = false]; - repeated ForeignEnum unpacked_enum = 103 [packed = false]; -} - -message TestRepeatedScalarDifferentTagSizes { - // Parsing repeated fixed size values used to fail. This message needs to be - // used in order to get a tag of the right size; all of the repeated fields - // in TestAllTypes didn't trigger the check. - repeated fixed32 repeated_fixed32 = 12; - // Check for a varint type, just for good measure. - repeated int32 repeated_int32 = 13; - - // These have two-byte tags. - repeated fixed64 repeated_fixed64 = 2046; - repeated int64 repeated_int64 = 2047; - - // Three byte tags. - repeated float repeated_float = 262142; - repeated uint64 repeated_uint64 = 262143; -} - -message TestCommentInjectionMessage { - // */ <- This should not close the generated doc comment - string a = 1; -} - - -// Test that RPC services work. -message FooRequest {} -message FooResponse {} - -message FooClientMessage {} -message FooServerMessage{} - -service TestService { - rpc Foo(FooRequest) returns (FooResponse); - rpc Bar(BarRequest) returns (BarResponse); -} - - -message BarRequest {} -message BarResponse {} - diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_well_known_types.proto b/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_well_known_types.proto deleted file mode 100644 index c907524..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/protos/src/google/protobuf/unittest_well_known_types.proto +++ /dev/null @@ -1,114 +0,0 @@ -syntax = "proto3"; - -package protobuf_unittest; - -option csharp_namespace = "Google.Protobuf.TestProtos"; -option java_multiple_files = true; -option java_package = "com.google.protobuf.test"; - -import "google/protobuf/any.proto"; -import "google/protobuf/api.proto"; -import "google/protobuf/duration.proto"; -import "google/protobuf/empty.proto"; -import "google/protobuf/field_mask.proto"; -import "google/protobuf/source_context.proto"; -import "google/protobuf/struct.proto"; -import "google/protobuf/timestamp.proto"; -import "google/protobuf/type.proto"; -import "google/protobuf/wrappers.proto"; - -// Test that we can include all well-known types. -// Each wrapper type is included separately, as languages -// map handle different wrappers in different ways. -message TestWellKnownTypes { - google.protobuf.Any any_field = 1; - google.protobuf.Api api_field = 2; - google.protobuf.Duration duration_field = 3; - google.protobuf.Empty empty_field = 4; - google.protobuf.FieldMask field_mask_field = 5; - google.protobuf.SourceContext source_context_field = 6; - google.protobuf.Struct struct_field = 7; - google.protobuf.Timestamp timestamp_field = 8; - google.protobuf.Type type_field = 9; - google.protobuf.DoubleValue double_field = 10; - google.protobuf.FloatValue float_field = 11; - google.protobuf.Int64Value int64_field = 12; - google.protobuf.UInt64Value uint64_field = 13; - google.protobuf.Int32Value int32_field = 14; - google.protobuf.UInt32Value uint32_field = 15; - google.protobuf.BoolValue bool_field = 16; - google.protobuf.StringValue string_field = 17; - google.protobuf.BytesValue bytes_field = 18; - // Part of struct, but useful to be able to test separately - google.protobuf.Value value_field = 19; -} - -// A repeated field for each well-known type. -message RepeatedWellKnownTypes { - repeated google.protobuf.Any any_field = 1; - repeated google.protobuf.Api api_field = 2; - repeated google.protobuf.Duration duration_field = 3; - repeated google.protobuf.Empty empty_field = 4; - repeated google.protobuf.FieldMask field_mask_field = 5; - repeated google.protobuf.SourceContext source_context_field = 6; - repeated google.protobuf.Struct struct_field = 7; - repeated google.protobuf.Timestamp timestamp_field = 8; - repeated google.protobuf.Type type_field = 9; - // These don't actually make a lot of sense, but they're not prohibited... - repeated google.protobuf.DoubleValue double_field = 10; - repeated google.protobuf.FloatValue float_field = 11; - repeated google.protobuf.Int64Value int64_field = 12; - repeated google.protobuf.UInt64Value uint64_field = 13; - repeated google.protobuf.Int32Value int32_field = 14; - repeated google.protobuf.UInt32Value uint32_field = 15; - repeated google.protobuf.BoolValue bool_field = 16; - repeated google.protobuf.StringValue string_field = 17; - repeated google.protobuf.BytesValue bytes_field = 18; -} - -message OneofWellKnownTypes { - oneof oneof_field { - google.protobuf.Any any_field = 1; - google.protobuf.Api api_field = 2; - google.protobuf.Duration duration_field = 3; - google.protobuf.Empty empty_field = 4; - google.protobuf.FieldMask field_mask_field = 5; - google.protobuf.SourceContext source_context_field = 6; - google.protobuf.Struct struct_field = 7; - google.protobuf.Timestamp timestamp_field = 8; - google.protobuf.Type type_field = 9; - google.protobuf.DoubleValue double_field = 10; - google.protobuf.FloatValue float_field = 11; - google.protobuf.Int64Value int64_field = 12; - google.protobuf.UInt64Value uint64_field = 13; - google.protobuf.Int32Value int32_field = 14; - google.protobuf.UInt32Value uint32_field = 15; - google.protobuf.BoolValue bool_field = 16; - google.protobuf.StringValue string_field = 17; - google.protobuf.BytesValue bytes_field = 18; - } -} - -// A map field for each well-known type. We only -// need to worry about the value part of the map being the -// well-known types, as messages can't be map keys. -message MapWellKnownTypes { - map any_field = 1; - map api_field = 2; - map duration_field = 3; - map empty_field = 4; - map field_mask_field = 5; - map source_context_field = 6; - map struct_field = 7; - map timestamp_field = 8; - map type_field = 9; - map double_field = 10; - map float_field = 11; - map int64_field = 12; - map uint64_field = 13; - map int32_field = 14; - map uint32_field = 15; - map bool_field = 16; - map string_field = 17; - map bytes_field = 18; -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/ByteStringTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/ByteStringTest.cs deleted file mode 100644 index 685e130..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/ByteStringTest.cs +++ /dev/null @@ -1,171 +0,0 @@ -#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.Text; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class ByteStringTest - { - [Test] - public void Equality() - { - ByteString b1 = ByteString.CopyFrom(1, 2, 3); - ByteString b2 = ByteString.CopyFrom(1, 2, 3); - ByteString b3 = ByteString.CopyFrom(1, 2, 4); - ByteString b4 = ByteString.CopyFrom(1, 2, 3, 4); - EqualityTester.AssertEquality(b1, b1); - EqualityTester.AssertEquality(b1, b2); - EqualityTester.AssertInequality(b1, b3); - EqualityTester.AssertInequality(b1, b4); - EqualityTester.AssertInequality(b1, null); -#pragma warning disable 1718 // Deliberately calling ==(b1, b1) and !=(b1, b1) - Assert.IsTrue(b1 == b1); - Assert.IsTrue(b1 == b2); - Assert.IsFalse(b1 == b3); - Assert.IsFalse(b1 == b4); - Assert.IsFalse(b1 == null); - Assert.IsTrue((ByteString) null == null); - Assert.IsFalse(b1 != b1); - Assert.IsFalse(b1 != b2); -#pragma warning disable 1718 - Assert.IsTrue(b1 != b3); - Assert.IsTrue(b1 != b4); - Assert.IsTrue(b1 != null); - Assert.IsFalse((ByteString) null != null); - } - - [Test] - public void EmptyByteStringHasZeroSize() - { - Assert.AreEqual(0, ByteString.Empty.Length); - } - - [Test] - public void CopyFromStringWithExplicitEncoding() - { - ByteString bs = ByteString.CopyFrom("AB", Encoding.Unicode); - Assert.AreEqual(4, bs.Length); - Assert.AreEqual(65, bs[0]); - Assert.AreEqual(0, bs[1]); - Assert.AreEqual(66, bs[2]); - Assert.AreEqual(0, bs[3]); - } - - [Test] - public void IsEmptyWhenEmpty() - { - Assert.IsTrue(ByteString.CopyFromUtf8("").IsEmpty); - } - - [Test] - public void IsEmptyWhenNotEmpty() - { - Assert.IsFalse(ByteString.CopyFromUtf8("X").IsEmpty); - } - - [Test] - public void CopyFromByteArrayCopiesContents() - { - byte[] data = new byte[1]; - data[0] = 10; - ByteString bs = ByteString.CopyFrom(data); - Assert.AreEqual(10, bs[0]); - data[0] = 5; - Assert.AreEqual(10, bs[0]); - } - - [Test] - public void ToByteArrayCopiesContents() - { - ByteString bs = ByteString.CopyFromUtf8("Hello"); - byte[] data = bs.ToByteArray(); - Assert.AreEqual((byte)'H', data[0]); - Assert.AreEqual((byte)'H', bs[0]); - data[0] = 0; - Assert.AreEqual(0, data[0]); - Assert.AreEqual((byte)'H', bs[0]); - } - - [Test] - public void CopyFromUtf8UsesUtf8() - { - ByteString bs = ByteString.CopyFromUtf8("\u20ac"); - Assert.AreEqual(3, bs.Length); - Assert.AreEqual(0xe2, bs[0]); - Assert.AreEqual(0x82, bs[1]); - Assert.AreEqual(0xac, bs[2]); - } - - [Test] - public void CopyFromPortion() - { - byte[] data = new byte[] {0, 1, 2, 3, 4, 5, 6}; - ByteString bs = ByteString.CopyFrom(data, 2, 3); - Assert.AreEqual(3, bs.Length); - Assert.AreEqual(2, bs[0]); - Assert.AreEqual(3, bs[1]); - } - - [Test] - public void ToStringUtf8() - { - ByteString bs = ByteString.CopyFromUtf8("\u20ac"); - Assert.AreEqual("\u20ac", bs.ToStringUtf8()); - } - - [Test] - public void ToStringWithExplicitEncoding() - { - ByteString bs = ByteString.CopyFrom("\u20ac", Encoding.Unicode); - Assert.AreEqual("\u20ac", bs.ToString(Encoding.Unicode)); - } - - [Test] - public void FromBase64_WithText() - { - byte[] data = new byte[] {0, 1, 2, 3, 4, 5, 6}; - string base64 = Convert.ToBase64String(data); - ByteString bs = ByteString.FromBase64(base64); - Assert.AreEqual(data, bs.ToByteArray()); - } - - [Test] - public void FromBase64_Empty() - { - // Optimization which also fixes issue 61. - Assert.AreSame(ByteString.Empty, ByteString.FromBase64("")); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs deleted file mode 100644 index 23af288..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs +++ /dev/null @@ -1,53 +0,0 @@ -#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 NUnit.Framework; - -namespace Google.Protobuf -{ - internal static class CodedInputStreamExtensions - { - public static void AssertNextTag(this CodedInputStream input, uint expectedTag) - { - uint tag = input.ReadTag(); - Assert.AreEqual(expectedTag, tag); - } - - public static T ReadMessage(this CodedInputStream stream, MessageParser parser) - where T : IMessage - { - var message = parser.CreateTemplate(); - stream.ReadMessage(message); - return message; - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamTest.cs deleted file mode 100644 index 73a578d..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedInputStreamTest.cs +++ /dev/null @@ -1,598 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class CodedInputStreamTest - { - /// - /// Helper to construct a byte array from a bunch of bytes. The inputs are - /// actually ints so that I can use hex notation and not get stupid errors - /// about precision. - /// - private static byte[] Bytes(params int[] bytesAsInts) - { - byte[] bytes = new byte[bytesAsInts.Length]; - for (int i = 0; i < bytesAsInts.Length; i++) - { - bytes[i] = (byte) bytesAsInts[i]; - } - return bytes; - } - - /// - /// Parses the given bytes using ReadRawVarint32() and ReadRawVarint64() - /// - private static void AssertReadVarint(byte[] data, ulong value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual((uint) value, input.ReadRawVarint32()); - - input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawVarint64()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - input = new CodedInputStream(new SmallBlockInputStream(data, bufferSize)); - Assert.AreEqual((uint) value, input.ReadRawVarint32()); - - input = new CodedInputStream(new SmallBlockInputStream(data, bufferSize)); - Assert.AreEqual(value, input.ReadRawVarint64()); - Assert.IsTrue(input.IsAtEnd); - } - - // Try reading directly from a MemoryStream. We want to verify that it - // doesn't read past the end of the input, so write an extra byte - this - // lets us test the position at the end. - MemoryStream memoryStream = new MemoryStream(); - memoryStream.Write(data, 0, data.Length); - memoryStream.WriteByte(0); - memoryStream.Position = 0; - Assert.AreEqual((uint) value, CodedInputStream.ReadRawVarint32(memoryStream)); - Assert.AreEqual(data.Length, memoryStream.Position); - } - - /// - /// Parses the given bytes using ReadRawVarint32() and ReadRawVarint64() and - /// expects them to fail with an InvalidProtocolBufferException whose - /// description matches the given one. - /// - private static void AssertReadVarintFailure(InvalidProtocolBufferException expected, byte[] data) - { - CodedInputStream input = new CodedInputStream(data); - var exception = Assert.Throws(() => input.ReadRawVarint32()); - Assert.AreEqual(expected.Message, exception.Message); - - input = new CodedInputStream(data); - exception = Assert.Throws(() => input.ReadRawVarint64()); - Assert.AreEqual(expected.Message, exception.Message); - - // Make sure we get the same error when reading directly from a Stream. - exception = Assert.Throws(() => CodedInputStream.ReadRawVarint32(new MemoryStream(data))); - Assert.AreEqual(expected.Message, exception.Message); - } - - [Test] - public void ReadVarint() - { - AssertReadVarint(Bytes(0x00), 0); - AssertReadVarint(Bytes(0x01), 1); - AssertReadVarint(Bytes(0x7f), 127); - // 14882 - AssertReadVarint(Bytes(0xa2, 0x74), (0x22 << 0) | (0x74 << 7)); - // 2961488830 - AssertReadVarint(Bytes(0xbe, 0xf7, 0x92, 0x84, 0x0b), - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x0bL << 28)); - - // 64-bit - // 7256456126 - AssertReadVarint(Bytes(0xbe, 0xf7, 0x92, 0x84, 0x1b), - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x1bL << 28)); - // 41256202580718336 - AssertReadVarint(Bytes(0x80, 0xe6, 0xeb, 0x9c, 0xc3, 0xc9, 0xa4, 0x49), - (0x00 << 0) | (0x66 << 7) | (0x6b << 14) | (0x1c << 21) | - (0x43L << 28) | (0x49L << 35) | (0x24L << 42) | (0x49L << 49)); - // 11964378330978735131 - AssertReadVarint(Bytes(0x9b, 0xa8, 0xf9, 0xc2, 0xbb, 0xd6, 0x80, 0x85, 0xa6, 0x01), - (0x1b << 0) | (0x28 << 7) | (0x79 << 14) | (0x42 << 21) | - (0x3bUL << 28) | (0x56UL << 35) | (0x00UL << 42) | - (0x05UL << 49) | (0x26UL << 56) | (0x01UL << 63)); - - // Failures - AssertReadVarintFailure( - InvalidProtocolBufferException.MalformedVarint(), - Bytes(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x00)); - AssertReadVarintFailure( - InvalidProtocolBufferException.TruncatedMessage(), - Bytes(0x80)); - } - - /// - /// Parses the given bytes using ReadRawLittleEndian32() and checks - /// that the result matches the given value. - /// - private static void AssertReadLittleEndian32(byte[] data, uint value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawLittleEndian32()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - input = new CodedInputStream( - new SmallBlockInputStream(data, blockSize)); - Assert.AreEqual(value, input.ReadRawLittleEndian32()); - Assert.IsTrue(input.IsAtEnd); - } - } - - /// - /// Parses the given bytes using ReadRawLittleEndian64() and checks - /// that the result matches the given value. - /// - private static void AssertReadLittleEndian64(byte[] data, ulong value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawLittleEndian64()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - input = new CodedInputStream( - new SmallBlockInputStream(data, blockSize)); - Assert.AreEqual(value, input.ReadRawLittleEndian64()); - Assert.IsTrue(input.IsAtEnd); - } - } - - [Test] - public void ReadLittleEndian() - { - AssertReadLittleEndian32(Bytes(0x78, 0x56, 0x34, 0x12), 0x12345678); - AssertReadLittleEndian32(Bytes(0xf0, 0xde, 0xbc, 0x9a), 0x9abcdef0); - - AssertReadLittleEndian64(Bytes(0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12), - 0x123456789abcdef0L); - AssertReadLittleEndian64( - Bytes(0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a), 0x9abcdef012345678UL); - } - - [Test] - public void DecodeZigZag32() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag32(0)); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag32(1)); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag32(2)); - Assert.AreEqual(-2, CodedInputStream.DecodeZigZag32(3)); - Assert.AreEqual(0x3FFFFFFF, CodedInputStream.DecodeZigZag32(0x7FFFFFFE)); - Assert.AreEqual(unchecked((int) 0xC0000000), CodedInputStream.DecodeZigZag32(0x7FFFFFFF)); - Assert.AreEqual(0x7FFFFFFF, CodedInputStream.DecodeZigZag32(0xFFFFFFFE)); - Assert.AreEqual(unchecked((int) 0x80000000), CodedInputStream.DecodeZigZag32(0xFFFFFFFF)); - } - - [Test] - public void DecodeZigZag64() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag64(0)); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag64(1)); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag64(2)); - Assert.AreEqual(-2, CodedInputStream.DecodeZigZag64(3)); - Assert.AreEqual(0x000000003FFFFFFFL, CodedInputStream.DecodeZigZag64(0x000000007FFFFFFEL)); - Assert.AreEqual(unchecked((long) 0xFFFFFFFFC0000000L), CodedInputStream.DecodeZigZag64(0x000000007FFFFFFFL)); - Assert.AreEqual(0x000000007FFFFFFFL, CodedInputStream.DecodeZigZag64(0x00000000FFFFFFFEL)); - Assert.AreEqual(unchecked((long) 0xFFFFFFFF80000000L), CodedInputStream.DecodeZigZag64(0x00000000FFFFFFFFL)); - Assert.AreEqual(0x7FFFFFFFFFFFFFFFL, CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFEL)); - Assert.AreEqual(unchecked((long) 0x8000000000000000L), CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFFL)); - } - - [Test] - public void ReadWholeMessage_VaryingBlockSizes() - { - TestAllTypes message = SampleMessages.CreateFullTestAllTypes(); - - byte[] rawBytes = message.ToByteArray(); - Assert.AreEqual(rawBytes.Length, message.CalculateSize()); - TestAllTypes message2 = TestAllTypes.Parser.ParseFrom(rawBytes); - Assert.AreEqual(message, message2); - - // Try different block sizes. - for (int blockSize = 1; blockSize < 256; blockSize *= 2) - { - message2 = TestAllTypes.Parser.ParseFrom(new SmallBlockInputStream(rawBytes, blockSize)); - Assert.AreEqual(message, message2); - } - } - - [Test] - public void ReadHugeBlob() - { - // Allocate and initialize a 1MB blob. - byte[] blob = new byte[1 << 20]; - for (int i = 0; i < blob.Length; i++) - { - blob[i] = (byte) i; - } - - // Make a message containing it. - var message = new TestAllTypes { SingleBytes = ByteString.CopyFrom(blob) }; - - // Serialize and parse it. Make sure to parse from an InputStream, not - // directly from a ByteString, so that CodedInputStream uses buffered - // reading. - TestAllTypes message2 = TestAllTypes.Parser.ParseFrom(message.ToByteString()); - - Assert.AreEqual(message, message2); - } - - [Test] - public void ReadMaliciouslyLargeBlob() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteRawVarint32(0x7FFFFFFF); - output.WriteRawBytes(new byte[32]); // Pad with a few random bytes. - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - Assert.AreEqual(tag, input.ReadTag()); - - Assert.Throws(() => input.ReadBytes()); - } - - internal static TestRecursiveMessage MakeRecursiveMessage(int depth) - { - if (depth == 0) - { - return new TestRecursiveMessage { I = 5 }; - } - else - { - return new TestRecursiveMessage { A = MakeRecursiveMessage(depth - 1) }; - } - } - - internal static void AssertMessageDepth(TestRecursiveMessage message, int depth) - { - if (depth == 0) - { - Assert.IsNull(message.A); - Assert.AreEqual(5, message.I); - } - else - { - Assert.IsNotNull(message.A); - AssertMessageDepth(message.A, depth - 1); - } - } - - [Test] - public void MaliciousRecursion() - { - ByteString atRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit).ToByteString(); - ByteString beyondRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit + 1).ToByteString(); - - AssertMessageDepth(TestRecursiveMessage.Parser.ParseFrom(atRecursiveLimit), CodedInputStream.DefaultRecursionLimit); - - Assert.Throws(() => TestRecursiveMessage.Parser.ParseFrom(beyondRecursiveLimit)); - - CodedInputStream input = CodedInputStream.CreateWithLimits(new MemoryStream(atRecursiveLimit.ToByteArray()), 1000000, CodedInputStream.DefaultRecursionLimit - 1); - Assert.Throws(() => TestRecursiveMessage.Parser.ParseFrom(input)); - } - - [Test] - public void SizeLimit() - { - // Have to use a Stream rather than ByteString.CreateCodedInput as SizeLimit doesn't - // apply to the latter case. - MemoryStream ms = new MemoryStream(SampleMessages.CreateFullTestAllTypes().ToByteArray()); - CodedInputStream input = CodedInputStream.CreateWithLimits(ms, 16, 100); - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(input)); - } - - /// - /// Tests that if we read an string that contains invalid UTF-8, no exception - /// is thrown. Instead, the invalid bytes are replaced with the Unicode - /// "replacement character" U+FFFD. - /// - [Test] - public void ReadInvalidUtf8() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteRawVarint32(1); - output.WriteRawBytes(new byte[] {0x80}); - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - - Assert.AreEqual(tag, input.ReadTag()); - string text = input.ReadString(); - Assert.AreEqual('\ufffd', text[0]); - } - - /// - /// A stream which limits the number of bytes it reads at a time. - /// We use this to make sure that CodedInputStream doesn't screw up when - /// reading in small blocks. - /// - private sealed class SmallBlockInputStream : MemoryStream - { - private readonly int blockSize; - - public SmallBlockInputStream(byte[] data, int blockSize) - : base(data) - { - this.blockSize = blockSize; - } - - public override int Read(byte[] buffer, int offset, int count) - { - return base.Read(buffer, offset, Math.Min(count, blockSize)); - } - } - - [Test] - public void TestNegativeEnum() - { - byte[] bytes = { 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01 }; - CodedInputStream input = new CodedInputStream(bytes); - Assert.AreEqual((int)SampleEnum.NegativeValue, input.ReadEnum()); - Assert.IsTrue(input.IsAtEnd); - } - - //Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily - [Test] - public void TestSlowPathAvoidance() - { - using (var ms = new MemoryStream()) - { - CodedOutputStream output = new CodedOutputStream(ms); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteBytes(ByteString.CopyFrom(new byte[100])); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteBytes(ByteString.CopyFrom(new byte[100])); - output.Flush(); - - ms.Position = 0; - CodedInputStream input = new CodedInputStream(ms, new byte[ms.Length / 2], 0, 0, false); - - uint tag = input.ReadTag(); - Assert.AreEqual(1, WireFormat.GetTagFieldNumber(tag)); - Assert.AreEqual(100, input.ReadBytes().Length); - - tag = input.ReadTag(); - Assert.AreEqual(2, WireFormat.GetTagFieldNumber(tag)); - Assert.AreEqual(100, input.ReadBytes().Length); - } - } - - [Test] - public void Tag0Throws() - { - var input = new CodedInputStream(new byte[] { 0 }); - Assert.Throws(() => input.ReadTag()); - } - - [Test] - public void SkipGroup() - { - // Create an output stream with a group in: - // Field 1: string "field 1" - // Field 2: group containing: - // Field 1: fixed int32 value 100 - // Field 2: string "ignore me" - // Field 3: nested group containing - // Field 1: fixed int64 value 1000 - // Field 3: string "field 3" - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString("field 1"); - - // The outer group... - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(1, WireFormat.WireType.Fixed32); - output.WriteFixed32(100); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteString("ignore me"); - // The nested group... - output.WriteTag(3, WireFormat.WireType.StartGroup); - output.WriteTag(1, WireFormat.WireType.Fixed64); - output.WriteFixed64(1000); - // Note: Not sure the field number is relevant for end group... - output.WriteTag(3, WireFormat.WireType.EndGroup); - - // End the outer group - output.WriteTag(2, WireFormat.WireType.EndGroup); - - output.WriteTag(3, WireFormat.WireType.LengthDelimited); - output.WriteString("field 3"); - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 1", input.ReadString()); - Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag()); - input.SkipLastField(); // Should consume the whole group, including the nested one. - Assert.AreEqual(WireFormat.MakeTag(3, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 3", input.ReadString()); - } - - [Test] - public void SkipGroup_WrongEndGroupTag() - { - // Create an output stream with: - // Field 1: string "field 1" - // Start group 2 - // Field 3: fixed int32 - // End group 4 (should give an error) - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString("field 1"); - - // The outer group... - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(3, WireFormat.WireType.Fixed32); - output.WriteFixed32(100); - output.WriteTag(4, WireFormat.WireType.EndGroup); - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 1", input.ReadString()); - Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void RogueEndGroupTag() - { - // If we have an end-group tag without a leading start-group tag, generated - // code will just call SkipLastField... so that should fail. - - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.EndGroup); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.EndGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void EndOfStreamReachedWhileSkippingGroup() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.StartGroup); - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(2, WireFormat.WireType.EndGroup); - - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - input.ReadTag(); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void RecursionLimitAppliedWhileSkippingGroup() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - for (int i = 0; i < CodedInputStream.DefaultRecursionLimit + 1; i++) - { - output.WriteTag(1, WireFormat.WireType.StartGroup); - } - for (int i = 0; i < CodedInputStream.DefaultRecursionLimit + 1; i++) - { - output.WriteTag(1, WireFormat.WireType.EndGroup); - } - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.StartGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void Construction_Invalid() - { - Assert.Throws(() => new CodedInputStream((byte[]) null)); - Assert.Throws(() => new CodedInputStream(null, 0, 0)); - Assert.Throws(() => new CodedInputStream((Stream) null)); - Assert.Throws(() => new CodedInputStream(new byte[10], 100, 0)); - Assert.Throws(() => new CodedInputStream(new byte[10], 5, 10)); - } - - [Test] - public void CreateWithLimits_InvalidLimits() - { - var stream = new MemoryStream(); - Assert.Throws(() => CodedInputStream.CreateWithLimits(stream, 0, 1)); - Assert.Throws(() => CodedInputStream.CreateWithLimits(stream, 1, 0)); - } - - [Test] - public void Dispose_DisposesUnderlyingStream() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanRead); - using (var cis = new CodedInputStream(memoryStream)) - { - } - Assert.IsFalse(memoryStream.CanRead); // Disposed - } - - [Test] - public void Dispose_WithLeaveOpen() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanRead); - using (var cis = new CodedInputStream(memoryStream, true)) - { - } - Assert.IsTrue(memoryStream.CanRead); // We left the stream open - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedOutputStreamTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedOutputStreamTest.cs deleted file mode 100644 index 01bd321..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/CodedOutputStreamTest.cs +++ /dev/null @@ -1,419 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class CodedOutputStreamTest - { - /// - /// Writes the given value using WriteRawVarint32() and WriteRawVarint64() and - /// checks that the result matches the given bytes - /// - private static void AssertWriteVarint(byte[] data, ulong value) - { - // Only do 32-bit write if the value fits in 32 bits. - if ((value >> 32) == 0) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawVarint32((uint) value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - // Also try computing size. - Assert.AreEqual(data.Length, CodedOutputStream.ComputeRawVarint32Size((uint) value)); - } - - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawVarint64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Also try computing size. - Assert.AreEqual(data.Length, CodedOutputStream.ComputeRawVarint64Size(value)); - } - - // Try different buffer sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - // Only do 32-bit write if the value fits in 32 bits. - if ((value >> 32) == 0) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = - new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawVarint32((uint) value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawVarint64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - } - - /// - /// Tests WriteRawVarint32() and WriteRawVarint64() - /// - [Test] - public void WriteVarint() - { - AssertWriteVarint(new byte[] {0x00}, 0); - AssertWriteVarint(new byte[] {0x01}, 1); - AssertWriteVarint(new byte[] {0x7f}, 127); - // 14882 - AssertWriteVarint(new byte[] {0xa2, 0x74}, (0x22 << 0) | (0x74 << 7)); - // 2961488830 - AssertWriteVarint(new byte[] {0xbe, 0xf7, 0x92, 0x84, 0x0b}, - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x0bL << 28)); - - // 64-bit - // 7256456126 - AssertWriteVarint(new byte[] {0xbe, 0xf7, 0x92, 0x84, 0x1b}, - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x1bL << 28)); - // 41256202580718336 - AssertWriteVarint( - new byte[] {0x80, 0xe6, 0xeb, 0x9c, 0xc3, 0xc9, 0xa4, 0x49}, - (0x00 << 0) | (0x66 << 7) | (0x6b << 14) | (0x1c << 21) | - (0x43UL << 28) | (0x49L << 35) | (0x24UL << 42) | (0x49UL << 49)); - // 11964378330978735131 - AssertWriteVarint( - new byte[] {0x9b, 0xa8, 0xf9, 0xc2, 0xbb, 0xd6, 0x80, 0x85, 0xa6, 0x01}, - unchecked((ulong) - ((0x1b << 0) | (0x28 << 7) | (0x79 << 14) | (0x42 << 21) | - (0x3bL << 28) | (0x56L << 35) | (0x00L << 42) | - (0x05L << 49) | (0x26L << 56) | (0x01L << 63)))); - } - - /// - /// Parses the given bytes using WriteRawLittleEndian32() and checks - /// that the result matches the given value. - /// - private static void AssertWriteLittleEndian32(byte[] data, uint value) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawLittleEndian32(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Try different buffer sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - rawOutput = new MemoryStream(); - output = new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawLittleEndian32(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - - /// - /// Parses the given bytes using WriteRawLittleEndian64() and checks - /// that the result matches the given value. - /// - private static void AssertWriteLittleEndian64(byte[] data, ulong value) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawLittleEndian64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - rawOutput = new MemoryStream(); - output = new CodedOutputStream(rawOutput, blockSize); - output.WriteRawLittleEndian64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - - /// - /// Tests writeRawLittleEndian32() and writeRawLittleEndian64(). - /// - [Test] - public void WriteLittleEndian() - { - AssertWriteLittleEndian32(new byte[] {0x78, 0x56, 0x34, 0x12}, 0x12345678); - AssertWriteLittleEndian32(new byte[] {0xf0, 0xde, 0xbc, 0x9a}, 0x9abcdef0); - - AssertWriteLittleEndian64( - new byte[] {0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}, - 0x123456789abcdef0L); - AssertWriteLittleEndian64( - new byte[] {0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a}, - 0x9abcdef012345678UL); - } - - [Test] - public void WriteWholeMessage_VaryingBlockSizes() - { - TestAllTypes message = SampleMessages.CreateFullTestAllTypes(); - - byte[] rawBytes = message.ToByteArray(); - - // Try different block sizes. - for (int blockSize = 1; blockSize < 256; blockSize *= 2) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput, blockSize); - message.WriteTo(output); - output.Flush(); - Assert.AreEqual(rawBytes, rawOutput.ToArray()); - } - } - - [Test] - public void EncodeZigZag32() - { - Assert.AreEqual(0u, CodedOutputStream.EncodeZigZag32(0)); - Assert.AreEqual(1u, CodedOutputStream.EncodeZigZag32(-1)); - Assert.AreEqual(2u, CodedOutputStream.EncodeZigZag32(1)); - Assert.AreEqual(3u, CodedOutputStream.EncodeZigZag32(-2)); - Assert.AreEqual(0x7FFFFFFEu, CodedOutputStream.EncodeZigZag32(0x3FFFFFFF)); - Assert.AreEqual(0x7FFFFFFFu, CodedOutputStream.EncodeZigZag32(unchecked((int) 0xC0000000))); - Assert.AreEqual(0xFFFFFFFEu, CodedOutputStream.EncodeZigZag32(0x7FFFFFFF)); - Assert.AreEqual(0xFFFFFFFFu, CodedOutputStream.EncodeZigZag32(unchecked((int) 0x80000000))); - } - - [Test] - public void EncodeZigZag64() - { - Assert.AreEqual(0u, CodedOutputStream.EncodeZigZag64(0)); - Assert.AreEqual(1u, CodedOutputStream.EncodeZigZag64(-1)); - Assert.AreEqual(2u, CodedOutputStream.EncodeZigZag64(1)); - Assert.AreEqual(3u, CodedOutputStream.EncodeZigZag64(-2)); - Assert.AreEqual(0x000000007FFFFFFEuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x000000003FFFFFFFUL))); - Assert.AreEqual(0x000000007FFFFFFFuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0xFFFFFFFFC0000000UL))); - Assert.AreEqual(0x00000000FFFFFFFEuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x000000007FFFFFFFUL))); - Assert.AreEqual(0x00000000FFFFFFFFuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0xFFFFFFFF80000000UL))); - Assert.AreEqual(0xFFFFFFFFFFFFFFFEL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x7FFFFFFFFFFFFFFFUL))); - Assert.AreEqual(0xFFFFFFFFFFFFFFFFL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x8000000000000000UL))); - } - - [Test] - public void RoundTripZigZag32() - { - // Some easier-to-verify round-trip tests. The inputs (other than 0, 1, -1) - // were chosen semi-randomly via keyboard bashing. - Assert.AreEqual(0, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(0))); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(1))); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(-1))); - Assert.AreEqual(14927, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(14927))); - Assert.AreEqual(-3612, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(-3612))); - } - - [Test] - public void RoundTripZigZag64() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(0))); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(1))); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-1))); - Assert.AreEqual(14927, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(14927))); - Assert.AreEqual(-3612, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-3612))); - - Assert.AreEqual(856912304801416L, - CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(856912304801416L))); - Assert.AreEqual(-75123905439571256L, - CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-75123905439571256L))); - } - - [Test] - public void TestNegativeEnumNoTag() - { - Assert.AreEqual(10, CodedOutputStream.ComputeInt32Size(-2)); - Assert.AreEqual(10, CodedOutputStream.ComputeEnumSize((int) SampleEnum.NegativeValue)); - - byte[] bytes = new byte[10]; - CodedOutputStream output = new CodedOutputStream(bytes); - output.WriteEnum((int) SampleEnum.NegativeValue); - - Assert.AreEqual(0, output.SpaceLeft); - Assert.AreEqual("FE-FF-FF-FF-FF-FF-FF-FF-FF-01", BitConverter.ToString(bytes)); - } - - [Test] - public void TestCodedInputOutputPosition() - { - byte[] content = new byte[110]; - for (int i = 0; i < content.Length; i++) - content[i] = (byte)i; - - byte[] child = new byte[120]; - { - MemoryStream ms = new MemoryStream(child); - CodedOutputStream cout = new CodedOutputStream(ms, 20); - // Field 11: numeric value: 500 - cout.WriteTag(11, WireFormat.WireType.Varint); - Assert.AreEqual(1, cout.Position); - cout.WriteInt32(500); - Assert.AreEqual(3, cout.Position); - //Field 12: length delimited 120 bytes - cout.WriteTag(12, WireFormat.WireType.LengthDelimited); - Assert.AreEqual(4, cout.Position); - cout.WriteBytes(ByteString.CopyFrom(content)); - Assert.AreEqual(115, cout.Position); - // Field 13: fixed numeric value: 501 - cout.WriteTag(13, WireFormat.WireType.Fixed32); - Assert.AreEqual(116, cout.Position); - cout.WriteSFixed32(501); - Assert.AreEqual(120, cout.Position); - cout.Flush(); - } - - byte[] bytes = new byte[130]; - { - CodedOutputStream cout = new CodedOutputStream(bytes); - // Field 1: numeric value: 500 - cout.WriteTag(1, WireFormat.WireType.Varint); - Assert.AreEqual(1, cout.Position); - cout.WriteInt32(500); - Assert.AreEqual(3, cout.Position); - //Field 2: length delimited 120 bytes - cout.WriteTag(2, WireFormat.WireType.LengthDelimited); - Assert.AreEqual(4, cout.Position); - cout.WriteBytes(ByteString.CopyFrom(child)); - Assert.AreEqual(125, cout.Position); - // Field 3: fixed numeric value: 500 - cout.WriteTag(3, WireFormat.WireType.Fixed32); - Assert.AreEqual(126, cout.Position); - cout.WriteSFixed32(501); - Assert.AreEqual(130, cout.Position); - cout.Flush(); - } - // Now test Input stream: - { - CodedInputStream cin = new CodedInputStream(new MemoryStream(bytes), new byte[50], 0, 0, false); - Assert.AreEqual(0, cin.Position); - // Field 1: - uint tag = cin.ReadTag(); - Assert.AreEqual(1, tag >> 3); - Assert.AreEqual(1, cin.Position); - Assert.AreEqual(500, cin.ReadInt32()); - Assert.AreEqual(3, cin.Position); - //Field 2: - tag = cin.ReadTag(); - Assert.AreEqual(2, tag >> 3); - Assert.AreEqual(4, cin.Position); - int childlen = cin.ReadLength(); - Assert.AreEqual(120, childlen); - Assert.AreEqual(5, cin.Position); - int oldlimit = cin.PushLimit((int)childlen); - Assert.AreEqual(5, cin.Position); - // Now we are reading child message - { - // Field 11: numeric value: 500 - tag = cin.ReadTag(); - Assert.AreEqual(11, tag >> 3); - Assert.AreEqual(6, cin.Position); - Assert.AreEqual(500, cin.ReadInt32()); - Assert.AreEqual(8, cin.Position); - //Field 12: length delimited 120 bytes - tag = cin.ReadTag(); - Assert.AreEqual(12, tag >> 3); - Assert.AreEqual(9, cin.Position); - ByteString bstr = cin.ReadBytes(); - Assert.AreEqual(110, bstr.Length); - Assert.AreEqual((byte) 109, bstr[109]); - Assert.AreEqual(120, cin.Position); - // Field 13: fixed numeric value: 501 - tag = cin.ReadTag(); - Assert.AreEqual(13, tag >> 3); - // ROK - Previously broken here, this returned 126 failing to account for bufferSizeAfterLimit - Assert.AreEqual(121, cin.Position); - Assert.AreEqual(501, cin.ReadSFixed32()); - Assert.AreEqual(125, cin.Position); - Assert.IsTrue(cin.IsAtEnd); - } - cin.PopLimit(oldlimit); - Assert.AreEqual(125, cin.Position); - // Field 3: fixed numeric value: 501 - tag = cin.ReadTag(); - Assert.AreEqual(3, tag >> 3); - Assert.AreEqual(126, cin.Position); - Assert.AreEqual(501, cin.ReadSFixed32()); - Assert.AreEqual(130, cin.Position); - Assert.IsTrue(cin.IsAtEnd); - } - } - - [Test] - public void Dispose_DisposesUnderlyingStream() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanWrite); - using (var cos = new CodedOutputStream(memoryStream)) - { - cos.WriteRawByte(0); - Assert.AreEqual(0, memoryStream.Position); // Not flushed yet - } - Assert.AreEqual(1, memoryStream.ToArray().Length); // Flushed data from CodedOutputStream to MemoryStream - Assert.IsFalse(memoryStream.CanWrite); // Disposed - } - - [Test] - public void Dispose_WithLeaveOpen() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanWrite); - using (var cos = new CodedOutputStream(memoryStream, true)) - { - cos.WriteRawByte(0); - Assert.AreEqual(0, memoryStream.Position); // Not flushed yet - } - Assert.AreEqual(1, memoryStream.Position); // Flushed data from CodedOutputStream to MemoryStream - Assert.IsTrue(memoryStream.CanWrite); // We left the stream open - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/MapFieldTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/MapFieldTest.cs deleted file mode 100644 index 3b4e1d3..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/MapFieldTest.cs +++ /dev/null @@ -1,532 +0,0 @@ -#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.Generic; -using Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.Linq; - -namespace Google.Protobuf.Collections -{ - /// - /// Tests for MapField which aren't reliant on the encoded format - - /// tests for serialization/deserialization are part of GeneratedMessageTest. - /// - public class MapFieldTest - { - [Test] - public void Clone_ClonesMessages() - { - var message = new ForeignMessage { C = 20 }; - var map = new MapField { { "x", message } }; - var clone = map.Clone(); - map["x"].C = 30; - Assert.AreEqual(20, clone["x"].C); - } - - [Test] - public void NullValuesProhibited() - { - TestNullValues(0); - TestNullValues(""); - TestNullValues(new TestAllTypes()); - } - - private void TestNullValues(T nonNullValue) - { - var map = new MapField(); - var nullValue = (T) (object) null; - Assert.Throws(() => map.Add(0, nullValue)); - Assert.Throws(() => map[0] = nullValue); - map.Add(1, nonNullValue); - map[1] = nonNullValue; - } - - [Test] - public void Add_ForbidsNullKeys() - { - var map = new MapField(); - Assert.Throws(() => map.Add(null, new ForeignMessage())); - } - - [Test] - public void Indexer_ForbidsNullKeys() - { - var map = new MapField(); - Assert.Throws(() => map[null] = new ForeignMessage()); - } - - [Test] - public void AddPreservesInsertionOrder() - { - var map = new MapField(); - map.Add("a", "v1"); - map.Add("b", "v2"); - map.Add("c", "v3"); - map.Remove("b"); - map.Add("d", "v4"); - CollectionAssert.AreEqual(new[] { "a", "c", "d" }, map.Keys); - CollectionAssert.AreEqual(new[] { "v1", "v3", "v4" }, map.Values); - } - - [Test] - public void EqualityIsOrderInsensitive() - { - var map1 = new MapField(); - map1.Add("a", "v1"); - map1.Add("b", "v2"); - - var map2 = new MapField(); - map2.Add("b", "v2"); - map2.Add("a", "v1"); - - EqualityTester.AssertEquality(map1, map2); - } - - [Test] - public void EqualityIsKeySensitive() - { - var map1 = new MapField(); - map1.Add("first key", "v1"); - map1.Add("second key", "v2"); - - var map2 = new MapField(); - map2.Add("third key", "v1"); - map2.Add("fourth key", "v2"); - - EqualityTester.AssertInequality(map1, map2); - } - - [Test] - public void Equality_Simple() - { - var map = new MapField(); - EqualityTester.AssertEquality(map, map); - EqualityTester.AssertInequality(map, null); - Assert.IsFalse(map.Equals(new object())); - } - - [Test] - public void EqualityIsValueSensitive() - { - // Note: Without some care, it's a little easier than one might - // hope to see hash collisions, but only in some environments... - var map1 = new MapField(); - map1.Add("a", "first value"); - map1.Add("b", "second value"); - - var map2 = new MapField(); - map2.Add("a", "third value"); - map2.Add("b", "fourth value"); - - EqualityTester.AssertInequality(map1, map2); - } - - [Test] - public void Add_Dictionary() - { - var map1 = new MapField - { - { "x", "y" }, - { "a", "b" } - }; - var map2 = new MapField - { - { "before", "" }, - map1, - { "after", "" } - }; - var expected = new MapField - { - { "before", "" }, - { "x", "y" }, - { "a", "b" }, - { "after", "" } - }; - Assert.AreEqual(expected, map2); - CollectionAssert.AreEqual(new[] { "before", "x", "a", "after" }, map2.Keys); - } - - // General IDictionary behavior tests - [Test] - public void Add_KeyAlreadyExists() - { - var map = new MapField(); - map.Add("foo", "bar"); - Assert.Throws(() => map.Add("foo", "baz")); - } - - [Test] - public void Add_Pair() - { - var map = new MapField(); - ICollection> collection = map; - collection.Add(NewKeyValuePair("x", "y")); - Assert.AreEqual("y", map["x"]); - Assert.Throws(() => collection.Add(NewKeyValuePair("x", "z"))); - } - - [Test] - public void Contains_Pair() - { - var map = new MapField { { "x", "y" } }; - ICollection> collection = map; - Assert.IsTrue(collection.Contains(NewKeyValuePair("x", "y"))); - Assert.IsFalse(collection.Contains(NewKeyValuePair("x", "z"))); - Assert.IsFalse(collection.Contains(NewKeyValuePair("z", "y"))); - } - - [Test] - public void Remove_Key() - { - var map = new MapField(); - map.Add("foo", "bar"); - Assert.AreEqual(1, map.Count); - Assert.IsFalse(map.Remove("missing")); - Assert.AreEqual(1, map.Count); - Assert.IsTrue(map.Remove("foo")); - Assert.AreEqual(0, map.Count); - Assert.Throws(() => map.Remove(null)); - } - - [Test] - public void Remove_Pair() - { - var map = new MapField(); - map.Add("foo", "bar"); - ICollection> collection = map; - Assert.AreEqual(1, map.Count); - Assert.IsFalse(collection.Remove(NewKeyValuePair("wrong key", "bar"))); - Assert.AreEqual(1, map.Count); - Assert.IsFalse(collection.Remove(NewKeyValuePair("foo", "wrong value"))); - Assert.AreEqual(1, map.Count); - Assert.IsTrue(collection.Remove(NewKeyValuePair("foo", "bar"))); - Assert.AreEqual(0, map.Count); - Assert.Throws(() => collection.Remove(new KeyValuePair(null, ""))); - } - - [Test] - public void CopyTo_Pair() - { - var map = new MapField(); - map.Add("foo", "bar"); - ICollection> collection = map; - KeyValuePair[] array = new KeyValuePair[3]; - collection.CopyTo(array, 1); - Assert.AreEqual(NewKeyValuePair("foo", "bar"), array[1]); - } - - [Test] - public void Clear() - { - var map = new MapField { { "x", "y" } }; - Assert.AreEqual(1, map.Count); - map.Clear(); - Assert.AreEqual(0, map.Count); - map.Add("x", "y"); - Assert.AreEqual(1, map.Count); - } - - [Test] - public void Indexer_Get() - { - var map = new MapField { { "x", "y" } }; - Assert.AreEqual("y", map["x"]); - Assert.Throws(() => { var ignored = map["z"]; }); - } - - [Test] - public void Indexer_Set() - { - var map = new MapField(); - map["x"] = "y"; - Assert.AreEqual("y", map["x"]); - map["x"] = "z"; // This won't throw, unlike Add. - Assert.AreEqual("z", map["x"]); - } - - [Test] - public void GetEnumerator_NonGeneric() - { - IEnumerable map = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { new KeyValuePair("x", "y") }, - map.Cast().ToList()); - } - - // Test for the explicitly-implemented non-generic IDictionary interface - [Test] - public void IDictionary_GetEnumerator() - { - IDictionary map = new MapField { { "x", "y" } }; - var enumerator = map.GetEnumerator(); - - // Commented assertions show an ideal situation - it looks like - // the LinkedList enumerator doesn't throw when you ask for the current entry - // at an inappropriate time; fixing this would be more work than it's worth. - // Assert.Throws(() => enumerator.Current.GetHashCode()); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("x", enumerator.Key); - Assert.AreEqual("y", enumerator.Value); - Assert.AreEqual(new DictionaryEntry("x", "y"), enumerator.Current); - Assert.AreEqual(new DictionaryEntry("x", "y"), enumerator.Entry); - Assert.IsFalse(enumerator.MoveNext()); - // Assert.Throws(() => enumerator.Current.GetHashCode()); - enumerator.Reset(); - // Assert.Throws(() => enumerator.Current.GetHashCode()); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("x", enumerator.Key); // Assume the rest are okay - } - - [Test] - public void IDictionary_Add() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - dictionary.Add("a", "b"); - Assert.AreEqual("b", map["a"]); - Assert.Throws(() => dictionary.Add("a", "duplicate")); - Assert.Throws(() => dictionary.Add(new object(), "key is bad")); - Assert.Throws(() => dictionary.Add("value is bad", new object())); - } - - [Test] - public void IDictionary_Contains() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - - Assert.IsFalse(dictionary.Contains("a")); - Assert.IsFalse(dictionary.Contains(5)); - // Surprising, but IDictionary.Contains is only about keys. - Assert.IsFalse(dictionary.Contains(new DictionaryEntry("x", "y"))); - Assert.IsTrue(dictionary.Contains("x")); - } - - [Test] - public void IDictionary_Remove() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - dictionary.Remove("a"); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove(5); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove(new DictionaryEntry("x", "y")); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove("x"); - Assert.AreEqual(0, dictionary.Count); - Assert.Throws(() => dictionary.Remove(null)); - } - - [Test] - public void IDictionary_CopyTo() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - var array = new DictionaryEntry[3]; - dictionary.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { default(DictionaryEntry), new DictionaryEntry("x", "y"), default(DictionaryEntry) }, - array); - var objectArray = new object[3]; - dictionary.CopyTo(objectArray, 1); - CollectionAssert.AreEqual(new object[] { null, new DictionaryEntry("x", "y"), null }, - objectArray); - } - - [Test] - public void IDictionary_IsFixedSize() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - Assert.IsFalse(dictionary.IsFixedSize); - } - - [Test] - public void IDictionary_Keys() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { "x" }, dictionary.Keys); - } - - [Test] - public void IDictionary_Values() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { "y" }, dictionary.Values); - } - - [Test] - public void IDictionary_IsSynchronized() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.IsFalse(dictionary.IsSynchronized); - } - - [Test] - public void IDictionary_SyncRoot() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.AreSame(dictionary, dictionary.SyncRoot); - } - - [Test] - public void IDictionary_Indexer_Get() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.AreEqual("y", dictionary["x"]); - Assert.IsNull(dictionary["a"]); - Assert.IsNull(dictionary[5]); - Assert.Throws(() => dictionary[null].GetHashCode()); - } - - [Test] - public void IDictionary_Indexer_Set() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - map["a"] = "b"; - Assert.AreEqual("b", map["a"]); - map["a"] = "c"; - Assert.AreEqual("c", map["a"]); - Assert.Throws(() => dictionary[5] = "x"); - Assert.Throws(() => dictionary["x"] = 5); - Assert.Throws(() => dictionary[null] = "z"); - Assert.Throws(() => dictionary["x"] = null); - } - - [Test] - public void KeysReturnsLiveView() - { - var map = new MapField(); - var keys = map.Keys; - CollectionAssert.AreEqual(new string[0], keys); - map["foo"] = "bar"; - map["x"] = "y"; - CollectionAssert.AreEqual(new[] { "foo", "x" }, keys); - } - - [Test] - public void ValuesReturnsLiveView() - { - var map = new MapField(); - var values = map.Values; - CollectionAssert.AreEqual(new string[0], values); - map["foo"] = "bar"; - map["x"] = "y"; - CollectionAssert.AreEqual(new[] { "bar", "y" }, values); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void ViewsAreReadOnly() - { - var map = new MapField(); - var keys = map.Keys; - Assert.IsTrue(keys.IsReadOnly); - Assert.Throws(() => keys.Clear()); - Assert.Throws(() => keys.Remove("a")); - Assert.Throws(() => keys.Add("a")); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void ViewCopyTo() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var keys = map.Keys; - var array = new string[4]; - Assert.Throws(() => keys.CopyTo(array, 3)); - Assert.Throws(() => keys.CopyTo(array, -1)); - keys.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { null, "foo", "x", null }, array); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void NonGenericViewCopyTo() - { - IDictionary map = new MapField { { "foo", "bar" }, { "x", "y" } }; - ICollection keys = map.Keys; - // Note the use of the Array type here rather than string[] - Array array = new string[4]; - Assert.Throws(() => keys.CopyTo(array, 3)); - Assert.Throws(() => keys.CopyTo(array, -1)); - keys.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { null, "foo", "x", null }, array); - } - - [Test] - public void KeysContains() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var keys = map.Keys; - Assert.IsTrue(keys.Contains("foo")); - Assert.IsFalse(keys.Contains("bar")); // It's a value! - Assert.IsFalse(keys.Contains("1")); - // Keys can't be null, so we should prevent contains check - Assert.Throws(() => keys.Contains(null)); - } - - [Test] - public void ValuesContains() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var values = map.Values; - Assert.IsTrue(values.Contains("bar")); - Assert.IsFalse(values.Contains("foo")); // It's a key! - Assert.IsFalse(values.Contains("1")); - // Values can be null, so this makes sense - Assert.IsFalse(values.Contains(null)); - } - - [Test] - public void ToString_StringToString() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - Assert.AreEqual("{ \"foo\": \"bar\", \"x\": \"y\" }", map.ToString()); - } - - [Test] - public void ToString_UnsupportedKeyType() - { - var map = new MapField { { 10, "foo" } }; - Assert.Throws(() => map.ToString()); - } - - private static KeyValuePair NewKeyValuePair(TKey key, TValue value) - { - return new KeyValuePair(key, value); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs deleted file mode 100644 index 6852f75..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs +++ /dev/null @@ -1,746 +0,0 @@ -#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.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; - -namespace Google.Protobuf.Collections -{ - public class RepeatedFieldTest - { - [Test] - public void NullValuesRejected() - { - var list = new RepeatedField(); - Assert.Throws(() => list.Add((string)null)); - Assert.Throws(() => list.Add((IEnumerable)null)); - Assert.Throws(() => list.Add((RepeatedField)null)); - Assert.Throws(() => list.Contains(null)); - Assert.Throws(() => list.IndexOf(null)); - } - - [Test] - public void Add_SingleItem() - { - var list = new RepeatedField(); - list.Add("foo"); - Assert.AreEqual(1, list.Count); - Assert.AreEqual("foo", list[0]); - } - - [Test] - public void Add_Sequence() - { - var list = new RepeatedField(); - list.Add(new[] { "foo", "bar" }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_SlowPath() - { - var list = new RepeatedField(); - list.AddRange(new[] { "foo", "bar" }.Select(x => x)); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_SlowPath_NullsProhibited_ReferenceType() - { - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new[] { "foo", null }.Select(x => x))); - } - - [Test] - public void AddRange_SlowPath_NullsProhibited_NullableValueType() - { - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new[] { 20, (int?)null }.Select(x => x))); - } - - [Test] - public void AddRange_Optimized_NonNullableValueType() - { - var list = new RepeatedField(); - list.AddRange(new List { 20, 30 }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual(20, list[0]); - Assert.AreEqual(30, list[1]); - } - - [Test] - public void AddRange_Optimized_ReferenceType() - { - var list = new RepeatedField(); - list.AddRange(new List { "foo", "bar" }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_Optimized_NullableValueType() - { - var list = new RepeatedField(); - list.AddRange(new List { 20, 30 }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual((int?) 20, list[0]); - Assert.AreEqual((int?) 30, list[1]); - } - - [Test] - public void AddRange_Optimized_NullsProhibited_ReferenceType() - { - // We don't just trust that a collection with a nullable element type doesn't contain nulls - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new List { "foo", null })); - } - - [Test] - public void AddRange_Optimized_NullsProhibited_NullableValueType() - { - // We don't just trust that a collection with a nullable element type doesn't contain nulls - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new List { 20, null })); - } - - [Test] - public void AddRange_AlreadyNotEmpty() - { - var list = new RepeatedField { 1, 2, 3 }; - list.AddRange(new List { 4, 5, 6 }); - CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, list); - } - - [Test] - public void AddRange_RepeatedField() - { - var list = new RepeatedField { "original" }; - list.AddRange(new RepeatedField { "foo", "bar" }); - Assert.AreEqual(3, list.Count); - Assert.AreEqual("original", list[0]); - Assert.AreEqual("foo", list[1]); - Assert.AreEqual("bar", list[2]); - } - - [Test] - public void RemoveAt_Valid() - { - var list = new RepeatedField { "first", "second", "third" }; - list.RemoveAt(1); - CollectionAssert.AreEqual(new[] { "first", "third" }, list); - // Just check that these don't throw... - list.RemoveAt(list.Count - 1); // Now the count will be 1... - list.RemoveAt(0); - Assert.AreEqual(0, list.Count); - } - - [Test] - public void RemoveAt_Invalid() - { - var list = new RepeatedField { "first", "second", "third" }; - Assert.Throws(() => list.RemoveAt(-1)); - Assert.Throws(() => list.RemoveAt(3)); - } - - [Test] - public void Insert_Valid() - { - var list = new RepeatedField { "first", "second" }; - list.Insert(1, "middle"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second" }, list); - list.Insert(3, "end"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second", "end" }, list); - list.Insert(0, "start"); - CollectionAssert.AreEqual(new[] { "start", "first", "middle", "second", "end" }, list); - } - - [Test] - public void Insert_Invalid() - { - var list = new RepeatedField { "first", "second" }; - Assert.Throws(() => list.Insert(-1, "foo")); - Assert.Throws(() => list.Insert(3, "foo")); - Assert.Throws(() => list.Insert(0, null)); - } - - [Test] - public void Equals_RepeatedField() - { - var list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.Equals((RepeatedField) null)); - Assert.IsTrue(list.Equals(list)); - Assert.IsFalse(list.Equals(new RepeatedField { "first", "third" })); - Assert.IsFalse(list.Equals(new RepeatedField { "first" })); - Assert.IsTrue(list.Equals(new RepeatedField { "first", "second" })); - } - - [Test] - public void Equals_Object() - { - var list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.Equals((object) null)); - Assert.IsTrue(list.Equals((object) list)); - Assert.IsFalse(list.Equals((object) new RepeatedField { "first", "third" })); - Assert.IsFalse(list.Equals((object) new RepeatedField { "first" })); - Assert.IsTrue(list.Equals((object) new RepeatedField { "first", "second" })); - Assert.IsFalse(list.Equals(new object())); - } - - [Test] - public void GetEnumerator_GenericInterface() - { - IEnumerable list = new RepeatedField { "first", "second" }; - // Select gets rid of the optimizations in ToList... - CollectionAssert.AreEqual(new[] { "first", "second" }, list.Select(x => x).ToList()); - } - - [Test] - public void GetEnumerator_NonGenericInterface() - { - IEnumerable list = new RepeatedField { "first", "second" }; - CollectionAssert.AreEqual(new[] { "first", "second" }, list.Cast().ToList()); - } - - [Test] - public void CopyTo() - { - var list = new RepeatedField { "first", "second" }; - string[] stringArray = new string[4]; - list.CopyTo(stringArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, stringArray); - } - - [Test] - public void Indexer_Get() - { - var list = new RepeatedField { "first", "second" }; - Assert.AreEqual("first", list[0]); - Assert.AreEqual("second", list[1]); - Assert.Throws(() => list[-1].GetHashCode()); - Assert.Throws(() => list[2].GetHashCode()); - } - - [Test] - public void Indexer_Set() - { - var list = new RepeatedField { "first", "second" }; - list[0] = "changed"; - Assert.AreEqual("changed", list[0]); - Assert.Throws(() => list[0] = null); - Assert.Throws(() => list[-1] = "bad"); - Assert.Throws(() => list[2] = "bad"); - } - - [Test] - public void Clone_ReturnsMutable() - { - var list = new RepeatedField { 0 }; - var clone = list.Clone(); - clone[0] = 1; - } - - [Test] - public void Enumerator() - { - var list = new RepeatedField { "first", "second" }; - using (var enumerator = list.GetEnumerator()) - { - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("first", enumerator.Current); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("second", enumerator.Current); - Assert.IsFalse(enumerator.MoveNext()); - Assert.IsFalse(enumerator.MoveNext()); - } - } - - [Test] - public void AddEntriesFrom_PackedInt32() - { - uint packedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var length = CodedOutputStream.ComputeInt32Size(10) - + CodedOutputStream.ComputeInt32Size(999) - + CodedOutputStream.ComputeInt32Size(-1000); - output.WriteTag(packedTag); - output.WriteRawVarint32((uint) length); - output.WriteInt32(10); - output.WriteInt32(999); - output.WriteInt32(-1000); - output.Flush(); - stream.Position = 0; - - // Deliberately "expecting" a non-packed tag, but we detect that the data is - // actually packed. - uint nonPackedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(packedTag); - field.AddEntriesFrom(input, FieldCodec.ForInt32(nonPackedTag)); - CollectionAssert.AreEqual(new[] { 10, 999, -1000 }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_NonPackedInt32() - { - uint nonPackedTag = WireFormat.MakeTag(10, WireFormat.WireType.Varint); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(nonPackedTag); - output.WriteInt32(10); - output.WriteTag(nonPackedTag); - output.WriteInt32(999); - output.WriteTag(nonPackedTag); - output.WriteInt32(-1000); // Just for variety... - output.Flush(); - stream.Position = 0; - - // Deliberately "expecting" a packed tag, but we detect that the data is - // actually not packed. - uint packedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(nonPackedTag); - field.AddEntriesFrom(input, FieldCodec.ForInt32(packedTag)); - CollectionAssert.AreEqual(new[] { 10, 999, -1000 }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_String() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(tag); - output.WriteString("Foo"); - output.WriteTag(tag); - output.WriteString(""); - output.WriteTag(tag); - output.WriteString("Bar"); - output.Flush(); - stream.Position = 0; - - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - field.AddEntriesFrom(input, FieldCodec.ForString(tag)); - CollectionAssert.AreEqual(new[] { "Foo", "", "Bar" }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_Message() - { - var message1 = new ForeignMessage { C = 2000 }; - var message2 = new ForeignMessage { C = -250 }; - - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(tag); - output.WriteMessage(message1); - output.WriteTag(tag); - output.WriteMessage(message2); - output.Flush(); - stream.Position = 0; - - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - field.AddEntriesFrom(input, FieldCodec.ForMessage(tag, ForeignMessage.Parser)); - CollectionAssert.AreEqual(new[] { message1, message2}, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_PackedInt32() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { 10, 1000, 1000000 }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForInt32(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - var length = input.ReadLength(); - Assert.AreEqual(10, input.ReadInt32()); - Assert.AreEqual(1000, input.ReadInt32()); - Assert.AreEqual(1000000, input.ReadInt32()); - Assert.IsTrue(input.IsAtEnd); - Assert.AreEqual(1 + CodedOutputStream.ComputeLengthSize(length) + length, stream.Length); - } - - [Test] - public void WriteTo_NonPackedInt32() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.Varint); - var field = new RepeatedField { 10, 1000, 1000000}; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForInt32(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual(10, input.ReadInt32()); - input.AssertNextTag(tag); - Assert.AreEqual(1000, input.ReadInt32()); - input.AssertNextTag(tag); - Assert.AreEqual(1000000, input.ReadInt32()); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_String() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { "Foo", "", "Bar" }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForString(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual("Foo", input.ReadString()); - input.AssertNextTag(tag); - Assert.AreEqual("", input.ReadString()); - input.AssertNextTag(tag); - Assert.AreEqual("Bar", input.ReadString()); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_Message() - { - var message1 = new ForeignMessage { C = 20 }; - var message2 = new ForeignMessage { C = 25 }; - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { message1, message2 }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForMessage(tag, ForeignMessage.Parser)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual(message1, input.ReadMessage(ForeignMessage.Parser)); - input.AssertNextTag(tag); - Assert.AreEqual(message2, input.ReadMessage(ForeignMessage.Parser)); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void CalculateSize_VariableSizeNonPacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.Varint); - // 2 bytes for the first entry, 3 bytes for the second, 2 bytes for the third - Assert.AreEqual(7, list.CalculateSize(FieldCodec.ForInt32(tag))); - } - - [Test] - public void CalculateSize_FixedSizeNonPacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.Fixed32); - // 5 bytes for the each entry - Assert.AreEqual(15, list.CalculateSize(FieldCodec.ForSFixed32(tag))); - } - - [Test] - public void CalculateSize_VariableSizePacked() - { - var list = new RepeatedField { 1, 500, 1}; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - // 1 byte for the tag, 1 byte for the length, - // 1 byte for the first entry, 2 bytes for the second, 1 byte for the third - Assert.AreEqual(6, list.CalculateSize(FieldCodec.ForInt32(tag))); - } - - [Test] - public void CalculateSize_FixedSizePacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - // 1 byte for the tag, 1 byte for the length, 4 bytes per entry - Assert.AreEqual(14, list.CalculateSize(FieldCodec.ForSFixed32(tag))); - } - - [Test] - public void TestNegativeEnumArray() - { - int arraySize = 1 + 1 + (11 * 5); - int msgSize = arraySize; - byte[] bytes = new byte[msgSize]; - CodedOutputStream output = new CodedOutputStream(bytes); - uint tag = WireFormat.MakeTag(8, WireFormat.WireType.Varint); - for (int i = 0; i >= -5; i--) - { - output.WriteTag(tag); - output.WriteEnum(i); - } - - Assert.AreEqual(0, output.SpaceLeft); - - CodedInputStream input = new CodedInputStream(bytes); - tag = input.ReadTag(); - - RepeatedField values = new RepeatedField(); - values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x)); - - Assert.AreEqual(6, values.Count); - Assert.AreEqual(SampleEnum.None, values[0]); - Assert.AreEqual(((SampleEnum)(-1)), values[1]); - Assert.AreEqual(SampleEnum.NegativeValue, values[2]); - Assert.AreEqual(((SampleEnum)(-3)), values[3]); - Assert.AreEqual(((SampleEnum)(-4)), values[4]); - Assert.AreEqual(((SampleEnum)(-5)), values[5]); - } - - - [Test] - public void TestNegativeEnumPackedArray() - { - int arraySize = 1 + (10 * 5); - int msgSize = 1 + 1 + arraySize; - byte[] bytes = new byte[msgSize]; - CodedOutputStream output = new CodedOutputStream(bytes); - // Length-delimited to show we want the packed representation - uint tag = WireFormat.MakeTag(8, WireFormat.WireType.LengthDelimited); - output.WriteTag(tag); - int size = 0; - for (int i = 0; i >= -5; i--) - { - size += CodedOutputStream.ComputeEnumSize(i); - } - output.WriteRawVarint32((uint)size); - for (int i = 0; i >= -5; i--) - { - output.WriteEnum(i); - } - Assert.AreEqual(0, output.SpaceLeft); - - CodedInputStream input = new CodedInputStream(bytes); - tag = input.ReadTag(); - - RepeatedField values = new RepeatedField(); - values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x)); - - Assert.AreEqual(6, values.Count); - Assert.AreEqual(SampleEnum.None, values[0]); - Assert.AreEqual(((SampleEnum)(-1)), values[1]); - Assert.AreEqual(SampleEnum.NegativeValue, values[2]); - Assert.AreEqual(((SampleEnum)(-3)), values[3]); - Assert.AreEqual(((SampleEnum)(-4)), values[4]); - Assert.AreEqual(((SampleEnum)(-5)), values[5]); - } - - // Fairly perfunctory tests for the non-generic IList implementation - [Test] - public void IList_Indexer() - { - var field = new RepeatedField { "first", "second" }; - IList list = field; - Assert.AreEqual("first", list[0]); - list[1] = "changed"; - Assert.AreEqual("changed", field[1]); - } - - [Test] - public void IList_Contains() - { - IList list = new RepeatedField { "first", "second" }; - Assert.IsTrue(list.Contains("second")); - Assert.IsFalse(list.Contains("third")); - Assert.IsFalse(list.Contains(new object())); - } - - [Test] - public void IList_Add() - { - IList list = new RepeatedField { "first", "second" }; - list.Add("third"); - CollectionAssert.AreEqual(new[] { "first", "second", "third" }, list); - } - - [Test] - public void IList_Remove() - { - IList list = new RepeatedField { "first", "second" }; - list.Remove("third"); // No-op, no exception - list.Remove(new object()); // No-op, no exception - list.Remove("first"); - CollectionAssert.AreEqual(new[] { "second" }, list); - } - - [Test] - public void IList_IsFixedSize() - { - var field = new RepeatedField { "first", "second" }; - IList list = field; - Assert.IsFalse(list.IsFixedSize); - } - - [Test] - public void IList_IndexOf() - { - IList list = new RepeatedField { "first", "second" }; - Assert.AreEqual(1, list.IndexOf("second")); - Assert.AreEqual(-1, list.IndexOf("third")); - Assert.AreEqual(-1, list.IndexOf(new object())); - } - - [Test] - public void IList_SyncRoot() - { - IList list = new RepeatedField { "first", "second" }; - Assert.AreSame(list, list.SyncRoot); - } - - [Test] - public void IList_CopyTo() - { - IList list = new RepeatedField { "first", "second" }; - string[] stringArray = new string[4]; - list.CopyTo(stringArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, stringArray); - - object[] objectArray = new object[4]; - list.CopyTo(objectArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, objectArray); - - Assert.Throws(() => list.CopyTo(new StringBuilder[4], 1)); - Assert.Throws(() => list.CopyTo(new int[4], 1)); - } - - [Test] - public void IList_IsSynchronized() - { - IList list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.IsSynchronized); - } - - [Test] - public void IList_Insert() - { - IList list = new RepeatedField { "first", "second" }; - list.Insert(1, "middle"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second" }, list); - } - - [Test] - public void ToString_Integers() - { - var list = new RepeatedField { 5, 10, 20 }; - var text = list.ToString(); - Assert.AreEqual("[ 5, 10, 20 ]", text); - } - - [Test] - public void ToString_Strings() - { - var list = new RepeatedField { "x", "y", "z" }; - var text = list.ToString(); - Assert.AreEqual("[ \"x\", \"y\", \"z\" ]", text); - } - - [Test] - public void ToString_Messages() - { - var list = new RepeatedField { new TestAllTypes { SingleDouble = 1.5 }, new TestAllTypes { SingleInt32 = 10 } }; - var text = list.ToString(); - Assert.AreEqual("[ { \"singleDouble\": 1.5 }, { \"singleInt32\": 10 } ]", text); - } - - [Test] - public void ToString_Empty() - { - var list = new RepeatedField { }; - var text = list.ToString(); - Assert.AreEqual("[ ]", text); - } - - [Test] - public void ToString_InvalidElementType() - { - var list = new RepeatedField { 15m }; - Assert.Throws(() => list.ToString()); - } - - [Test] - public void ToString_Timestamp() - { - var list = new RepeatedField { Timestamp.FromDateTime(new DateTime(2015, 10, 1, 12, 34, 56, DateTimeKind.Utc)) }; - var text = list.ToString(); - Assert.AreEqual("[ \"2015-10-01T12:34:56Z\" ]", text); - } - - [Test] - public void ToString_Struct() - { - var message = new Struct { Fields = { { "foo", new Value { NumberValue = 20 } } } }; - var list = new RepeatedField { message }; - var text = list.ToString(); - Assert.AreEqual(text, "[ { \"foo\": 20 } ]", message.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs deleted file mode 100644 index df23a09..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs +++ /dev/null @@ -1,98 +0,0 @@ -#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 NUnit.Framework; -using System.Reflection; - -namespace Google.Protobuf.Compatibility -{ - public class PropertyInfoExtensionsTest - { - public string PublicReadWrite { get; set; } - private string PrivateReadWrite { get; set; } - public string PublicReadPrivateWrite { get; private set; } - public string PrivateReadPublicWrite { private get; set; } - public string PublicReadOnly { get { return null; } } - private string PrivateReadOnly { get { return null; } } - public string PublicWriteOnly { set { } } - private string PrivateWriteOnly { set { } } - - [Test] - [TestCase("PublicReadWrite")] - [TestCase("PublicReadPrivateWrite")] - [TestCase("PublicReadOnly")] - public void GetGetMethod_Success(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNotNull(PropertyInfoExtensions.GetGetMethod(propertyInfo)); - } - - [Test] - [TestCase("PrivateReadWrite")] - [TestCase("PrivateReadPublicWrite")] - [TestCase("PrivateReadOnly")] - [TestCase("PublicWriteOnly")] - [TestCase("PrivateWriteOnly")] - public void GetGetMethod_NoAccessibleGetter(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNull(PropertyInfoExtensions.GetGetMethod(propertyInfo)); - } - - [Test] - [TestCase("PublicReadWrite")] - [TestCase("PrivateReadPublicWrite")] - [TestCase("PublicWriteOnly")] - public void GetSetMethod_Success(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNotNull(PropertyInfoExtensions.GetSetMethod(propertyInfo)); - } - - [Test] - [TestCase("PublicReadPrivateWrite")] - [TestCase("PrivateReadWrite")] - [TestCase("PrivateReadOnly")] - [TestCase("PublicReadOnly")] - [TestCase("PrivateWriteOnly")] - public void GetSetMethod_NoAccessibleGetter(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNull(PropertyInfoExtensions.GetSetMethod(propertyInfo)); - } - } - -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs deleted file mode 100644 index e8a3d36..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs +++ /dev/null @@ -1,117 +0,0 @@ -#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 NUnit.Framework; -using System; -using System.Collections.Generic; -using System.Reflection; - -#if !DOTNET35 -namespace Google.Protobuf.Compatibility -{ - public class TypeExtensionsTest - { - public class DerivedList : List { } - public string PublicProperty { get; set; } - private string PrivateProperty { get; set; } - - public void PublicMethod() - { - } - - private void PrivateMethod() - { - } - - [Test] - [TestCase(typeof(object), typeof(string), true)] - [TestCase(typeof(object), typeof(int), true)] - [TestCase(typeof(string), typeof(string), true)] - [TestCase(typeof(string), typeof(object), false)] - [TestCase(typeof(string), typeof(int), false)] - [TestCase(typeof(int), typeof(int), true)] - [TestCase(typeof(ValueType), typeof(int), true)] - [TestCase(typeof(long), typeof(int), false)] // - public void IsAssignableFrom(Type target, Type argument, bool expected) - { - Assert.AreEqual(expected, TypeExtensions.IsAssignableFrom(target, argument)); - } - - [Test] - [TestCase(typeof(DerivedList), "Count")] // Go up the type hierarchy - [TestCase(typeof(List), "Count")] - [TestCase(typeof(List<>), "Count")] - [TestCase(typeof(TypeExtensionsTest), "PublicProperty")] - public void GetProperty_Success(Type type, string name) - { - var property = TypeExtensions.GetProperty(type, name); - Assert.IsNotNull(property); - Assert.AreEqual(name, property.Name); - } - - [Test] - [TestCase(typeof(TypeExtensionsTest), "PrivateProperty")] - [TestCase(typeof(TypeExtensionsTest), "Garbage")] - public void GetProperty_NoSuchProperty(Type type, string name) - { - var property = TypeExtensions.GetProperty(type, name); - Assert.IsNull(property); - } - - [Test] - [TestCase(typeof(DerivedList), "RemoveAt")] // Go up the type hierarchy - [TestCase(typeof(List<>), "RemoveAt")] - [TestCase(typeof(TypeExtensionsTest), "PublicMethod")] - public void GetMethod_Success(Type type, string name) - { - var method = TypeExtensions.GetMethod(type, name); - Assert.IsNotNull(method); - Assert.AreEqual(name, method.Name); - } - - [Test] - [TestCase(typeof(TypeExtensionsTest), "PrivateMethod")] - [TestCase(typeof(TypeExtensionsTest), "GarbageMethod")] - public void GetMethod_NoSuchMethod(Type type, string name) - { - var method = TypeExtensions.GetMethod(type, name); - Assert.IsNull(method); - } - - [Test] - [TestCase(typeof(List), "IndexOf")] - public void GetMethod_Ambiguous(Type type, string name) - { - Assert.Throws(() => TypeExtensions.GetMethod(type, name)); - } - } -} -#endif diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/DeprecatedMemberTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/DeprecatedMemberTest.cs deleted file mode 100644 index 34d5b9f..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/DeprecatedMemberTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -#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; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class DeprecatedMemberTest - { - private static void AssertIsDeprecated(MemberInfo member) - { - Assert.NotNull(member); - Assert.IsTrue(member.IsDefined(typeof(ObsoleteAttribute), false), "Member not obsolete: " + member); - } - - [Test] - public void TestDepreatedPrimitiveValue() - { - AssertIsDeprecated(typeof(TestDeprecatedFields).GetProperty("DeprecatedInt32")); - } - - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/EqualityTester.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/EqualityTester.cs deleted file mode 100644 index a669bab..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/EqualityTester.cs +++ /dev/null @@ -1,64 +0,0 @@ -#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 NUnit.Framework; - -namespace Google.Protobuf -{ - /// - /// Helper methods when testing equality. NUnit's Assert.AreEqual and - /// Assert.AreNotEqual methods try to be clever with collections, which can - /// be annoying... - /// - internal static class EqualityTester - { - public static void AssertEquality(T first, T second) where T : IEquatable - { - Assert.IsTrue(first.Equals(second)); - Assert.IsTrue(first.Equals((object) second)); - Assert.AreEqual(first.GetHashCode(), second.GetHashCode()); - } - - public static void AssertInequality(T first, T second) where T : IEquatable - { - Assert.IsFalse(first.Equals(second)); - Assert.IsFalse(first.Equals((object) second)); - // While this isn't a requirement, the chances of this test failing due to - // coincidence rather than a bug are very small. - if (first != null && second != null) - { - Assert.AreNotEqual(first.GetHashCode(), second.GetHashCode()); - } - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/FieldCodecTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/FieldCodecTest.cs deleted file mode 100644 index 3907666..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/FieldCodecTest.cs +++ /dev/null @@ -1,196 +0,0 @@ -#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.IO; -using System.Reflection; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class FieldCodecTest - { -#pragma warning disable 0414 // Used by tests via reflection - do not remove! - private static readonly List Codecs = new List - { - new FieldCodecTestData(FieldCodec.ForBool(100), true, "FixedBool"), - new FieldCodecTestData(FieldCodec.ForString(100), "sample", "String"), - new FieldCodecTestData(FieldCodec.ForBytes(100), ByteString.CopyFrom(1, 2, 3), "Bytes"), - new FieldCodecTestData(FieldCodec.ForInt32(100), -1000, "Int32"), - new FieldCodecTestData(FieldCodec.ForSInt32(100), -1000, "SInt32"), - new FieldCodecTestData(FieldCodec.ForSFixed32(100), -1000, "SFixed32"), - new FieldCodecTestData(FieldCodec.ForUInt32(100), 1234, "UInt32"), - new FieldCodecTestData(FieldCodec.ForFixed32(100), 1234, "Fixed32"), - new FieldCodecTestData(FieldCodec.ForInt64(100), -1000, "Int64"), - new FieldCodecTestData(FieldCodec.ForSInt64(100), -1000, "SInt64"), - new FieldCodecTestData(FieldCodec.ForSFixed64(100), -1000, "SFixed64"), - new FieldCodecTestData(FieldCodec.ForUInt64(100), 1234, "UInt64"), - new FieldCodecTestData(FieldCodec.ForFixed64(100), 1234, "Fixed64"), - new FieldCodecTestData(FieldCodec.ForFloat(100), 1234.5f, "FixedFloat"), - new FieldCodecTestData(FieldCodec.ForDouble(100), 1234567890.5d, "FixedDouble"), - new FieldCodecTestData( - FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.ForeignBaz, "Enum"), - new FieldCodecTestData( - FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"), - }; -#pragma warning restore 0414 - - [Test, TestCaseSource("Codecs")] - public void RoundTripWithTag(ICodecTestData codec) - { - codec.TestRoundTripWithTag(); - } - - [Test, TestCaseSource("Codecs")] - public void RoundTripRaw(ICodecTestData codec) - { - codec.TestRoundTripRaw(); - } - - [Test, TestCaseSource("Codecs")] - public void CalculateSize(ICodecTestData codec) - { - codec.TestCalculateSizeWithTag(); - } - - [Test, TestCaseSource("Codecs")] - public void DefaultValue(ICodecTestData codec) - { - codec.TestDefaultValue(); - } - - [Test, TestCaseSource("Codecs")] - public void FixedSize(ICodecTestData codec) - { - codec.TestFixedSize(); - } - - // This is ugly, but it means we can have a non-generic interface. - // It feels like NUnit should support this better, but I don't know - // of any better ways right now. - public interface ICodecTestData - { - void TestRoundTripRaw(); - void TestRoundTripWithTag(); - void TestCalculateSizeWithTag(); - void TestDefaultValue(); - void TestFixedSize(); - } - - public class FieldCodecTestData : ICodecTestData - { - private readonly FieldCodec codec; - private readonly T sampleValue; - private readonly string name; - - public FieldCodecTestData(FieldCodec codec, T sampleValue, string name) - { - this.codec = codec; - this.sampleValue = sampleValue; - this.name = name; - } - - public void TestRoundTripRaw() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.ValueWriter(codedOutput, sampleValue); - codedOutput.Flush(); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - Assert.AreEqual(sampleValue, codec.ValueReader(codedInput)); - Assert.IsTrue(codedInput.IsAtEnd); - } - - public void TestRoundTripWithTag() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, sampleValue); - codedOutput.Flush(); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - codedInput.AssertNextTag(codec.Tag); - Assert.AreEqual(sampleValue, codec.Read(codedInput)); - Assert.IsTrue(codedInput.IsAtEnd); - } - - public void TestCalculateSizeWithTag() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, sampleValue); - codedOutput.Flush(); - Assert.AreEqual(stream.Position, codec.CalculateSizeWithTag(sampleValue)); - } - - public void TestDefaultValue() - { - // WriteTagAndValue ignores default values - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, codec.DefaultValue); - codedOutput.Flush(); - Assert.AreEqual(0, stream.Position); - Assert.AreEqual(0, codec.CalculateSizeWithTag(codec.DefaultValue)); - if (typeof(T).GetTypeInfo().IsValueType) - { - Assert.AreEqual(default(T), codec.DefaultValue); - } - - // The plain ValueWriter/ValueReader delegates don't. - if (codec.DefaultValue != null) // This part isn't appropriate for message types. - { - codedOutput = new CodedOutputStream(stream); - codec.ValueWriter(codedOutput, codec.DefaultValue); - codedOutput.Flush(); - Assert.AreNotEqual(0, stream.Position); - Assert.AreEqual(stream.Position, codec.ValueSizeCalculator(codec.DefaultValue)); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - Assert.AreEqual(codec.DefaultValue, codec.ValueReader(codedInput)); - } - } - - public void TestFixedSize() - { - Assert.AreEqual(name.Contains("Fixed"), codec.FixedSize != 0); - } - - public override string ToString() - { - return name; - } - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/GeneratedMessageTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/GeneratedMessageTest.cs deleted file mode 100644 index 429c51f..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/GeneratedMessageTest.cs +++ /dev/null @@ -1,725 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using Google.Protobuf.WellKnownTypes; - -namespace Google.Protobuf -{ - /// - /// Tests around the generated TestAllTypes message. - /// - public class GeneratedMessageTest - { - [Test] - public void EmptyMessageFieldDistinctFromMissingMessageField() - { - // This demonstrates what we're really interested in... - var message1 = new TestAllTypes { SingleForeignMessage = new ForeignMessage() }; - var message2 = new TestAllTypes(); // SingleForeignMessage is null - EqualityTester.AssertInequality(message1, message2); - } - - [Test] - public void DefaultValues() - { - // Single fields - var message = new TestAllTypes(); - Assert.AreEqual(false, message.SingleBool); - Assert.AreEqual(ByteString.Empty, message.SingleBytes); - Assert.AreEqual(0.0, message.SingleDouble); - Assert.AreEqual(0, message.SingleFixed32); - Assert.AreEqual(0L, message.SingleFixed64); - Assert.AreEqual(0.0f, message.SingleFloat); - Assert.AreEqual(ForeignEnum.ForeignUnspecified, message.SingleForeignEnum); - Assert.IsNull(message.SingleForeignMessage); - Assert.AreEqual(ImportEnum.Unspecified, message.SingleImportEnum); - Assert.IsNull(message.SingleImportMessage); - Assert.AreEqual(0, message.SingleInt32); - Assert.AreEqual(0L, message.SingleInt64); - Assert.AreEqual(TestAllTypes.Types.NestedEnum.Unspecified, message.SingleNestedEnum); - Assert.IsNull(message.SingleNestedMessage); - Assert.IsNull(message.SinglePublicImportMessage); - Assert.AreEqual(0, message.SingleSfixed32); - Assert.AreEqual(0L, message.SingleSfixed64); - Assert.AreEqual(0, message.SingleSint32); - Assert.AreEqual(0L, message.SingleSint64); - Assert.AreEqual("", message.SingleString); - Assert.AreEqual(0U, message.SingleUint32); - Assert.AreEqual(0UL, message.SingleUint64); - - // Repeated fields - Assert.AreEqual(0, message.RepeatedBool.Count); - Assert.AreEqual(0, message.RepeatedBytes.Count); - Assert.AreEqual(0, message.RepeatedDouble.Count); - Assert.AreEqual(0, message.RepeatedFixed32.Count); - Assert.AreEqual(0, message.RepeatedFixed64.Count); - Assert.AreEqual(0, message.RepeatedFloat.Count); - Assert.AreEqual(0, message.RepeatedForeignEnum.Count); - Assert.AreEqual(0, message.RepeatedForeignMessage.Count); - Assert.AreEqual(0, message.RepeatedImportEnum.Count); - Assert.AreEqual(0, message.RepeatedImportMessage.Count); - Assert.AreEqual(0, message.RepeatedNestedEnum.Count); - Assert.AreEqual(0, message.RepeatedNestedMessage.Count); - Assert.AreEqual(0, message.RepeatedPublicImportMessage.Count); - Assert.AreEqual(0, message.RepeatedSfixed32.Count); - Assert.AreEqual(0, message.RepeatedSfixed64.Count); - Assert.AreEqual(0, message.RepeatedSint32.Count); - Assert.AreEqual(0, message.RepeatedSint64.Count); - Assert.AreEqual(0, message.RepeatedString.Count); - Assert.AreEqual(0, message.RepeatedUint32.Count); - Assert.AreEqual(0, message.RepeatedUint64.Count); - - // Oneof fields - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - } - - [Test] - public void NullStringAndBytesRejected() - { - var message = new TestAllTypes(); - Assert.Throws(() => message.SingleString = null); - Assert.Throws(() => message.OneofString = null); - Assert.Throws(() => message.SingleBytes = null); - Assert.Throws(() => message.OneofBytes = null); - } - - [Test] - public void RoundTrip_Empty() - { - var message = new TestAllTypes(); - // Without setting any values, there's nothing to write. - byte[] bytes = message.ToByteArray(); - Assert.AreEqual(0, bytes.Length); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void RoundTrip_SingleValues() - { - 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.ForeignBar, - SingleForeignMessage = new ForeignMessage { C = 10 }, - SingleImportEnum = ImportEnum.ImportBaz, - 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", - SingleUint32 = uint.MaxValue, - SingleUint64 = ulong.MaxValue - }; - - byte[] bytes = message.ToByteArray(); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void RoundTrip_RepeatedValues() - { - var message = new TestAllTypes - { - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { uint.MaxValue, 23 }, - RepeatedFixed64 = { ulong.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar }, - RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } }, - RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified }, - RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, long.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } }, - RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { uint.MaxValue, uint.MinValue }, - RepeatedUint64 = { ulong.MaxValue, uint.MinValue } - }; - - byte[] bytes = message.ToByteArray(); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - // Note that not every map within map_unittest_proto3 is used. They all go through very - // similar code paths. The fact that all maps are present is validation that we have codecs - // for every type. - [Test] - public void RoundTrip_Maps() - { - var message = new TestMap - { - MapBoolBool = { - { false, true }, - { true, false } - }, - MapInt32Bytes = { - { 5, ByteString.CopyFrom(6, 7, 8) }, - { 25, ByteString.CopyFrom(1, 2, 3, 4, 5) }, - { 10, ByteString.Empty } - }, - MapInt32ForeignMessage = { - { 0, new ForeignMessage { C = 10 } }, - { 5, new ForeignMessage() }, - }, - MapInt32Enum = { - { 1, MapEnum.Bar }, - { 2000, MapEnum.Foo } - } - }; - - byte[] bytes = message.ToByteArray(); - TestMap parsed = TestMap.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void MapWithEmptyEntry() - { - var message = new TestMap - { - MapInt32Bytes = { { 0, ByteString.Empty } } - }; - - byte[] bytes = message.ToByteArray(); - Assert.AreEqual(2, bytes.Length); // Tag for field entry (1 byte), length of entry (0; 1 byte) - - var parsed = TestMap.Parser.ParseFrom(bytes); - Assert.AreEqual(1, parsed.MapInt32Bytes.Count); - Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]); - } - - [Test] - public void MapWithOnlyValue() - { - // Hand-craft the stream to contain a single entry with just a value. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited); - var nestedMessage = new ForeignMessage { C = 20 }; - // Size of the entry (tag, size written by WriteMessage, data written by WriteMessage) - output.WriteLength(2 + nestedMessage.CalculateSize()); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteMessage(nestedMessage); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]); - } - - [Test] - public void MapWithOnlyKey_PrimitiveValue() - { - // Hand-craft the stream to contain a single entry with just a key. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32DoubleFieldNumber, WireFormat.WireType.LengthDelimited); - int key = 10; - output.WriteLength(1 + CodedOutputStream.ComputeInt32Size(key)); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(0.0, parsed.MapInt32Double[key]); - } - - [Test] - public void MapWithOnlyKey_MessageValue() - { - // Hand-craft the stream to contain a single entry with just a key. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited); - int key = 10; - output.WriteLength(1 + CodedOutputStream.ComputeInt32Size(key)); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(new ForeignMessage(), parsed.MapInt32ForeignMessage[key]); - } - - [Test] - public void MapIgnoresExtraFieldsWithinEntryMessages() - { - // Hand-craft the stream to contain a single entry with three fields - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - - var key = 10; // Field 1 - var value = 20; // Field 2 - var extra = 30; // Field 3 - - // Each field can be represented in a single byte, with a single byte tag. - // Total message size: 6 bytes. - output.WriteLength(6); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value); - output.WriteTag(3, WireFormat.WireType.Varint); - output.WriteInt32(extra); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value, parsed.MapInt32Int32[key]); - } - - [Test] - public void MapFieldOrderIsIrrelevant() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - - var key = 10; - var value = 20; - - // Each field can be represented in a single byte, with a single byte tag. - // Total message size: 4 bytes. - output.WriteLength(4); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value, parsed.MapInt32Int32[key]); - } - - [Test] - public void MapNonContiguousEntries() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - // Message structure: - // Entry for MapInt32Int32 - // Entry for MapStringString - // Entry for MapInt32Int32 - - // First entry - var key1 = 10; - var value1 = 20; - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key1); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value1); - - // Second entry - var key2 = "a"; - var value2 = "b"; - output.WriteTag(TestMap.MapStringStringFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(6); // 3 bytes per entry: tag, size, character - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString(key2); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteString(value2); - - // Third entry - var key3 = 15; - var value3 = 25; - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key3); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value3); - - output.Flush(); - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - var expected = new TestMap - { - MapInt32Int32 = { { key1, value1 }, { key3, value3 } }, - MapStringString = { { key2, value2 } } - }; - Assert.AreEqual(expected, parsed); - } - - [Test] - public void DuplicateKeys_LastEntryWins() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - var key = 10; - var value1 = 20; - var value2 = 30; - - // First entry - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value1); - - // Second entry - same key, different value - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value2); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value2, parsed.MapInt32Int32[key]); - } - - [Test] - public void CloneSingleNonMessageValues() - { - var original = new TestAllTypes - { - SingleBool = true, - SingleBytes = ByteString.CopyFrom(1, 2, 3, 4), - SingleDouble = 23.5, - SingleFixed32 = 23, - SingleFixed64 = 1234567890123, - SingleFloat = 12.25f, - SingleInt32 = 100, - SingleInt64 = 3210987654321, - SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo, - SingleSfixed32 = -123, - SingleSfixed64 = -12345678901234, - SingleSint32 = -456, - SingleSint64 = -12345678901235, - SingleString = "test", - SingleUint32 = uint.MaxValue, - SingleUint64 = ulong.MaxValue - }; - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - // Just as a single example - clone.SingleInt32 = 150; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneRepeatedNonMessageValues() - { - var original = new TestAllTypes - { - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { uint.MaxValue, 23 }, - RepeatedFixed64 = { ulong.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, long.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { uint.MaxValue, uint.MinValue }, - RepeatedUint64 = { ulong.MaxValue, uint.MinValue } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - // Just as a single example - clone.RepeatedDouble.Add(25.5); - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneSingleMessageField() - { - var original = new TestAllTypes - { - SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreNotSame(original.SingleNestedMessage, clone.SingleNestedMessage); - Assert.AreEqual(original, clone); - - clone.SingleNestedMessage.Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneRepeatedMessageField() - { - var original = new TestAllTypes - { - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 20 } } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreNotSame(original.RepeatedNestedMessage, clone.RepeatedNestedMessage); - Assert.AreNotSame(original.RepeatedNestedMessage[0], clone.RepeatedNestedMessage[0]); - Assert.AreEqual(original, clone); - - clone.RepeatedNestedMessage[0].Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneOneofField() - { - var original = new TestAllTypes - { - OneofNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - - // We should have cloned the message - original.OneofNestedMessage.Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void OneofProperties() - { - // Switch the oneof case between each of the different options, and check everything behaves - // as expected in each case. - var message = new TestAllTypes(); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - - message.OneofString = "sample"; - Assert.AreEqual("sample", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message.OneofFieldCase); - - var bytes = ByteString.CopyFrom(1, 2, 3); - message.OneofBytes = bytes; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(bytes, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofBytes, message.OneofFieldCase); - - message.OneofUint32 = 20; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(20, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message.OneofFieldCase); - - var nestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 25 }; - message.OneofNestedMessage = nestedMessage; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.AreEqual(nestedMessage, message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofNestedMessage, message.OneofFieldCase); - - message.ClearOneofField(); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - } - - [Test] - public void Oneof_DefaultValuesNotEqual() - { - var message1 = new TestAllTypes { OneofString = "" }; - var message2 = new TestAllTypes { OneofUint32 = 0 }; - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message1.OneofFieldCase); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - Assert.AreNotEqual(message1, message2); - } - - [Test] - public void OneofSerialization_NonDefaultValue() - { - var message = new TestAllTypes(); - message.OneofString = "this would take a bit of space"; - message.OneofUint32 = 10; - var bytes = message.ToByteArray(); - Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - no string! - - var message2 = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, message2); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - } - - [Test] - public void OneofSerialization_DefaultValue() - { - var message = new TestAllTypes(); - message.OneofString = "this would take a bit of space"; - message.OneofUint32 = 0; // This is the default value for UInt32; normally wouldn't be serialized - var bytes = message.ToByteArray(); - Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - it's still serialized - - var message2 = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, message2); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - } - - [Test] - public void DiscardUnknownFields_RealDataStillRead() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var unusedFieldNumber = 23456; - Assert.IsFalse(TestAllTypes.Descriptor.Fields.InDeclarationOrder().Select(x => x.FieldNumber).Contains(unusedFieldNumber)); - output.WriteTag(unusedFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteString("ignore me"); - message.WriteTo(output); - output.Flush(); - - stream.Position = 0; - var parsed = TestAllTypes.Parser.ParseFrom(stream); - // TODO(jieluo): Add test back after DiscardUnknownFields is supported - // Assert.AreEqual(message, parsed); - } - - [Test] - public void DiscardUnknownFields_AllTypes() - { - // Simple way of ensuring we can skip all kinds of fields. - var data = SampleMessages.CreateFullTestAllTypes().ToByteArray(); - var empty = Empty.Parser.ParseFrom(data); - // TODO(jieluo): Add test back after DiscardUnknownField is supported. - // Assert.AreEqual(new Empty(), empty); - } - - // This was originally seen as a conformance test failure. - [Test] - public void TruncatedMessageFieldThrows() - { - // 130, 3 is the message tag - // 1 is the data length - but there's no data. - var data = new byte[] { 130, 3, 1 }; - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(data)); - } - - /// - /// Demonstrates current behaviour with an extraneous end group tag - see issue 688 - /// for details; we may want to change this. - /// - [Test] - public void ExtraEndGroupThrows() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - - output.WriteTag(TestAllTypes.SingleFixed32FieldNumber, WireFormat.WireType.Fixed32); - output.WriteFixed32(123); - output.WriteTag(100, WireFormat.WireType.EndGroup); - - output.Flush(); - - stream.Position = 0; - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(stream)); - } - - [Test] - public void CustomDiagnosticMessage_DirectToStringCall() - { - var message = new ForeignMessage { C = 31 }; - Assert.AreEqual("{ \"c\": 31, \"@cInHex\": \"1f\" }", message.ToString()); - Assert.AreEqual("{ \"c\": 31 }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void CustomDiagnosticMessage_Nested() - { - var message = new TestAllTypes { SingleForeignMessage = new ForeignMessage { C = 16 } }; - Assert.AreEqual("{ \"singleForeignMessage\": { \"c\": 16, \"@cInHex\": \"10\" } }", message.ToString()); - Assert.AreEqual("{ \"singleForeignMessage\": { \"c\": 16 } }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void CustomDiagnosticMessage_DirectToTextWriterCall() - { - var message = new ForeignMessage { C = 31 }; - var writer = new StringWriter(); - JsonFormatter.Default.Format(message, writer); - Assert.AreEqual("{ \"c\": 31 }", writer.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj deleted file mode 100644 index 1ef5bf8..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - Exe - net451;netcoreapp2.1 - ../../keys/Google.Protobuf.snk - true - true - False - - - - - - - - - - - - - - netcoreapp2.1 - - - diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/IssuesTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/IssuesTest.cs deleted file mode 100644 index a38d6b0..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/IssuesTest.cs +++ /dev/null @@ -1,82 +0,0 @@ -#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.Reflection; -using UnitTest.Issues.TestProtos; -using NUnit.Framework; - - -namespace Google.Protobuf -{ - /// - /// Tests for issues which aren't easily compartmentalized into other unit tests. - /// - public class IssuesTest - { - // Issue 45 - [Test] - public void FieldCalledItem() - { - ItemField message = new ItemField { Item = 3 }; - FieldDescriptor field = ItemField.Descriptor.FindFieldByName("item"); - Assert.NotNull(field); - Assert.AreEqual(3, (int)field.Accessor.GetValue(message)); - } - - [Test] - public void ReservedNames() - { - var message = new ReservedNames { Types_ = 10, Descriptor_ = 20 }; - // Underscores aren't reflected in the JSON. - Assert.AreEqual("{ \"types\": 10, \"descriptor\": 20 }", message.ToString()); - } - - [Test] - public void JsonNameParseTest() - { - var settings = new JsonParser.Settings(10, TypeRegistry.FromFiles(UnittestIssuesReflection.Descriptor)); - var parser = new JsonParser(settings); - - // It is safe to use either original field name or explicitly specified json_name - Assert.AreEqual(new TestJsonName { Name = "test", Description = "test2", Guid = "test3" }, - parser.Parse("{ \"name\": \"test\", \"desc\": \"test2\", \"guid\": \"test3\" }")); - } - - [Test] - public void JsonNameFormatTest() - { - var message = new TestJsonName { Name = "test", Description = "test2", Guid = "test3" }; - Assert.AreEqual("{ \"name\": \"test\", \"desc\": \"test2\", \"exid\": \"test3\" }", - JsonFormatter.Default.Format(message)); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonParserTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonParserTest.cs deleted file mode 100644 index f595455..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonParserTest.cs +++ /dev/null @@ -1,939 +0,0 @@ -#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.Reflection; -using Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; -using System; - -namespace Google.Protobuf -{ - /// - /// Unit tests for JSON parsing. - /// - public class JsonParserTest - { - // Sanity smoke test - [Test] - public void AllTypesRoundtrip() - { - AssertRoundtrip(SampleMessages.CreateFullTestAllTypes()); - } - - [Test] - public void Maps() - { - AssertRoundtrip(new TestMap { MapStringString = { { "with spaces", "bar" }, { "a", "b" } } }); - AssertRoundtrip(new TestMap { MapInt32Int32 = { { 0, 1 }, { 2, 3 } } }); - AssertRoundtrip(new TestMap { MapBoolBool = { { false, true }, { true, false } } }); - } - - [Test] - [TestCase(" 1 ")] - [TestCase("+1")] - [TestCase("1,000")] - [TestCase("1.5")] - public void IntegerMapKeysAreStrict(string keyText) - { - // Test that integer parsing is strict. We assume that if this is correct for int32, - // it's correct for other numeric key types. - var json = "{ \"mapInt32Int32\": { \"" + keyText + "\" : \"1\" } }"; - Assert.Throws(() => JsonParser.Default.Parse(json)); - } - - [Test] - public void OriginalFieldNameAccepted() - { - var json = "{ \"single_int32\": 10 }"; - var expected = new TestAllTypes { SingleInt32 = 10 }; - Assert.AreEqual(expected, TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void SourceContextRoundtrip() - { - AssertRoundtrip(new SourceContext { FileName = "foo.proto" }); - } - - [Test] - public void SingularWrappers_DefaultNonNullValues() - { - var message = new TestWellKnownTypes - { - StringField = "", - BytesField = ByteString.Empty, - BoolField = false, - FloatField = 0f, - DoubleField = 0d, - Int32Field = 0, - Int64Field = 0, - Uint32Field = 0, - Uint64Field = 0 - }; - AssertRoundtrip(message); - } - - [Test] - public void SingularWrappers_NonDefaultValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - AssertRoundtrip(message); - } - - [Test] - public void SingularWrappers_ExplicitNulls() - { - // When we parse the "valueField": null part, we remember it... basically, it's one case - // where explicit default values don't fully roundtrip. - var message = new TestWellKnownTypes { ValueField = Value.ForNull() }; - var json = new JsonFormatter(new JsonFormatter.Settings(true)).Format(message); - var parsed = JsonParser.Default.Parse(json); - Assert.AreEqual(message, parsed); - } - - [Test] - [TestCase(typeof(BoolValue), "true", true)] - [TestCase(typeof(Int32Value), "32", 32)] - [TestCase(typeof(Int64Value), "32", 32L)] - [TestCase(typeof(Int64Value), "\"32\"", 32L)] - [TestCase(typeof(UInt32Value), "32", 32U)] - [TestCase(typeof(UInt64Value), "\"32\"", 32UL)] - [TestCase(typeof(UInt64Value), "32", 32UL)] - [TestCase(typeof(StringValue), "\"foo\"", "foo")] - [TestCase(typeof(FloatValue), "1.5", 1.5f)] - [TestCase(typeof(DoubleValue), "1.5", 1.5d)] - public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue) - { - IMessage parsed = (IMessage)Activator.CreateInstance(wrapperType); - IMessage expected = (IMessage)Activator.CreateInstance(wrapperType); - JsonParser.Default.Merge(parsed, "null"); - Assert.AreEqual(expected, parsed); - - JsonParser.Default.Merge(parsed, json); - expected.Descriptor.Fields[WrappersReflection.WrapperValueFieldNumber].Accessor.SetValue(expected, expectedValue); - Assert.AreEqual(expected, parsed); - } - - [Test] - public void ExplicitNullValue() - { - string json = "{\"valueField\": null}"; - var message = JsonParser.Default.Parse(json); - Assert.AreEqual(new TestWellKnownTypes { ValueField = Value.ForNull() }, message); - } - - [Test] - public void BytesWrapper_Standalone() - { - ByteString data = ByteString.CopyFrom(1, 2, 3); - // Can't do this with attributes... - var parsed = JsonParser.Default.Parse(WrapInQuotes(data.ToBase64())); - var expected = new BytesValue { Value = data }; - Assert.AreEqual(expected, parsed); - } - - [Test] - public void RepeatedWrappers() - { - var message = new RepeatedWellKnownTypes - { - BoolField = { true, false }, - BytesField = { ByteString.CopyFrom(1, 2, 3), ByteString.CopyFrom(4, 5, 6), ByteString.Empty }, - DoubleField = { 12.5, -1.5, 0d }, - FloatField = { 123.25f, -20f, 0f }, - Int32Field = { int.MaxValue, int.MinValue, 0 }, - Int64Field = { long.MaxValue, long.MinValue, 0L }, - StringField = { "First", "Second", "" }, - Uint32Field = { uint.MaxValue, uint.MinValue, 0U }, - Uint64Field = { ulong.MaxValue, ulong.MinValue, 0UL }, - }; - AssertRoundtrip(message); - } - - [Test] - public void RepeatedField_NullElementProhibited() - { - string json = "{ \"repeated_foreign_message\": [null] }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void RepeatedField_NullOverallValueAllowed() - { - string json = "{ \"repeated_foreign_message\": null }"; - Assert.AreEqual(new TestAllTypes(), TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("{ \"mapInt32Int32\": { \"10\": null }")] - [TestCase("{ \"mapStringString\": { \"abc\": null }")] - [TestCase("{ \"mapInt32ForeignMessage\": { \"10\": null }")] - public void MapField_NullValueProhibited(string json) - { - Assert.Throws(() => TestMap.Parser.ParseJson(json)); - } - - [Test] - public void MapField_NullOverallValueAllowed() - { - string json = "{ \"mapInt32Int32\": null }"; - Assert.AreEqual(new TestMap(), TestMap.Parser.ParseJson(json)); - } - - [Test] - public void IndividualWrapperTypes() - { - Assert.AreEqual(new StringValue { Value = "foo" }, StringValue.Parser.ParseJson("\"foo\"")); - Assert.AreEqual(new Int32Value { Value = 1 }, Int32Value.Parser.ParseJson("1")); - // Can parse strings directly too - Assert.AreEqual(new Int32Value { Value = 1 }, Int32Value.Parser.ParseJson("\"1\"")); - } - - private static void AssertRoundtrip(T message) where T : IMessage, new() - { - var clone = message.Clone(); - var json = JsonFormatter.Default.Format(message); - var parsed = JsonParser.Default.Parse(json); - Assert.AreEqual(clone, parsed); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // Not entirely clear whether we intend to allow this... - [TestCase("1", 1)] - [TestCase("-1", -1)] - [TestCase("2147483647", 2147483647)] - [TestCase("-2147483648", -2147483648)] - public void StringToInt32_Valid(string jsonValue, int expectedParsedValue) - { - string json = "{ \"singleInt32\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt32); - } - - [Test] - [TestCase("+0")] - [TestCase(" 1")] - [TestCase("1 ")] - [TestCase("00")] - [TestCase("-00")] - [TestCase("--1")] - [TestCase("+1")] - [TestCase("1.5")] - [TestCase("1e10")] - [TestCase("2147483648")] - [TestCase("-2147483649")] - public void StringToInt32_Invalid(string jsonValue) - { - string json = "{ \"singleInt32\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0U)] - [TestCase("1", 1U)] - [TestCase("4294967295", 4294967295U)] - public void StringToUInt32_Valid(string jsonValue, uint expectedParsedValue) - { - string json = "{ \"singleUint32\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint32); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("4294967296")] - public void StringToUInt32_Invalid(string jsonValue) - { - string json = "{ \"singleUint32\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0L)] - [TestCase("1", 1L)] - [TestCase("-1", -1L)] - [TestCase("9223372036854775807", 9223372036854775807)] - [TestCase("-9223372036854775808", -9223372036854775808)] - public void StringToInt64_Valid(string jsonValue, long expectedParsedValue) - { - string json = "{ \"singleInt64\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-9223372036854775809")] - [TestCase("9223372036854775808")] - public void StringToInt64_Invalid(string jsonValue) - { - string json = "{ \"singleInt64\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0UL)] - [TestCase("1", 1UL)] - [TestCase("18446744073709551615", 18446744073709551615)] - public void StringToUInt64_Valid(string jsonValue, ulong expectedParsedValue) - { - string json = "{ \"singleUint64\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("18446744073709551616")] - public void StringToUInt64_Invalid(string jsonValue) - { - string json = "{ \"singleUint64\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0d)] - [TestCase("1", 1d)] - [TestCase("1.000000", 1d)] - [TestCase("1.0000000000000000000000001", 1d)] // We don't notice that we haven't preserved the exact value - [TestCase("-1", -1d)] - [TestCase("1e1", 10d)] - [TestCase("1e01", 10d)] // Leading decimals are allowed in exponents - [TestCase("1E1", 10d)] // Either case is fine - [TestCase("-1e1", -10d)] - [TestCase("1.5e1", 15d)] - [TestCase("-1.5e1", -15d)] - [TestCase("15e-1", 1.5d)] - [TestCase("-15e-1", -1.5d)] - [TestCase("1.79769e308", 1.79769e308)] - [TestCase("-1.79769e308", -1.79769e308)] - [TestCase("Infinity", double.PositiveInfinity)] - [TestCase("-Infinity", double.NegativeInfinity)] - [TestCase("NaN", double.NaN)] - public void StringToDouble_Valid(string jsonValue, double expectedParsedValue) - { - string json = "{ \"singleDouble\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleDouble); - } - - [Test] - [TestCase("1.7977e308")] - [TestCase("-1.7977e308")] - [TestCase("1e309")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("01")] - [TestCase("-00")] - [TestCase("-01")] - [TestCase("--1")] - [TestCase(" Infinity")] - [TestCase(" -Infinity")] - [TestCase("NaN ")] - [TestCase("Infinity ")] - [TestCase("-Infinity ")] - [TestCase(" NaN")] - [TestCase("INFINITY")] - [TestCase("nan")] - [TestCase("\u00BD")] // 1/2 as a single Unicode character. Just sanity checking... - public void StringToDouble_Invalid(string jsonValue) - { - string json = "{ \"singleDouble\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0f)] - [TestCase("1", 1f)] - [TestCase("1.000000", 1f)] - [TestCase("-1", -1f)] - [TestCase("3.402823e38", 3.402823e38f)] - [TestCase("-3.402823e38", -3.402823e38f)] - [TestCase("1.5e1", 15f)] - [TestCase("15e-1", 1.5f)] - public void StringToFloat_Valid(string jsonValue, float expectedParsedValue) - { - string json = "{ \"singleFloat\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleFloat); - } - - [Test] - [TestCase("3.402824e38")] - [TestCase("-3.402824e38")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("--1")] - public void StringToFloat_Invalid(string jsonValue) - { - string json = "{ \"singleFloat\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // Not entirely clear whether we intend to allow this... - [TestCase("1", 1)] - [TestCase("-1", -1)] - [TestCase("2147483647", 2147483647)] - [TestCase("-2147483648", -2147483648)] - [TestCase("1e1", 10)] - [TestCase("-1e1", -10)] - [TestCase("10.00", 10)] - [TestCase("-10.00", -10)] - public void NumberToInt32_Valid(string jsonValue, int expectedParsedValue) - { - string json = "{ \"singleInt32\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt32); - } - - [Test] - [TestCase("+0", typeof(InvalidJsonException))] - [TestCase("00", typeof(InvalidJsonException))] - [TestCase("-00", typeof(InvalidJsonException))] - [TestCase("--1", typeof(InvalidJsonException))] - [TestCase("+1", typeof(InvalidJsonException))] - [TestCase("1.5", typeof(InvalidProtocolBufferException))] - // Value is out of range - [TestCase("1e10", typeof(InvalidProtocolBufferException))] - [TestCase("2147483648", typeof(InvalidProtocolBufferException))] - [TestCase("-2147483649", typeof(InvalidProtocolBufferException))] - public void NumberToInt32_Invalid(string jsonValue, System.Type expectedExceptionType) - { - string json = "{ \"singleInt32\": " + jsonValue + "}"; - Assert.Throws(expectedExceptionType, () => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0U)] - [TestCase("1", 1U)] - [TestCase("4294967295", 4294967295U)] - public void NumberToUInt32_Valid(string jsonValue, uint expectedParsedValue) - { - string json = "{ \"singleUint32\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint32); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("4294967296")] - public void NumberToUInt32_Invalid(string jsonValue) - { - string json = "{ \"singleUint32\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0L)] - [TestCase("1", 1L)] - [TestCase("-1", -1L)] - // long.MaxValue isn't actually representable as a double. This string value is the highest - // representable value which isn't greater than long.MaxValue. - [TestCase("9223372036854774784", 9223372036854774784)] - [TestCase("-9223372036854775808", -9223372036854775808)] - public void NumberToInt64_Valid(string jsonValue, long expectedParsedValue) - { - string json = "{ \"singleInt64\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("9223372036854775808")] - // Theoretical bound would be -9223372036854775809, but when that is parsed to a double - // we end up with the exact value of long.MinValue due to lack of precision. The value here - // is the "next double down". - [TestCase("-9223372036854780000")] - public void NumberToInt64_Invalid(string jsonValue) - { - string json = "{ \"singleInt64\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0UL)] - [TestCase("1", 1UL)] - // ulong.MaxValue isn't representable as a double. This value is the largest double within - // the range of ulong. - [TestCase("18446744073709549568", 18446744073709549568UL)] - public void NumberToUInt64_Valid(string jsonValue, ulong expectedParsedValue) - { - string json = "{ \"singleUint64\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("18446744073709551616")] - public void NumberToUInt64_Invalid(string jsonValue) - { - string json = "{ \"singleUint64\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0d)] - [TestCase("1", 1d)] - [TestCase("1.000000", 1d)] - [TestCase("1.0000000000000000000000001", 1d)] // We don't notice that we haven't preserved the exact value - [TestCase("-1", -1d)] - [TestCase("1e1", 10d)] - [TestCase("1e01", 10d)] // Leading decimals are allowed in exponents - [TestCase("1E1", 10d)] // Either case is fine - [TestCase("-1e1", -10d)] - [TestCase("1.5e1", 15d)] - [TestCase("-1.5e1", -15d)] - [TestCase("15e-1", 1.5d)] - [TestCase("-15e-1", -1.5d)] - [TestCase("1.79769e308", 1.79769e308)] - [TestCase("-1.79769e308", -1.79769e308)] - public void NumberToDouble_Valid(string jsonValue, double expectedParsedValue) - { - string json = "{ \"singleDouble\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleDouble); - } - - [Test] - [TestCase("1.7977e308")] - [TestCase("-1.7977e308")] - [TestCase("1e309")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("--1")] - [TestCase("\u00BD")] // 1/2 as a single Unicode character. Just sanity checking... - public void NumberToDouble_Invalid(string jsonValue) - { - string json = "{ \"singleDouble\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0f)] - [TestCase("1", 1f)] - [TestCase("1.000000", 1f)] - [TestCase("-1", -1f)] - [TestCase("3.402823e38", 3.402823e38f)] - [TestCase("-3.402823e38", -3.402823e38f)] - [TestCase("1.5e1", 15f)] - [TestCase("15e-1", 1.5f)] - public void NumberToFloat_Valid(string jsonValue, float expectedParsedValue) - { - string json = "{ \"singleFloat\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleFloat); - } - - [Test] - [TestCase("3.402824e38", typeof(InvalidProtocolBufferException))] - [TestCase("-3.402824e38", typeof(InvalidProtocolBufferException))] - [TestCase("1,0", typeof(InvalidJsonException))] - [TestCase("1.0.0", typeof(InvalidJsonException))] - [TestCase("+1", typeof(InvalidJsonException))] - [TestCase("00", typeof(InvalidJsonException))] - [TestCase("--1", typeof(InvalidJsonException))] - public void NumberToFloat_Invalid(string jsonValue, System.Type expectedExceptionType) - { - string json = "{ \"singleFloat\": " + jsonValue + "}"; - Assert.Throws(expectedExceptionType, () => TestAllTypes.Parser.ParseJson(json)); - } - - // The simplest way of testing that the value has parsed correctly is to reformat it, - // as we trust the formatting. In many cases that will give the same result as the input, - // so in those cases we accept an expectedFormatted value of null. Sometimes the results - // will be different though, due to a different number of digits being provided. - [Test] - // Z offset - [TestCase("2015-10-09T14:46:23.123456789Z", null)] - [TestCase("2015-10-09T14:46:23.123456Z", null)] - [TestCase("2015-10-09T14:46:23.123Z", null)] - [TestCase("2015-10-09T14:46:23Z", null)] - [TestCase("2015-10-09T14:46:23.123456000Z", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.1234560Z", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123000000Z", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.1230Z", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.00Z", "2015-10-09T14:46:23Z")] - - // +00:00 offset - [TestCase("2015-10-09T14:46:23.123456789+00:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T14:46:23.123456+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23+00:00", "2015-10-09T14:46:23Z")] - [TestCase("2015-10-09T14:46:23.123456000+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.1234560+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123000000+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.1230+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.00+00:00", "2015-10-09T14:46:23Z")] - - // Other offsets (assume by now that the subsecond handling is okay) - [TestCase("2015-10-09T15:46:23.123456789+01:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T13:46:23.123456789-01:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T15:16:23.123456789+00:30", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T14:16:23.123456789-00:30", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T16:31:23.123456789+01:45", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T13:01:23.123456789-01:45", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-10T08:46:23.123456789+18:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-08T20:46:23.123456789-18:00", "2015-10-09T14:46:23.123456789Z")] - - // Leap years and min/max - [TestCase("2016-02-29T14:46:23.123456789Z", null)] - [TestCase("2000-02-29T14:46:23.123456789Z", null)] - [TestCase("0001-01-01T00:00:00Z", null)] - [TestCase("9999-12-31T23:59:59.999999999Z", null)] - public void Timestamp_Valid(string jsonValue, string expectedFormatted) - { - expectedFormatted = expectedFormatted ?? jsonValue; - string json = WrapInQuotes(jsonValue); - var parsed = Timestamp.Parser.ParseJson(json); - Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString()); - } - - [Test] - [TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")] - [TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")] - [TestCase("2015-10-09T14.46.23.123456789Z", Description = "Wrong time separators")] - [TestCase("2015-10-09T14:46:23,123456789Z", Description = "Wrong fractional second separators (valid ISO-8601 though)")] - [TestCase(" 2015-10-09T14:46:23.123456789Z", Description = "Whitespace at start")] - [TestCase("2015-10-09T14:46:23.123456789Z ", Description = "Whitespace at end")] - [TestCase("2015-10-09T14:46:23.1234567890", Description = "Too many digits")] - [TestCase("2015-10-09T14:46:23.123456789", Description = "No offset")] - [TestCase("2015-13-09T14:46:23.123456789Z", Description = "Invalid month")] - [TestCase("2015-10-32T14:46:23.123456789Z", Description = "Invalid day")] - [TestCase("2015-10-09T24:00:00.000000000Z", Description = "Invalid hour (valid ISO-8601 though)")] - [TestCase("2015-10-09T14:60:23.123456789Z", Description = "Invalid minutes")] - [TestCase("2015-10-09T14:46:60.123456789Z", Description = "Invalid seconds")] - [TestCase("2015-10-09T14:46:23.123456789+18:01", Description = "Offset too large (positive)")] - [TestCase("2015-10-09T14:46:23.123456789-18:01", Description = "Offset too large (negative)")] - [TestCase("2015-10-09T14:46:23.123456789-00:00", Description = "Local offset (-00:00) makes no sense here")] - [TestCase("0001-01-01T00:00:00+00:01", Description = "Value before earliest when offset applied")] - [TestCase("9999-12-31T23:59:59.999999999-00:01", Description = "Value after latest when offset applied")] - [TestCase("2100-02-29T14:46:23.123456789Z", Description = "Feb 29th on a non-leap-year")] - public void Timestamp_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => Timestamp.Parser.ParseJson(json)); - } - - [Test] - public void StructValue_Null() - { - Assert.AreEqual(new Value { NullValue = 0 }, Value.Parser.ParseJson("null")); - } - - [Test] - public void StructValue_String() - { - Assert.AreEqual(new Value { StringValue = "hi" }, Value.Parser.ParseJson("\"hi\"")); - } - - [Test] - public void StructValue_Bool() - { - Assert.AreEqual(new Value { BoolValue = true }, Value.Parser.ParseJson("true")); - Assert.AreEqual(new Value { BoolValue = false }, Value.Parser.ParseJson("false")); - } - - [Test] - public void StructValue_List() - { - Assert.AreEqual(Value.ForList(Value.ForNumber(1), Value.ForString("x")), Value.Parser.ParseJson("[1, \"x\"]")); - } - - [Test] - public void ParseListValue() - { - Assert.AreEqual(new ListValue { Values = { Value.ForNumber(1), Value.ForString("x") } }, ListValue.Parser.ParseJson("[1, \"x\"]")); - } - - [Test] - public void StructValue_Struct() - { - Assert.AreEqual( - Value.ForStruct(new Struct { Fields = { { "x", Value.ForNumber(1) }, { "y", Value.ForString("z") } } }), - Value.Parser.ParseJson("{ \"x\": 1, \"y\": \"z\" }")); - } - - [Test] - public void ParseStruct() - { - Assert.AreEqual(new Struct { Fields = { { "x", Value.ForNumber(1) }, { "y", Value.ForString("z") } } }, - Struct.Parser.ParseJson("{ \"x\": 1, \"y\": \"z\" }")); - } - - // TODO for duration parsing: upper and lower bounds. - // +/- 315576000000 seconds - - [Test] - [TestCase("1.123456789s", null)] - [TestCase("1.123456s", null)] - [TestCase("1.123s", null)] - [TestCase("1.12300s", "1.123s")] - [TestCase("1.12345s", "1.123450s")] - [TestCase("1s", null)] - [TestCase("-1.123456789s", null)] - [TestCase("-1.123456s", null)] - [TestCase("-1.123s", null)] - [TestCase("-1s", null)] - [TestCase("0.123s", null)] - [TestCase("-0.123s", null)] - [TestCase("123456.123s", null)] - [TestCase("-123456.123s", null)] - // Upper and lower bounds - [TestCase("315576000000s", null)] - [TestCase("-315576000000s", null)] - public void Duration_Valid(string jsonValue, string expectedFormatted) - { - expectedFormatted = expectedFormatted ?? jsonValue; - string json = WrapInQuotes(jsonValue); - var parsed = Duration.Parser.ParseJson(json); - Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString()); - } - - // The simplest way of testing that the value has parsed correctly is to reformat it, - // as we trust the formatting. In many cases that will give the same result as the input, - // so in those cases we accept an expectedFormatted value of null. Sometimes the results - // will be different though, due to a different number of digits being provided. - [Test] - [TestCase("1.1234567890s", Description = "Too many digits")] - [TestCase("1.123456789", Description = "No suffix")] - [TestCase("1.123456789ss", Description = "Too much suffix")] - [TestCase("1.123456789S", Description = "Upper case suffix")] - [TestCase("+1.123456789s", Description = "Leading +")] - [TestCase(".123456789s", Description = "No integer before the fraction")] - [TestCase("1,123456789s", Description = "Comma as decimal separator")] - [TestCase("1x1.123456789s", Description = "Non-digit in integer part")] - [TestCase("1.1x3456789s", Description = "Non-digit in fractional part")] - [TestCase(" 1.123456789s", Description = "Whitespace before fraction")] - [TestCase("1.123456789s ", Description = "Whitespace after value")] - [TestCase("01.123456789s", Description = "Leading zero (positive)")] - [TestCase("-01.123456789s", Description = "Leading zero (negative)")] - [TestCase("--0.123456789s", Description = "Double minus sign")] - // Violate upper/lower bounds in various ways - [TestCase("315576000001s", Description = "Integer part too large")] - [TestCase("3155760000000s", Description = "Integer part too long (positive)")] - [TestCase("-3155760000000s", Description = "Integer part too long (negative)")] - public void Duration_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => Duration.Parser.ParseJson(json)); - } - - // Not as many tests for field masks as I'd like; more to be added when we have more - // detailed specifications. - - [Test] - [TestCase("")] - [TestCase("foo", "foo")] - [TestCase("foo,bar", "foo", "bar")] - [TestCase("foo.bar", "foo.bar")] - [TestCase("fooBar", "foo_bar")] - [TestCase("fooBar.bazQux", "foo_bar.baz_qux")] - public void FieldMask_Valid(string jsonValue, params string[] expectedPaths) - { - string json = WrapInQuotes(jsonValue); - var parsed = FieldMask.Parser.ParseJson(json); - CollectionAssert.AreEqual(expectedPaths, parsed.Paths); - } - - [Test] - [TestCase("foo_bar")] - public void FieldMask_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => FieldMask.Parser.ParseJson(json)); - } - - [Test] - public void Any_RegularMessage() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, TypeRegistry.FromMessages(TestAllTypes.Descriptor))); - var message = new TestAllTypes { SingleInt32 = 10, SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } }; - var original = Any.Pack(message); - var json = formatter.Format(original); // This is tested in JsonFormatterTest - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - Assert.AreEqual(original, parser.Parse(json)); - string valueFirstJson = "{ \"singleInt32\": 10, \"singleNestedMessage\": { \"bb\": 20 }, \"@type\": \"type.googleapis.com/protobuf_unittest.TestAllTypes\" }"; - Assert.AreEqual(original, parser.Parse(valueFirstJson)); - } - - [Test] - public void Any_CustomPrefix() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - var message = new TestAllTypes { SingleInt32 = 10 }; - var original = Any.Pack(message, "custom.prefix/middle-part"); - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - string json = "{ \"@type\": \"custom.prefix/middle-part/protobuf_unittest.TestAllTypes\", \"singleInt32\": 10 }"; - Assert.AreEqual(original, parser.Parse(json)); - } - - [Test] - public void Any_UnknownType() - { - string json = "{ \"@type\": \"type.googleapis.com/bogus\" }"; - Assert.Throws(() => Any.Parser.ParseJson(json)); - } - - [Test] - public void Any_NoTypeUrl() - { - string json = "{ \"foo\": \"bar\" }"; - Assert.Throws(() => Any.Parser.ParseJson(json)); - } - - [Test] - public void Any_WellKnownType() - { - var registry = TypeRegistry.FromMessages(Timestamp.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, registry)); - var timestamp = new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp(); - var original = Any.Pack(timestamp); - var json = formatter.Format(original); // This is tested in JsonFormatterTest - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - Assert.AreEqual(original, parser.Parse(json)); - string valueFirstJson = "{ \"value\": \"1673-06-19T12:34:56Z\", \"@type\": \"type.googleapis.com/google.protobuf.Timestamp\" }"; - Assert.AreEqual(original, parser.Parse(valueFirstJson)); - } - - [Test] - public void Any_Nested() - { - var registry = TypeRegistry.FromMessages(TestWellKnownTypes.Descriptor, TestAllTypes.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, registry)); - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - var doubleNestedMessage = new TestAllTypes { SingleInt32 = 20 }; - var nestedMessage = Any.Pack(doubleNestedMessage); - var message = new TestWellKnownTypes { AnyField = Any.Pack(nestedMessage) }; - var json = formatter.Format(message); - // Use the descriptor-based parser just for a change. - Assert.AreEqual(message, parser.Parse(json, TestWellKnownTypes.Descriptor)); - } - - [Test] - public void DataAfterObject() - { - string json = "{} 10"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - /// - /// JSON equivalent to - /// - [Test] - public void MaliciousRecursion() - { - string data64 = CodedInputStreamTest.MakeRecursiveMessage(64).ToString(); - string data65 = CodedInputStreamTest.MakeRecursiveMessage(65).ToString(); - - var parser64 = new JsonParser(new JsonParser.Settings(64)); - CodedInputStreamTest.AssertMessageDepth(parser64.Parse(data64), 64); - Assert.Throws(() => parser64.Parse(data65)); - - var parser63 = new JsonParser(new JsonParser.Settings(63)); - Assert.Throws(() => parser63.Parse(data64)); - } - - [Test] - [TestCase("AQI")] - [TestCase("_-==")] - public void Bytes_InvalidBase64(string badBase64) - { - string json = "{ \"singleBytes\": \"" + badBase64 + "\" }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("\"FOREIGN_BAR\"", ForeignEnum.ForeignBar)] - [TestCase("5", ForeignEnum.ForeignBar)] - [TestCase("100", (ForeignEnum)100)] - public void EnumValid(string value, ForeignEnum expectedValue) - { - string json = "{ \"singleForeignEnum\": " + value + " }"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(new TestAllTypes { SingleForeignEnum = expectedValue }, parsed); - } - - [Test] - [TestCase("\"NOT_A_VALID_VALUE\"")] - [TestCase("5.5")] - public void Enum_Invalid(string value) - { - string json = "{ \"singleForeignEnum\": " + value + " }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void OneofDuplicate_Invalid() - { - string json = "{ \"oneofString\": \"x\", \"oneofUint32\": 10 }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - /// - /// Various tests use strings which have quotes round them for parsing or as the result - /// of formatting, but without those quotes being specified in the tests (for the sake of readability). - /// This method simply returns the input, wrapped in double quotes. - /// - internal static string WrapInQuotes(string text) - { - return '"' + text + '"'; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonTokenizerTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonTokenizerTest.cs deleted file mode 100644 index 2e690c1..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/JsonTokenizerTest.cs +++ /dev/null @@ -1,408 +0,0 @@ -#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 NUnit.Framework; -using System; -using System.IO; - -namespace Google.Protobuf -{ - public class JsonTokenizerTest - { - [Test] - public void EmptyObjectValue() - { - AssertTokens("{}", JsonToken.StartObject, JsonToken.EndObject); - } - - [Test] - public void EmptyArrayValue() - { - AssertTokens("[]", JsonToken.StartArray, JsonToken.EndArray); - } - - [Test] - [TestCase("foo", "foo")] - [TestCase("tab\\t", "tab\t")] - [TestCase("line\\nfeed", "line\nfeed")] - [TestCase("carriage\\rreturn", "carriage\rreturn")] - [TestCase("back\\bspace", "back\bspace")] - [TestCase("form\\ffeed", "form\ffeed")] - [TestCase("escaped\\/slash", "escaped/slash")] - [TestCase("escaped\\\\backslash", "escaped\\backslash")] - [TestCase("escaped\\\"quote", "escaped\"quote")] - [TestCase("foo {}[] bar", "foo {}[] bar")] - [TestCase("foo\\u09aFbar", "foo\u09afbar")] // Digits, upper hex, lower hex - [TestCase("ab\ud800\udc00cd", "ab\ud800\udc00cd")] - [TestCase("ab\\ud800\\udc00cd", "ab\ud800\udc00cd")] - public void StringValue(string json, string expectedValue) - { - AssertTokensNoReplacement("\"" + json + "\"", JsonToken.Value(expectedValue)); - } - - // Valid surrogate pairs, with mixed escaping. These test cases can't be expressed - // using TestCase as they have no valid UTF-8 representation. - // It's unclear exactly how we should handle a mixture of escaped or not: that can't - // come from UTF-8 text, but could come from a .NET string. For the moment, - // treat it as valid in the obvious way. - [Test] - public void MixedSurrogatePairs() - { - string expected = "\ud800\udc00"; - AssertTokens("'\\ud800\udc00'", JsonToken.Value(expected)); - AssertTokens("'\ud800\\udc00'", JsonToken.Value(expected)); - } - - [Test] - public void ObjectDepth() - { - string json = "{ \"foo\": { \"x\": 1, \"y\": [ 0 ] } }"; - var tokenizer = JsonTokenizer.FromTextReader(new StringReader(json)); - // If we had more tests like this, I'd introduce a helper method... but for one test, it's not worth it. - Assert.AreEqual(0, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartObject, tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("foo"), tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartObject, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("x"), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Value(1), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("y"), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartArray, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); // Depth hasn't changed in array - Assert.AreEqual(JsonToken.Value(0), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndArray, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndObject, tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndObject, tokenizer.Next()); - Assert.AreEqual(0, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.AreEqual(0, tokenizer.ObjectDepth); - } - - [Test] - public void ObjectDepth_WithPushBack() - { - string json = "{}"; - var tokenizer = JsonTokenizer.FromTextReader(new StringReader(json)); - Assert.AreEqual(0, tokenizer.ObjectDepth); - var token = tokenizer.Next(); - Assert.AreEqual(1, tokenizer.ObjectDepth); - // When we push back a "start object", we should effectively be back to the previous depth. - tokenizer.PushBack(token); - Assert.AreEqual(0, tokenizer.ObjectDepth); - // Read the same token again, and get back to depth 1 - token = tokenizer.Next(); - Assert.AreEqual(1, tokenizer.ObjectDepth); - - // Now the same in reverse, with EndObject - token = tokenizer.Next(); - Assert.AreEqual(0, tokenizer.ObjectDepth); - tokenizer.PushBack(token); - Assert.AreEqual(1, tokenizer.ObjectDepth); - tokenizer.Next(); - Assert.AreEqual(0, tokenizer.ObjectDepth); - } - - [Test] - [TestCase("embedded tab\t")] - [TestCase("embedded CR\r")] - [TestCase("embedded LF\n")] - [TestCase("embedded bell\u0007")] - [TestCase("bad escape\\a")] - [TestCase("incomplete escape\\")] - [TestCase("incomplete Unicode escape\\u000")] - [TestCase("invalid Unicode escape\\u000H")] - // Surrogate pair handling, both in raw .NET strings and escaped. We only need - // to detect this in strings, as non-ASCII characters anywhere other than in strings - // will already lead to parsing errors. - [TestCase("\\ud800")] - [TestCase("\\udc00")] - [TestCase("\\ud800x")] - [TestCase("\\udc00x")] - [TestCase("\\udc00\\ud800y")] - public void InvalidStringValue(string json) - { - AssertThrowsAfter("\"" + json + "\""); - } - - // Tests for invalid strings that can't be expressed in attributes, - // as the constants can't be expressed as UTF-8 strings. - [Test] - public void InvalidSurrogatePairs() - { - AssertThrowsAfter("\"\ud800x\""); - AssertThrowsAfter("\"\udc00y\""); - AssertThrowsAfter("\"\udc00\ud800y\""); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // We don't distinguish between positive and negative 0 - [TestCase("1", 1)] - [TestCase("-1", -1)] - // From here on, assume leading sign is okay... - [TestCase("1.125", 1.125)] - [TestCase("1.0", 1)] - [TestCase("1e5", 100000)] - [TestCase("1e000000", 1)] // Weird, but not prohibited by the spec - [TestCase("1E5", 100000)] - [TestCase("1e+5", 100000)] - [TestCase("1E-5", 0.00001)] - [TestCase("123E-2", 1.23)] - [TestCase("123.45E3", 123450)] - [TestCase(" 1 ", 1)] - public void NumberValue(string json, double expectedValue) - { - AssertTokens(json, JsonToken.Value(expectedValue)); - } - - [Test] - [TestCase("00")] - [TestCase(".5")] - [TestCase("1.")] - [TestCase("1e")] - [TestCase("1e-")] - [TestCase("--")] - [TestCase("--1")] - [TestCase("-1.7977e308")] - [TestCase("1.7977e308")] - public void InvalidNumberValue(string json) - { - AssertThrowsAfter(json); - } - - [Test] - [TestCase("nul")] - [TestCase("nothing")] - [TestCase("truth")] - [TestCase("fALSEhood")] - public void InvalidLiterals(string json) - { - AssertThrowsAfter(json); - } - - [Test] - public void NullValue() - { - AssertTokens("null", JsonToken.Null); - } - - [Test] - public void TrueValue() - { - AssertTokens("true", JsonToken.True); - } - - [Test] - public void FalseValue() - { - AssertTokens("false", JsonToken.False); - } - - [Test] - public void SimpleObject() - { - AssertTokens("{'x': 'y'}", - JsonToken.StartObject, JsonToken.Name("x"), JsonToken.Value("y"), JsonToken.EndObject); - } - - [Test] - [TestCase("[10, 20", 3)] - [TestCase("[10,", 2)] - [TestCase("[10:20]", 2)] - [TestCase("[", 1)] - [TestCase("[,", 1)] - [TestCase("{", 1)] - [TestCase("{,", 1)] - [TestCase("{[", 1)] - [TestCase("{{", 1)] - [TestCase("{0", 1)] - [TestCase("{null", 1)] - [TestCase("{false", 1)] - [TestCase("{true", 1)] - [TestCase("}", 0)] - [TestCase("]", 0)] - [TestCase(",", 0)] - [TestCase("'foo' 'bar'", 1)] - [TestCase(":", 0)] - [TestCase("'foo", 0)] // Incomplete string - [TestCase("{ 'foo' }", 2)] - [TestCase("{ x:1", 1)] // Property names must be quoted - [TestCase("{]", 1)] - [TestCase("[}", 1)] - [TestCase("[1,", 2)] - [TestCase("{'x':0]", 3)] - [TestCase("{ 'foo': }", 2)] - [TestCase("{ 'foo':'bar', }", 3)] - public void InvalidStructure(string json, int expectedValidTokens) - { - // Note: we don't test that the earlier tokens are exactly as expected, - // partly because that's hard to parameterize. - var reader = new StringReader(json.Replace('\'', '"')); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedValidTokens; i++) - { - Assert.IsNotNull(tokenizer.Next()); - } - Assert.Throws(() => tokenizer.Next()); - } - - [Test] - public void ArrayMixedType() - { - AssertTokens("[1, 'foo', null, false, true, [2], {'x':'y' }]", - JsonToken.StartArray, - JsonToken.Value(1), - JsonToken.Value("foo"), - JsonToken.Null, - JsonToken.False, - JsonToken.True, - JsonToken.StartArray, - JsonToken.Value(2), - JsonToken.EndArray, - JsonToken.StartObject, - JsonToken.Name("x"), - JsonToken.Value("y"), - JsonToken.EndObject, - JsonToken.EndArray); - } - - [Test] - public void ObjectMixedType() - { - AssertTokens(@"{'a': 1, 'b': 'bar', 'c': null, 'd': false, 'e': true, - 'f': [2], 'g': {'x':'y' }}", - JsonToken.StartObject, - JsonToken.Name("a"), - JsonToken.Value(1), - JsonToken.Name("b"), - JsonToken.Value("bar"), - JsonToken.Name("c"), - JsonToken.Null, - JsonToken.Name("d"), - JsonToken.False, - JsonToken.Name("e"), - JsonToken.True, - JsonToken.Name("f"), - JsonToken.StartArray, - JsonToken.Value(2), - JsonToken.EndArray, - JsonToken.Name("g"), - JsonToken.StartObject, - JsonToken.Name("x"), - JsonToken.Value("y"), - JsonToken.EndObject, - JsonToken.EndObject); - } - - [Test] - public void NextAfterEndDocumentThrows() - { - var tokenizer = JsonTokenizer.FromTextReader(new StringReader("null")); - Assert.AreEqual(JsonToken.Null, tokenizer.Next()); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.Throws(() => tokenizer.Next()); - } - - [Test] - public void CanPushBackEndDocument() - { - var tokenizer = JsonTokenizer.FromTextReader(new StringReader("null")); - Assert.AreEqual(JsonToken.Null, tokenizer.Next()); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - tokenizer.PushBack(JsonToken.EndDocument); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.Throws(() => tokenizer.Next()); - } - - /// - /// Asserts that the specified JSON is tokenized into the given sequence of tokens. - /// All apostrophes are first converted to double quotes, allowing any tests - /// that don't need to check actual apostrophe handling to use apostrophes in the JSON, avoiding - /// messy string literal escaping. The "end document" token is not specified in the list of - /// expected tokens, but is implicit. - /// - private static void AssertTokens(string json, params JsonToken[] expectedTokens) - { - AssertTokensNoReplacement(json.Replace('\'', '"'), expectedTokens); - } - - /// - /// Asserts that the specified JSON is tokenized into the given sequence of tokens. - /// Unlike , this does not perform any character - /// replacement on the specified JSON, and should be used when the text contains apostrophes which - /// are expected to be used *as* apostrophes. The "end document" token is not specified in the list of - /// expected tokens, but is implicit. - /// - private static void AssertTokensNoReplacement(string json, params JsonToken[] expectedTokens) - { - var reader = new StringReader(json); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedTokens.Length; i++) - { - var actualToken = tokenizer.Next(); - if (actualToken == JsonToken.EndDocument) - { - Assert.Fail("Expected {0} but reached end of token stream", expectedTokens[i]); - } - Assert.AreEqual(expectedTokens[i], actualToken); - } - var finalToken = tokenizer.Next(); - if (finalToken != JsonToken.EndDocument) - { - Assert.Fail("Expected token stream to be exhausted; received {0}", finalToken); - } - } - - private static void AssertThrowsAfter(string json, params JsonToken[] expectedTokens) - { - var reader = new StringReader(json); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedTokens.Length; i++) - { - var actualToken = tokenizer.Next(); - if (actualToken == JsonToken.EndDocument) - { - Assert.Fail("Expected {0} but reached end of document", expectedTokens[i]); - } - Assert.AreEqual(expectedTokens[i], actualToken); - } - Assert.Throws(() => tokenizer.Next()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Program.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Program.cs deleted file mode 100644 index 9078e59..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Program.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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 NUnitLite; -using System.Reflection; - -// Note: this file wasn't in the actual 3.0, but is required due to build -// system changes - -namespace Google.Protobuf.Test -{ - class Program - { - public static int Main(string[] args) - { - return new AutoRun(typeof(Program).GetTypeInfo().Assembly).Execute(args); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs deleted file mode 100644 index 0520ada..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs +++ /dev/null @@ -1,259 +0,0 @@ -#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; -using UnitTest.Issues.TestProtos; - -namespace Google.Protobuf.Reflection -{ - /// - /// 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...) - /// - public class DescriptorsTest - { - [Test] - public void FileDescriptor() - { - FileDescriptor file = UnittestProto3Reflection.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, UnittestImportProto3Reflection.Descriptor.PublicDependencies.Count); - Assert.AreEqual(UnittestImportPublicProto3Reflection.Descriptor, UnittestImportProto3Reflection.Descriptor.PublicDependencies[0]); - - Assert.AreEqual(1, file.Dependencies.Count); - Assert.AreEqual(UnittestImportProto3Reflection.Descriptor, file.Dependencies[0]); - - MessageDescriptor messageType = TestAllTypes.Descriptor; - Assert.AreSame(typeof(TestAllTypes), messageType.ClrType); - Assert.AreSame(TestAllTypes.Parser, messageType.Parser); - Assert.AreEqual(messageType, file.MessageTypes[0]); - Assert.AreEqual(messageType, file.FindTypeByName("TestAllTypes")); - Assert.Null(file.FindTypeByName("NoSuchType")); - Assert.Null(file.FindTypeByName("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("ForeignEnum")); - Assert.Null(file.FindTypeByName("NoSuchType")); - Assert.Null(file.FindTypeByName("protobuf_unittest.ForeignEnum")); - Assert.AreEqual(1, UnittestImportProto3Reflection.Descriptor.EnumTypes.Count); - Assert.AreEqual("ImportEnum", UnittestImportProto3Reflection.Descriptor.EnumTypes[0].Name); - for (int i = 0; i < file.EnumTypes.Count; i++) - { - Assert.AreEqual(i, file.EnumTypes[i].Index); - } - - Assert.AreEqual(10, file.SerializedData[0]); - } - - [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(UnittestProto3Reflection.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(UnittestProto3Reflection.Descriptor, nestedType.File); - Assert.AreEqual(messageType, nestedType.ContainingType); - - FieldDescriptor field = messageType.Fields.InDeclarationOrder()[0]; - Assert.AreEqual("single_int32", field.Name); - Assert.AreEqual(field, messageType.FindDescriptor("single_int32")); - Assert.Null(messageType.FindDescriptor("no_such_field")); - Assert.AreEqual(field, messageType.FindFieldByNumber(1)); - Assert.Null(messageType.FindFieldByNumber(571283)); - var fieldsInDeclarationOrder = messageType.Fields.InDeclarationOrder(); - for (int i = 0; i < fieldsInDeclarationOrder.Count; i++) - { - Assert.AreEqual(i, fieldsInDeclarationOrder[i].Index); - } - - Assert.AreEqual(nestedType, messageType.NestedTypes[0]); - Assert.AreEqual(nestedType, messageType.FindDescriptor("NestedMessage")); - Assert.Null(messageType.FindDescriptor("NoSuchType")); - for (int i = 0; i < messageType.NestedTypes.Count; i++) - { - Assert.AreEqual(i, messageType.NestedTypes[i].Index); - } - - Assert.AreEqual(messageType.EnumTypes[0], messageType.FindDescriptor("NestedEnum")); - Assert.Null(messageType.FindDescriptor("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("single_int32"); - FieldDescriptor enumField = messageType.FindDescriptor("single_nested_enum"); - FieldDescriptor messageField = messageType.FindDescriptor("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(UnittestProto3Reflection.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("single_int32"); - FieldDescriptor repeatedField = - TestAllTypes.Descriptor.FindDescriptor("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 = UnittestProto3Reflection.Descriptor.FindTypeByName("ForeignEnum"); - EnumDescriptor nestedType = TestAllTypes.Descriptor.FindDescriptor("NestedEnum"); - - Assert.AreEqual("ForeignEnum", enumType.Name); - Assert.AreEqual("protobuf_unittest.ForeignEnum", enumType.FullName); - Assert.AreEqual(UnittestProto3Reflection.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(UnittestProto3Reflection.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.ForeignFoo, 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("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); - } - - [Test] - public void MapEntryMessageDescriptor() - { - var descriptor = MapWellKnownTypes.Descriptor.NestedTypes[0]; - Assert.IsNull(descriptor.Parser); - Assert.IsNull(descriptor.ClrType); - Assert.IsNull(descriptor.Fields[1].Accessor); - } - - // From TestFieldOrdering: - // string my_string = 11; - // int64 my_int = 1; - // float my_float = 101; - // NestedMessage single_nested_message = 200; - [Test] - public void FieldListOrderings() - { - var fields = TestFieldOrderings.Descriptor.Fields; - Assert.AreEqual(new[] { 11, 1, 101, 200 }, fields.InDeclarationOrder().Select(x => x.FieldNumber)); - Assert.AreEqual(new[] { 1, 11, 101, 200 }, fields.InFieldNumberOrder().Select(x => x.FieldNumber)); - } - - - [Test] - public void DescriptorProtoFileDescriptor() - { - var descriptor = Google.Protobuf.Reflection.FileDescriptor.DescriptorProtoFileDescriptor; - Assert.AreEqual("google/protobuf/descriptor.proto", descriptor.Name); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs deleted file mode 100644 index 46cb1af..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs +++ /dev/null @@ -1,218 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Google.Protobuf.Reflection -{ - public class FieldAccessTest - { - [Test] - public void GetValue() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - Assert.AreEqual(message.SingleBool, fields[TestAllTypes.SingleBoolFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleBytes, fields[TestAllTypes.SingleBytesFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleDouble, fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFixed32, fields[TestAllTypes.SingleFixed32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFixed64, fields[TestAllTypes.SingleFixed64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFloat, fields[TestAllTypes.SingleFloatFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleForeignEnum, fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleForeignMessage, fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleImportEnum, fields[TestAllTypes.SingleImportEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleImportMessage, fields[TestAllTypes.SingleImportMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleInt32, fields[TestAllTypes.SingleInt32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleInt64, fields[TestAllTypes.SingleInt64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleNestedEnum, fields[TestAllTypes.SingleNestedEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleNestedMessage, fields[TestAllTypes.SingleNestedMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SinglePublicImportMessage, fields[TestAllTypes.SinglePublicImportMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSint32, fields[TestAllTypes.SingleSint32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSint64, fields[TestAllTypes.SingleSint64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleString, fields[TestAllTypes.SingleStringFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSfixed32, fields[TestAllTypes.SingleSfixed32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSfixed64, fields[TestAllTypes.SingleSfixed64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleUint32, fields[TestAllTypes.SingleUint32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleUint64, fields[TestAllTypes.SingleUint64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofBytes, fields[TestAllTypes.OneofBytesFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofString, fields[TestAllTypes.OneofStringFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofNestedMessage, fields[TestAllTypes.OneofNestedMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofUint32, fields[TestAllTypes.OneofUint32FieldNumber].Accessor.GetValue(message)); - - // Just one example for repeated fields - they're all just returning the list - var list = (IList) fields[TestAllTypes.RepeatedInt32FieldNumber].Accessor.GetValue(message); - Assert.AreEqual(message.RepeatedInt32, list); - Assert.AreEqual(message.RepeatedInt32[0], list[0]); // Just in case there was any doubt... - - // Just a single map field, for the same reason - var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } }; - fields = TestMap.Descriptor.Fields; - var dictionary = (IDictionary) fields[TestMap.MapStringStringFieldNumber].Accessor.GetValue(mapMessage); - Assert.AreEqual(mapMessage.MapStringString, dictionary); - Assert.AreEqual("value1", dictionary["key1"]); - } - - [Test] - public void Clear() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - fields[TestAllTypes.SingleBoolFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleInt32FieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleStringFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleBytesFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.RepeatedDoubleFieldNumber].Accessor.Clear(message); - - var expected = new TestAllTypes(SampleMessages.CreateFullTestAllTypes()) - { - SingleBool = false, - SingleInt32 = 0, - SingleString = "", - SingleBytes = ByteString.Empty, - SingleForeignEnum = 0, - SingleForeignMessage = null, - }; - expected.RepeatedDouble.Clear(); - - Assert.AreEqual(expected, message); - - // Separately, maps. - var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } }; - fields = TestMap.Descriptor.Fields; - fields[TestMap.MapStringStringFieldNumber].Accessor.Clear(mapMessage); - Assert.AreEqual(0, mapMessage.MapStringString.Count); - } - - [Test] - public void SetValue_SingleFields() - { - // Just a sample (primitives, messages, enums, strings, byte strings) - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - fields[TestAllTypes.SingleBoolFieldNumber].Accessor.SetValue(message, false); - fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500); - fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string"); - fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97)); - fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.ForeignFoo); - fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 }); - fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5); - - var expected = new TestAllTypes(SampleMessages.CreateFullTestAllTypes()) - { - SingleBool = false, - SingleInt32 = 500, - SingleString = "It's a string", - SingleBytes = ByteString.CopyFrom(99, 98, 97), - SingleForeignEnum = ForeignEnum.ForeignFoo, - SingleForeignMessage = new ForeignMessage { C = 12345 }, - SingleDouble = 20150701.5 - }; - - Assert.AreEqual(expected, message); - } - - [Test] - public void SetValue_SingleFields_WrongType() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.SingleBoolFieldNumber].Accessor.SetValue(message, "This isn't a bool")); - } - - [Test] - public void SetValue_MapFields() - { - IMessage message = new TestMap(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestMap.MapStringStringFieldNumber].Accessor.SetValue(message, new Dictionary())); - } - - [Test] - public void SetValue_RepeatedFields() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.RepeatedDoubleFieldNumber].Accessor.SetValue(message, new double[10])); - } - - [Test] - public void GetValue_IncorrectType() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.SingleBoolFieldNumber].Accessor.GetValue(new TestMap())); - } - - [Test] - public void Oneof() - { - var message = new TestAllTypes(); - var descriptor = TestAllTypes.Descriptor; - Assert.AreEqual(1, descriptor.Oneofs.Count); - var oneof = descriptor.Oneofs[0]; - Assert.AreEqual("oneof_field", oneof.Name); - Assert.IsNull(oneof.Accessor.GetCaseFieldDescriptor(message)); - - message.OneofString = "foo"; - Assert.AreSame(descriptor.Fields[TestAllTypes.OneofStringFieldNumber], oneof.Accessor.GetCaseFieldDescriptor(message)); - - message.OneofUint32 = 10; - Assert.AreSame(descriptor.Fields[TestAllTypes.OneofUint32FieldNumber], oneof.Accessor.GetCaseFieldDescriptor(message)); - - oneof.Accessor.Clear(message); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - } - - [Test] - public void FieldDescriptor_ByName() - { - var descriptor = TestAllTypes.Descriptor; - Assert.AreSame( - descriptor.Fields[TestAllTypes.SingleBoolFieldNumber], - descriptor.Fields["single_bool"]); - } - - [Test] - public void FieldDescriptor_NotFound() - { - var descriptor = TestAllTypes.Descriptor; - Assert.Throws(() => descriptor.Fields[999999].ToString()); - Assert.Throws(() => descriptor.Fields["not found"].ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs deleted file mode 100644 index 5be7ca2..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs +++ /dev/null @@ -1,94 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; - -namespace Google.Protobuf.Reflection -{ - public class TypeRegistryTest - { - // Most of our tests use messages. Simple test that we really can use files... - [Test] - public void CreateWithFileDescriptor() - { - var registry = TypeRegistry.FromFiles(DurationReflection.Descriptor, StructReflection.Descriptor); - AssertDescriptorPresent(registry, Duration.Descriptor); - AssertDescriptorPresent(registry, ListValue.Descriptor); - AssertDescriptorAbsent(registry, Timestamp.Descriptor); - } - - [Test] - public void TypesFromSameFile() - { - // Just for kicks, let's start with a nested type - var registry = TypeRegistry.FromMessages(TestAllTypes.Types.NestedMessage.Descriptor); - // Top-level... - AssertDescriptorPresent(registry, TestFieldOrderings.Descriptor); - // ... and nested (not the same as the original NestedMessage!) - AssertDescriptorPresent(registry, TestFieldOrderings.Types.NestedMessage.Descriptor); - } - - [Test] - public void DependenciesAreIncluded() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - // Direct dependencies - AssertDescriptorPresent(registry, ImportMessage.Descriptor); - // Public dependencies - AssertDescriptorPresent(registry, PublicImportMessage.Descriptor); - } - - [Test] - public void DuplicateFiles() - { - // Duplicates via dependencies and simply via repetition - var registry = TypeRegistry.FromFiles( - UnittestProto3Reflection.Descriptor, UnittestImportProto3Reflection.Descriptor, - TimestampReflection.Descriptor, TimestampReflection.Descriptor); - AssertDescriptorPresent(registry, TestAllTypes.Descriptor); - AssertDescriptorPresent(registry, ImportMessage.Descriptor); - AssertDescriptorPresent(registry, Timestamp.Descriptor); - } - - private static void AssertDescriptorPresent(TypeRegistry registry, MessageDescriptor descriptor) - { - Assert.AreSame(descriptor, registry.Find(descriptor.FullName)); - } - - private static void AssertDescriptorAbsent(TypeRegistry registry, MessageDescriptor descriptor) - { - Assert.IsNull(registry.Find(descriptor.FullName)); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleEnum.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleEnum.cs deleted file mode 100644 index 44f232a..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleEnum.cs +++ /dev/null @@ -1,42 +0,0 @@ -#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 -{ - // Just a sample enum with positive and negative values to be used in tests. - internal enum SampleEnum - { - NegativeValue = -2, - None = 0, - PositiveValue = 3 - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleMessages.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleMessages.cs deleted file mode 100644 index ffa4e2a..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/SampleMessages.cs +++ /dev/null @@ -1,99 +0,0 @@ -#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 Google.Protobuf.TestProtos; - -namespace Google.Protobuf -{ - /// - /// Helper methods to create sample instances of types generated from unit test messages. - /// - public class SampleMessages - { - /// - /// Creates a new sample TestAllTypes message with all fields populated. - /// The "oneof" field is populated with the string property (OneofString). - /// - public static TestAllTypes CreateFullTestAllTypes() - { - return new TestAllTypes - { - SingleBool = true, - SingleBytes = ByteString.CopyFrom(1, 2, 3, 4), - SingleDouble = 23.5, - SingleFixed32 = 23, - SingleFixed64 = 1234567890123, - SingleFloat = 12.25f, - SingleForeignEnum = ForeignEnum.ForeignBar, - SingleForeignMessage = new ForeignMessage { C = 10 }, - SingleImportEnum = ImportEnum.ImportBaz, - 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", - SingleUint32 = UInt32.MaxValue, - SingleUint64 = UInt64.MaxValue, - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { UInt32.MaxValue, 23 }, - RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar }, - RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } }, - RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified }, - RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, Int64.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } }, - RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue }, - RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue }, - OneofString = "Oneof string" - }; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestCornerCases.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestCornerCases.cs deleted file mode 100644 index 248f5fa..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestCornerCases.cs +++ /dev/null @@ -1,62 +0,0 @@ -#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 UnitTest.Issues.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class TestCornerCases - { - [Test] - public void TestRoundTripNegativeEnums() - { - NegativeEnumMessage msg = new NegativeEnumMessage - { - Value = NegativeEnum.MinusOne, - Values = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }, - PackedValues = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow } - }; - - Assert.AreEqual(58, msg.CalculateSize()); - - byte[] bytes = new byte[58]; - CodedOutputStream output = new CodedOutputStream(bytes); - - msg.WriteTo(output); - Assert.AreEqual(0, output.SpaceLeft); - - NegativeEnumMessage copy = NegativeEnumMessage.Parser.ParseFrom(bytes); - Assert.AreEqual(msg, copy); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs deleted file mode 100644 index 5663a69..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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.TestProtos -{ - /// - /// A message with custom diagnostics (to test that they work). - /// - public partial class ForeignMessage : ICustomDiagnosticMessage - { - public string ToDiagnosticString() - { - return $"{{ \"c\": {C}, \"@cInHex\": \"{C:x}\" }}"; - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs deleted file mode 100644 index 4aecc99..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs +++ /dev/null @@ -1,116 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf.WellKnownTypes -{ - public class AnyTest - { - [Test] - public void Pack() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.AreEqual("type.googleapis.com/protobuf_unittest.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Pack_WithCustomPrefix() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz"); - Assert.AreEqual("foo.bar/baz/protobuf_unittest.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Pack_WithCustomPrefixTrailingSlash() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz/"); - Assert.AreEqual("foo.bar/baz/protobuf_unittest.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Unpack_WrongType() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.Throws(() => any.Unpack()); - } - - [Test] - public void Unpack_Success() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - var unpacked = any.Unpack(); - Assert.AreEqual(message, unpacked); - } - - [Test] - public void Unpack_CustomPrefix_Success() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz"); - var unpacked = any.Unpack(); - Assert.AreEqual(message, unpacked); - } - - [Test] - public void ToString_WithValues() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - var text = any.ToString(); - Assert.That(text, Does.Contain("\"@value\": \"" + message.ToByteString().ToBase64() + "\"")); - } - - [Test] - public void ToString_Empty() - { - var any = new Any(); - Assert.AreEqual("{ \"@type\": \"\", \"@value\": \"\" }", any.ToString()); - } - - [Test] - public void ToString_MessageContainingAny() - { - var message = new TestWellKnownTypes { AnyField = new Any() }; - Assert.AreEqual("{ \"anyField\": { \"@type\": \"\", \"@value\": \"\" } }", message.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs deleted file mode 100644 index 141faf8..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs +++ /dev/null @@ -1,132 +0,0 @@ -#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 NUnit.Framework; -using System; - -namespace Google.Protobuf.WellKnownTypes -{ - public class DurationTest - { - [Test] - public void ToTimeSpan() - { - Assert.AreEqual(TimeSpan.FromSeconds(1), new Duration { Seconds = 1 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromSeconds(-1), new Duration { Seconds = -1 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromMilliseconds(1), new Duration { Nanos = 1000000 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromMilliseconds(-1), new Duration { Nanos = -1000000 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(1), new Duration { Nanos = 100 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(-1), new Duration { Nanos = -100 }.ToTimeSpan()); - - // Rounding is towards 0 - Assert.AreEqual(TimeSpan.FromTicks(2), new Duration { Nanos = 250 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(-2), new Duration { Nanos = -250 }.ToTimeSpan()); - } - - [Test] - public void Addition() - { - Assert.AreEqual(new Duration { Seconds = 2, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } + new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = -2, Nanos = -100000000 }, - new Duration { Seconds = -1, Nanos = -600000000 } + new Duration { Nanos = -500000000 }); - Assert.AreEqual(new Duration { Seconds = 1, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } + new Duration { Nanos = -500000000 }); - - // Non-normalized durations, or non-normalized intermediate results - Assert.AreEqual(new Duration { Seconds = 1 }, - new Duration { Seconds = 1, Nanos = -500000000 } + new Duration { Nanos = 500000000 }); - - Assert.AreEqual(new Duration { Nanos = -900000000 }, - new Duration { Seconds = -1, Nanos = -100000000 } + new Duration { Nanos = 200000000 }); - Assert.AreEqual(new Duration { Nanos = 900000000 }, - new Duration { Seconds = 1, Nanos = 100000000 } + new Duration { Nanos = -200000000 }); - } - - [Test] - public void Subtraction() - { - Assert.AreEqual(new Duration { Seconds = 1, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } - new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = -1, Nanos = -100000000 }, - new Duration { Seconds = -1, Nanos = -600000000 } - new Duration { Nanos = -500000000 }); - Assert.AreEqual(new Duration { Seconds = 2, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } - new Duration { Nanos = -500000000 }); - - // Non-normalized durations - Assert.AreEqual(new Duration(), - new Duration { Seconds = 1, Nanos = -500000000 } - new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = 1 }, - new Duration { Nanos = 2000000000 } - new Duration { Nanos = 1000000000 }); - } - - [Test] - public void FromTimeSpan() - { - Assert.AreEqual(new Duration { Seconds = 1 }, Duration.FromTimeSpan(TimeSpan.FromSeconds(1))); - Assert.AreEqual(new Duration { Nanos = Duration.NanosecondsPerTick }, Duration.FromTimeSpan(TimeSpan.FromTicks(1))); - } - - [Test] - [TestCase(0, Duration.MaxNanoseconds + 1)] - [TestCase(0, Duration.MinNanoseconds - 1)] - [TestCase(Duration.MinSeconds - 1, 0)] - [TestCase(Duration.MaxSeconds + 1, 0)] - [TestCase(1, -1)] - [TestCase(-1, 1)] - public void ToTimeSpan_Invalid(long seconds, int nanoseconds) - { - var duration = new Duration { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => duration.ToTimeSpan()); - } - - [Test] - [TestCase(0, Duration.MaxNanoseconds)] - [TestCase(0, Duration.MinNanoseconds)] - [TestCase(Duration.MinSeconds, Duration.MinNanoseconds)] - [TestCase(Duration.MaxSeconds, Duration.MaxNanoseconds)] - public void ToTimeSpan_Valid(long seconds, int nanoseconds) - { - // Only testing that these values don't throw, unlike their similar tests in ToTimeSpan_Invalid - var duration = new Duration { Seconds = seconds, Nanos = nanoseconds }; - duration.ToTimeSpan(); - } - - [Test] - public void ToString_NonNormalized() - { - // Just a single example should be sufficient... - var duration = new Duration { Seconds = 1, Nanos = -1 }; - Assert.AreEqual("{ \"@warning\": \"Invalid Duration\", \"seconds\": \"1\", \"nanos\": -1 }", duration.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs deleted file mode 100644 index 1d9908b..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs +++ /dev/null @@ -1,62 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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 NUnit.Framework; - -namespace Google.Protobuf.WellKnownTypes -{ - public class FieldMaskTest - { - [Test] - [TestCase("foo__bar")] - [TestCase("foo_3_ar")] - [TestCase("fooBar")] - public void ToString_Invalid(string input) - { - var mask = new FieldMask { Paths = { input } }; - var text = mask.ToString(); - // More specific test below - Assert.That(text, Does.Contain("@warning")); - Assert.That(text, Does.Contain(input)); - } - - [Test] - public void ToString_Invalid_Precise() - { - var mask = new FieldMask { Paths = { "x", "foo__bar", @"x\y" } }; - Assert.AreEqual( - "{ \"@warning\": \"Invalid FieldMask\", \"paths\": [ \"x\", \"foo__bar\", \"x\\\\y\" ] }", - mask.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs deleted file mode 100644 index 548c585..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs +++ /dev/null @@ -1,115 +0,0 @@ -#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 NUnit.Framework; -using System; - -namespace Google.Protobuf.WellKnownTypes -{ - public class TimestampTest - { - [Test] - public void FromAndToDateTime() - { - DateTime utcMin = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc); - DateTime utcMax = DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Utc); - AssertRoundtrip(new Timestamp { Seconds = -62135596800 }, utcMin); - AssertRoundtrip(new Timestamp { Seconds = 253402300799, Nanos = 999999900 }, utcMax); - AssertRoundtrip(new Timestamp(), new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Nanos = 1000000}, new DateTime(1970, 1, 1, 0, 0, 0, 1, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = -1, Nanos = 999000000 }, new DateTime(1969, 12, 31, 23, 59, 59, 999, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = 3600 }, new DateTime(1970, 1, 1, 1, 0, 0, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = -3600 }, new DateTime(1969, 12, 31, 23, 0, 0, DateTimeKind.Utc)); - } - - [Test] - public void ToDateTimeTruncation() - { - var t1 = new Timestamp { Seconds = 1, Nanos = 1000000 + Duration.NanosecondsPerTick - 1 }; - Assert.AreEqual(new DateTime(1970, 1, 1, 0, 0, 1, DateTimeKind.Utc).AddMilliseconds(1), t1.ToDateTime()); - - var t2 = new Timestamp { Seconds = -1, Nanos = 1000000 + Duration.NanosecondsPerTick - 1 }; - Assert.AreEqual(new DateTime(1969, 12, 31, 23, 59, 59).AddMilliseconds(1), t2.ToDateTime()); - } - - [Test] - [TestCase(Timestamp.UnixSecondsAtBclMinValue - 1, Timestamp.MaxNanos)] - [TestCase(Timestamp.UnixSecondsAtBclMaxValue + 1, 0)] - [TestCase(0, -1)] - [TestCase(0, Timestamp.MaxNanos + 1)] - public void ToDateTime_OutOfRange(long seconds, int nanoseconds) - { - var value = new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => value.ToDateTime()); - } - - // 1ns larger or smaller than the above values - [Test] - [TestCase(Timestamp.UnixSecondsAtBclMinValue, 0)] - [TestCase(Timestamp.UnixSecondsAtBclMaxValue, Timestamp.MaxNanos)] - [TestCase(0, 0)] - [TestCase(0, Timestamp.MaxNanos)] - public void ToDateTime_ValidBoundaries(long seconds, int nanoseconds) - { - var value = new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - value.ToDateTime(); - } - - private static void AssertRoundtrip(Timestamp timestamp, DateTime dateTime) - { - Assert.AreEqual(timestamp, Timestamp.FromDateTime(dateTime)); - Assert.AreEqual(dateTime, timestamp.ToDateTime()); - Assert.AreEqual(DateTimeKind.Utc, timestamp.ToDateTime().Kind); - } - - [Test] - public void Arithmetic() - { - Timestamp t1 = new Timestamp { Seconds = 10000, Nanos = 5000 }; - Timestamp t2 = new Timestamp { Seconds = 8000, Nanos = 10000 }; - Duration difference = new Duration { Seconds = 1999, Nanos = Duration.NanosecondsPerSecond - 5000 }; - Assert.AreEqual(difference, t1 - t2); - Assert.AreEqual(-difference, t2 - t1); - - Assert.AreEqual(t1, t2 + difference); - Assert.AreEqual(t2, t1 - difference); - } - - [Test] - public void ToString_NonNormalized() - { - // Just a single example should be sufficient... - var duration = new Timestamp { Seconds = 1, Nanos = -1 }; - Assert.AreEqual("{ \"@warning\": \"Invalid Timestamp\", \"seconds\": \"1\", \"nanos\": -1 }", duration.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs b/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs deleted file mode 100644 index 0df4ac4..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs +++ /dev/null @@ -1,421 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.IO; - -namespace Google.Protobuf.WellKnownTypes -{ - public class WrappersTest - { - [Test] - public void NullIsDefault() - { - var message = new TestWellKnownTypes(); - Assert.IsNull(message.StringField); - Assert.IsNull(message.BytesField); - Assert.IsNull(message.BoolField); - Assert.IsNull(message.FloatField); - Assert.IsNull(message.DoubleField); - Assert.IsNull(message.Int32Field); - Assert.IsNull(message.Int64Field); - Assert.IsNull(message.Uint32Field); - Assert.IsNull(message.Uint64Field); - } - - [Test] - public void NonDefaultSingleValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - - var bytes = message.ToByteArray(); - var parsed = TestWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual("x", parsed.StringField); - Assert.AreEqual(ByteString.CopyFrom(1, 2, 3), parsed.BytesField); - Assert.AreEqual(true, parsed.BoolField); - Assert.AreEqual(12.5f, parsed.FloatField); - Assert.AreEqual(12.25d, parsed.DoubleField); - Assert.AreEqual(1, parsed.Int32Field); - Assert.AreEqual(2L, parsed.Int64Field); - Assert.AreEqual(3U, parsed.Uint32Field); - Assert.AreEqual(4UL, parsed.Uint64Field); - } - - [Test] - public void NonNullDefaultIsPreservedThroughSerialization() - { - var message = new TestWellKnownTypes - { - StringField = "", - BytesField = ByteString.Empty, - BoolField = false, - FloatField = 0f, - DoubleField = 0d, - Int32Field = 0, - Int64Field = 0, - Uint32Field = 0, - Uint64Field = 0 - }; - - var bytes = message.ToByteArray(); - var parsed = TestWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual("", parsed.StringField); - Assert.AreEqual(ByteString.Empty, parsed.BytesField); - Assert.AreEqual(false, parsed.BoolField); - Assert.AreEqual(0f, parsed.FloatField); - Assert.AreEqual(0d, parsed.DoubleField); - Assert.AreEqual(0, parsed.Int32Field); - Assert.AreEqual(0L, parsed.Int64Field); - Assert.AreEqual(0U, parsed.Uint32Field); - Assert.AreEqual(0UL, parsed.Uint64Field); - } - - [Test] - public void RepeatedWrappersProhibitNullItems() - { - var message = new RepeatedWellKnownTypes(); - Assert.Throws(() => message.BoolField.Add((bool?) null)); - Assert.Throws(() => message.Int32Field.Add((int?) null)); - Assert.Throws(() => message.StringField.Add((string) null)); - Assert.Throws(() => message.BytesField.Add((ByteString) null)); - } - - [Test] - public void RepeatedWrappersSerializeDeserialize() - { - var message = new RepeatedWellKnownTypes - { - BoolField = { true, false }, - BytesField = { ByteString.CopyFrom(1, 2, 3), ByteString.CopyFrom(4, 5, 6), ByteString.Empty }, - DoubleField = { 12.5, -1.5, 0d }, - FloatField = { 123.25f, -20f, 0f }, - Int32Field = { int.MaxValue, int.MinValue, 0 }, - Int64Field = { long.MaxValue, long.MinValue, 0L }, - StringField = { "First", "Second", "" }, - Uint32Field = { uint.MaxValue, uint.MinValue, 0U }, - Uint64Field = { ulong.MaxValue, ulong.MinValue, 0UL }, - }; - var bytes = message.ToByteArray(); - var parsed = RepeatedWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual(message, parsed); - // Just to test a single value for sanity... - Assert.AreEqual("Second", message.StringField[1]); - } - - [Test] - public void RepeatedWrappersBinaryFormat() - { - // At one point we accidentally used a packed format for repeated wrappers, which is wrong (and weird). - // This test is just to prove that we use the right format. - - var rawOutput = new MemoryStream(); - var output = new CodedOutputStream(rawOutput); - // Write a value of 5 - output.WriteTag(RepeatedWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(2); - output.WriteTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint); - output.WriteInt32(5); - // Write a value of 0 (empty message) - output.WriteTag(RepeatedWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(0); - output.Flush(); - var expectedBytes = rawOutput.ToArray(); - - var message = new RepeatedWellKnownTypes { Int32Field = { 5, 0 } }; - var actualBytes = message.ToByteArray(); - Assert.AreEqual(expectedBytes, actualBytes); - } - - [Test] - public void MapWrappersSerializeDeserialize() - { - // Note: no null values here, as they are prohibited in map fields - // (despite being representable). - var message = new MapWellKnownTypes - { - BoolField = { { 10, false }, { 20, true } }, - BytesField = { - { -1, ByteString.CopyFrom(1, 2, 3) }, - { 10, ByteString.CopyFrom(4, 5, 6) }, - { 1000, ByteString.Empty }, - }, - DoubleField = { { 1, 12.5 }, { 10, -1.5 }, { 20, 0d } }, - FloatField = { { 2, 123.25f }, { 3, -20f }, { 4, 0f } }, - Int32Field = { { 5, int.MaxValue }, { 6, int.MinValue }, { 7, 0 } }, - Int64Field = { { 8, long.MaxValue }, { 9, long.MinValue }, { 10, 0L } }, - StringField = { { 11, "First" }, { 12, "Second" }, { 13, "" } }, - Uint32Field = { { 15, uint.MaxValue }, { 16, uint.MinValue }, { 17, 0U } }, - Uint64Field = { { 18, ulong.MaxValue }, { 19, ulong.MinValue }, { 20, 0UL } }, - }; - - var bytes = message.ToByteArray(); - var parsed = MapWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual(message, parsed); - // Just to test a single value for sanity... - Assert.AreEqual("Second", message.StringField[12]); - } - - [Test] - public void Reflection_SingleValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - var fields = TestWellKnownTypes.Descriptor.Fields; - - Assert.AreEqual("x", fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(ByteString.CopyFrom(1, 2, 3), fields[TestWellKnownTypes.BytesFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(true, fields[TestWellKnownTypes.BoolFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(12.5f, fields[TestWellKnownTypes.FloatFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(12.25d, fields[TestWellKnownTypes.DoubleFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(1, fields[TestWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(2L, fields[TestWellKnownTypes.Int64FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(3U, fields[TestWellKnownTypes.Uint32FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(4UL, fields[TestWellKnownTypes.Uint64FieldFieldNumber].Accessor.GetValue(message)); - - // And a couple of null fields... - message.StringField = null; - message.FloatField = null; - Assert.IsNull(fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.GetValue(message)); - Assert.IsNull(fields[TestWellKnownTypes.FloatFieldFieldNumber].Accessor.GetValue(message)); - } - - [Test] - public void Reflection_RepeatedFields() - { - // Just a single example... note that we can't have a null value here - var message = new RepeatedWellKnownTypes { Int32Field = { 1, 2 } }; - var fields = RepeatedWellKnownTypes.Descriptor.Fields; - var list = (IList) fields[RepeatedWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message); - CollectionAssert.AreEqual(new[] { 1, 2 }, list); - } - - [Test] - public void Reflection_MapFields() - { - // Just a single example... note that we can't have a null value here despite the value type being int? - var message = new MapWellKnownTypes { Int32Field = { { 1, 2 } } }; - var fields = MapWellKnownTypes.Descriptor.Fields; - var dictionary = (IDictionary) fields[MapWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message); - Assert.AreEqual(2, dictionary[1]); - } - - [Test] - public void Oneof() - { - var message = new OneofWellKnownTypes { EmptyField = new Empty() }; - // Start off with a non-wrapper - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.EmptyField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.StringField = "foo"; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.StringField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.StringField = "foo"; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.StringField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.DoubleField = 0.0f; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.DoubleField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.DoubleField = 1.0f; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.DoubleField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.ClearOneofField(); - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - AssertOneofRoundTrip(message); - } - - private void AssertOneofRoundTrip(OneofWellKnownTypes message) - { - // Normal roundtrip, but explicitly checking the case... - var bytes = message.ToByteArray(); - var parsed = OneofWellKnownTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - Assert.AreEqual(message.OneofFieldCase, parsed.OneofFieldCase); - } - - [Test] - [TestCase("x", "y", "y")] - [TestCase("x", "", "x")] - [TestCase("x", null, "x")] - [TestCase("", "y", "y")] - [TestCase("", "", "")] - [TestCase("", null, "")] - [TestCase(null, "y", "y")] - [TestCase(null, "", "")] - [TestCase(null, null, null)] - public void Merging(string original, string merged, string expected) - { - var originalMessage = new TestWellKnownTypes { StringField = original }; - var mergingMessage = new TestWellKnownTypes { StringField = merged }; - originalMessage.MergeFrom(mergingMessage); - Assert.AreEqual(expected, originalMessage.StringField); - - // Try it using MergeFrom(CodedInputStream) too... - originalMessage = new TestWellKnownTypes { StringField = original }; - originalMessage.MergeFrom(mergingMessage.ToByteArray()); - Assert.AreEqual(expected, originalMessage.StringField); - } - - // Merging is odd with wrapper types, due to the way that default values aren't emitted in - // the binary stream. In fact we cheat a little bit - a message with an explicitly present default - // value will have that default value ignored. See issue 615. Fixing this would require significant upheaval to - // the FieldCodec side of things. - [Test] - public void MergingStreamExplicitValue() - { - var message = new TestWellKnownTypes { Int32Field = 5 }; - - // Create a byte array which has the data of an Int32Value explicitly containing a value of 0. - // This wouldn't normally happen. - byte[] bytes; - var wrapperTag = WireFormat.MakeTag(TestWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - var valueTag = WireFormat.MakeTag(Int32Value.ValueFieldNumber, WireFormat.WireType.Varint); - using (var stream = new MemoryStream()) - { - var coded = new CodedOutputStream(stream); - coded.WriteTag(wrapperTag); - coded.WriteLength(2); // valueTag + a value 0, each one byte - coded.WriteTag(valueTag); - coded.WriteInt32(0); - coded.Flush(); - bytes = stream.ToArray(); - } - - message.MergeFrom(bytes); - // A normal implementation would have 0 now, as the explicit default would have been overwritten the 5. - // With the FieldCodec for Nullable, we can't tell the difference between an implicit 0 and an explicit 0. - Assert.AreEqual(5, message.Int32Field); - } - - [Test] - public void MergingStreamNoValue() - { - var message = new TestWellKnownTypes { Int32Field = 5 }; - - // Create a byte array which an Int32 field, but with no value. - var bytes = new TestWellKnownTypes { Int32Field = 0 }.ToByteArray(); - Assert.AreEqual(2, bytes.Length); // The tag for Int32Field is a single byte, then a byte indicating a 0-length message. - message.MergeFrom(bytes); - - // The "implicit" 0 did *not* overwrite the value. - // (This is the correct behaviour.) - Assert.AreEqual(5, message.Int32Field); - } - - // All permutations of origin/merging value being null, zero (default) or non-default. - // As this is the in-memory version, we don't need to worry about the difference between implicit and explicit 0. - [Test] - [TestCase(null, null, null)] - [TestCase(null, 0, 0)] - [TestCase(null, 5, 5)] - [TestCase(0, null, 0)] - [TestCase(0, 0, 0)] - [TestCase(0, 5, 5)] - [TestCase(5, null, 5)] - [TestCase(5, 0, 5)] - [TestCase(5, 10, 10)] - public void MergingMessageWithZero(int? originValue, int? mergingValue, int? expectedResult) - { - // This differs from the MergingStreamCornerCase because when we merge message *objects*, - // we ignore default values from the "source". - var message1 = new TestWellKnownTypes { Int32Field = originValue }; - var message2 = new TestWellKnownTypes { Int32Field = mergingValue }; - message1.MergeFrom(message2); - Assert.AreEqual(expectedResult, message1.Int32Field); - } - - [Test] - public void UnknownFieldInWrapper() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var wrapperTag = WireFormat.MakeTag(TestWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - var unknownTag = WireFormat.MakeTag(15, WireFormat.WireType.Varint); - var valueTag = WireFormat.MakeTag(Int32Value.ValueFieldNumber, WireFormat.WireType.Varint); - - output.WriteTag(wrapperTag); - output.WriteLength(4); // unknownTag + value 5 + valueType + value 6, each 1 byte - output.WriteTag(unknownTag); - output.WriteInt32((int) valueTag); // Sneakily "pretend" it's a tag when it's really a value - output.WriteTag(valueTag); - output.WriteInt32(6); - - output.Flush(); - stream.Position = 0; - - var message = TestWellKnownTypes.Parser.ParseFrom(stream); - Assert.AreEqual(6, message.Int32Field); - } - - [Test] - public void ClearWithReflection() - { - // String and Bytes are the tricky ones here, as the CLR type of the property - // is the same between the wrapper and non-wrapper types. - var message = new TestWellKnownTypes { StringField = "foo" }; - TestWellKnownTypes.Descriptor.Fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.Clear(message); - Assert.IsNull(message.StringField); - } - } -} diff --git a/lib/protobuf/csharp/compatibility_tests/v3.0.0/test.sh b/lib/protobuf/csharp/compatibility_tests/v3.0.0/test.sh deleted file mode 100755 index 9fcf406..0000000 --- a/lib/protobuf/csharp/compatibility_tests/v3.0.0/test.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -function run_test() { - # Generate test proto files. - $1 -Iprotos/src -I../../../src/ --csharp_out=src/Google.Protobuf.Test \ - --csharp_opt=base_namespace=Google.Protobuf \ - protos/src/google/protobuf/unittest_import_proto3.proto \ - protos/src/google/protobuf/unittest_import_public_proto3.proto \ - protos/src/google/protobuf/unittest_well_known_types.proto - - $1 -Iprotos/csharp --csharp_out=src/Google.Protobuf.Test \ - --csharp_opt=base_namespace=UnitTest.Issues \ - protos/csharp/protos/unittest_issues.proto - - $2 -Iprotos/src --csharp_out=src/Google.Protobuf.Test \ - --csharp_opt=base_namespace=Google.Protobuf \ - protos/src/google/protobuf/unittest_proto3.proto \ - protos/src/google/protobuf/map_unittest_proto3.proto - - # Build and test. - dotnet restore src/Google.Protobuf/Google.Protobuf.csproj - dotnet restore src/Google.Protobuf.Test/Google.Protobuf.Test.csproj - dotnet build -c Release src/Google.Protobuf/Google.Protobuf.csproj - dotnet build -c Release src/Google.Protobuf.Test/Google.Protobuf.Test.csproj - dotnet run -c Release -f netcoreapp2.1 -p src/Google.Protobuf.Test/Google.Protobuf.Test.csproj -} - -set -ex - -# Change to the script's directory. -cd $(dirname $0) - -# Version of the tests (i.e., the version of protobuf from where we extracted -# these tests). -TEST_VERSION=3.0.0 - -# The old version of protobuf that we are testing compatibility against. This -# is usually the same as TEST_VERSION (i.e., we use the tests extracted from -# that version to test compatibility of the newest runtime against it), but it -# is also possible to use this same test set to test the compatibiilty of the -# latest version against other versions. -case "$1" in - ""|3.0.0) - OLD_VERSION=3.0.0 - OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.0/protoc-3.0.0-linux-x86_64.exe - ;; - 3.0.2) - OLD_VERSION=3.0.2 - OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.0.2/protoc-3.0.2-linux-x86_64.exe - ;; - 3.1.0) - OLD_VERSION=3.1.0 - OLD_VERSION_PROTOC=http://repo1.maven.org/maven2/com/google/protobuf/protoc/3.1.0/protoc-3.1.0-linux-x86_64.exe - ;; - *) - echo "[ERROR]: Unknown version number: $1" - exit 1 - ;; -esac - -echo "Running compatibility tests with $OLD_VERSION" - -# Check protoc -[ -f ../../../src/protoc ] || { - echo "[ERROR]: Please build protoc first." - exit 1 -} - -# Download old version protoc compiler (for linux). -wget $OLD_VERSION_PROTOC -O old_protoc -chmod +x old_protoc - -# Test source compatibility. In these tests we recompile everything against -# the new runtime (including old version generated code). -# Copy the new runtime and keys. -cp ../../src/Google.Protobuf src/Google.Protobuf -r -cp ../../keys . -r - -# Test A.1: -# proto set 1: use old version -# proto set 2 which may import protos in set 1: use old version -run_test "./old_protoc" "./old_protoc" - -# Test A.2: -# proto set 1: use new version -# proto set 2 which may import protos in set 1: use old version -run_test "../../../src/protoc" "./old_protoc" - -# Test A.3: -# proto set 1: use old version -# proto set 2 which may import protos in set 1: use new version -run_test "./old_protoc" "../../../src/protoc" - -rm old_protoc -rm keys -r -rm src/Google.Protobuf -r diff --git a/lib/protobuf/csharp/generate_protos.sh b/lib/protobuf/csharp/generate_protos.sh deleted file mode 100755 index 5d3f5b7..0000000 --- a/lib/protobuf/csharp/generate_protos.sh +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/bash -# Generates C# source files from .proto files. -# You first need to make sure protoc has been built (see instructions on -# building protoc in root of this repository) - -set -e - -# cd to repository root -pushd $(dirname $0)/.. - -# Protocol buffer compiler to use. If the PROTOC variable is set, -# use that. Otherwise, probe for expected locations under both -# Windows and Unix. -if [ -z "$PROTOC" ]; then - # TODO(jonskeet): Use an array and a for loop instead? - if [ -x cmake/build/Debug/protoc.exe ]; then - PROTOC=cmake/build/Debug/protoc.exe - elif [ -x cmake/build/Release/protoc.exe ]; then - PROTOC=cmake/build/Release/protoc.exe - elif [ -x src/protoc ]; then - PROTOC=src/protoc - else - echo "Unable to find protocol buffer compiler." - exit 1 - fi -fi - -# descriptor.proto and well-known types -$PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf \ - --csharp_opt=base_namespace=Google.Protobuf \ - src/google/protobuf/descriptor.proto \ - 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 - -# Test protos -$PROTOC -Isrc -Icsharp/protos \ - --csharp_out=csharp/src/Google.Protobuf.Test/TestProtos \ - --descriptor_set_out=csharp/src/Google.Protobuf.Test/testprotos.pb \ - --include_source_info \ - --include_imports \ - csharp/protos/map_unittest_proto3.proto \ - csharp/protos/unittest_issues.proto \ - csharp/protos/unittest_custom_options_proto3.proto \ - csharp/protos/unittest_proto3.proto \ - csharp/protos/unittest_import_proto3.proto \ - csharp/protos/unittest_import_public_proto3.proto \ - src/google/protobuf/unittest_well_known_types.proto \ - src/google/protobuf/test_messages_proto3.proto - -# AddressBook sample protos -$PROTOC -Iexamples -Isrc --csharp_out=csharp/src/AddressBook \ - examples/addressbook.proto - -$PROTOC -Iconformance -Isrc --csharp_out=csharp/src/Google.Protobuf.Conformance \ - conformance/conformance.proto - -# Benchmark protos -$PROTOC -Ibenchmarks \ - benchmarks/datasets/google_message1/proto3/*.proto \ - benchmarks/benchmarks.proto \ - --csharp_out=csharp/src/Google.Protobuf.Benchmarks diff --git a/lib/protobuf/csharp/install_dotnet_sdk.ps1 b/lib/protobuf/csharp/install_dotnet_sdk.ps1 deleted file mode 100644 index b4132ab..0000000 --- a/lib/protobuf/csharp/install_dotnet_sdk.ps1 +++ /dev/null @@ -1,21 +0,0 @@ -#!/usr/bin/env powershell -# Install dotnet SDK based on the SDK version from global.json - -Set-StrictMode -Version 2 -$ErrorActionPreference = 'Stop' - -# avoid "Unknown error on a send" in Invoke-WebRequest -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 - -$InstallScriptUrl = 'https://dot.net/v1/dotnet-install.ps1' -$InstallScriptPath = Join-Path "$env:TEMP" 'dotnet-install.ps1' -$GlobalJsonPath = Join-Path $PSScriptRoot '..' | Join-Path -ChildPath 'global.json' - -# Resolve SDK version from global.json file -$GlobalJson = Get-Content -Raw $GlobalJsonPath | ConvertFrom-Json -$SDKVersion = $GlobalJson.sdk.version - -# Download install script -Write-Host "Downloading install script: $InstallScriptUrl => $InstallScriptPath" -Invoke-WebRequest -Uri $InstallScriptUrl -OutFile $InstallScriptPath -&$InstallScriptPath -Version $SDKVersion diff --git a/lib/protobuf/csharp/keys/Google.Protobuf.public.snk b/lib/protobuf/csharp/keys/Google.Protobuf.public.snk deleted file mode 100644 index 59cd36985f2278212095c38e73e7dd7cbbd4a4b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmV;R0AK$ABme*efB*oL000060ssI2Bme+XQ$aBR1ONa50096cfDgR4X&6pAg1RvG1+B->uM*RHQNf6a9 zB~yG#L(V_G7u4X&6pAg1RvG1+B->uM*RHQNf6a9B~yG#L(V_G7uqZStuRi2M9!LIZP=+}i|wUqeZ>hr?q&2<1&KKQ))2kGzqBLt(OXDTiOgUMt!8na>sr4Z=nJtlmqPSLaep$; z+)Uj)pJhDCZC0}poiDf%-7rHI=Cf9MgHY5%RV?=Lye27>-5A1GESH=1Kpgb)!HVQf~R+U5pB3a8MnS?C}ar~Dv` zatMU_QprfZHc}IHCQ&TY=CM}A)WV&N*qRkGWKB>kghE(Tw)r!^+n2G~rrIne-4AJu z-4%yI!5%Y^r4|u0T$u1<<*_O^p%0c4$N&CGole5shaLhYZ$i94x~xLn(}bJ`mM-}_ z?_pAsA7C880a)opwV{MukC!z@;dX5RqldFk|7&=1tUX@T81zG_7gvwRx=v!6*o+H-QK*V104k;P&A8iaH`}^!Gw$fXc iTpayck`$i(7QWQW0BxW7Qw1+r=whpQ@0U;o%l~gdEgn+< diff --git a/lib/protobuf/csharp/keys/README.md b/lib/protobuf/csharp/keys/README.md deleted file mode 100644 index ede6735..0000000 --- a/lib/protobuf/csharp/keys/README.md +++ /dev/null @@ -1,9 +0,0 @@ -Contents --------- - -- Google.Protobuf.public.snk: - Public key to verify strong name of Google.Protobuf assemblies. -- Google.Protobuf.snk: - Signing key to provide strong name of Google.Protobuf assemblies. - As per [Microsoft guidance](https://msdn.microsoft.com/en-us/library/wd40t7ad(v=vs.110).aspx) - signing key should be checked into the repository. diff --git a/lib/protobuf/csharp/protos/README.md b/lib/protobuf/csharp/protos/README.md deleted file mode 100644 index bdd66fc..0000000 --- a/lib/protobuf/csharp/protos/README.md +++ /dev/null @@ -1,3 +0,0 @@ -This directory contains unit test protos adapted from those in -src/google/protobuf, and C#-specific test protos for regression -tests against bugs found in the C# codegen or library. diff --git a/lib/protobuf/csharp/protos/map_unittest_proto3.proto b/lib/protobuf/csharp/protos/map_unittest_proto3.proto deleted file mode 100644 index e43e858..0000000 --- a/lib/protobuf/csharp/protos/map_unittest_proto3.proto +++ /dev/null @@ -1,116 +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. - -// This file is mostly equivalent to map_unittest.proto, but imports -// unittest_proto3.proto instead of unittest.proto, so that it only -// uses proto3 messages. This makes it suitable for testing -// implementations which only support proto3. -// The TestRequiredMessageMap message has been removed as there are no -// required fields in proto3. -syntax = "proto3"; - -option csharp_namespace = "Google.Protobuf.TestProtos"; - -import "unittest_proto3.proto"; - -package protobuf_unittest3; - -// Tests maps. -message TestMap { - map map_int32_int32 = 1; - map map_int64_int64 = 2; - map map_uint32_uint32 = 3; - map map_uint64_uint64 = 4; - map map_sint32_sint32 = 5; - map map_sint64_sint64 = 6; - map map_fixed32_fixed32 = 7; - map map_fixed64_fixed64 = 8; - map map_sfixed32_sfixed32 = 9; - map map_sfixed64_sfixed64 = 10; - map map_int32_float = 11; - map map_int32_double = 12; - map map_bool_bool = 13; - map map_string_string = 14; - map map_int32_bytes = 15; - map map_int32_enum = 16; - map map_int32_foreign_message = 17; -} - -message TestMapSubmessage { - TestMap test_map = 1; -} - -message TestMessageMap { - map map_int32_message = 1; -} - -// Two map fields share the same entry default instance. -message TestSameTypeMap { - map map1 = 1; - map map2 = 2; -} - -enum MapEnum { - MAP_ENUM_FOO = 0; - MAP_ENUM_BAR = 1; - MAP_ENUM_BAZ = 2; -} - -message TestArenaMap { - map map_int32_int32 = 1; - map map_int64_int64 = 2; - map map_uint32_uint32 = 3; - map map_uint64_uint64 = 4; - map map_sint32_sint32 = 5; - map map_sint64_sint64 = 6; - map map_fixed32_fixed32 = 7; - map map_fixed64_fixed64 = 8; - map map_sfixed32_sfixed32 = 9; - map map_sfixed64_sfixed64 = 10; - map map_int32_float = 11; - map map_int32_double = 12; - map map_bool_bool = 13; - map map_int32_enum = 14; - map map_int32_foreign_message = 15; -} - -// Previously, message containing enum called Type cannot be used as value of -// map field. -message MessageContainingEnumCalledType { - enum Type { - TYPE_FOO = 0; - } - map type = 1; -} - -// Previously, message cannot contain map field called "entry". -message MessageContainingMapCalledEntry { - map entry = 1; -} diff --git a/lib/protobuf/csharp/protos/unittest_custom_options_proto3.proto b/lib/protobuf/csharp/protos/unittest_custom_options_proto3.proto deleted file mode 100644 index 87bd0f7..0000000 --- a/lib/protobuf/csharp/protos/unittest_custom_options_proto3.proto +++ /dev/null @@ -1,336 +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. - -// Author: benjy@google.com (Benjy Weinberger) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file used to test the "custom options" feature of google.protobuf. - -// This file is based on unittest_custom_options.proto in -// src/google/protobuf, but is modified for proto3. It could -// potentially be moved into src/google/protobuf, but currently C# -// is the only language that really needs it, as we don't support -// proto2 syntax. It's cut down significantly as proto3 only supports -// extensions for options. - - -syntax = "proto3"; - -// A custom file option (defined below). -option (file_opt1) = 9876543210; - -import "google/protobuf/descriptor.proto"; - -// We don't put this in a package within proto2 because we need to make sure -// that the generated code doesn't depend on being in the proto2 namespace. -package protobuf_unittest; -option csharp_namespace = "UnitTest.Issues.TestProtos"; - -// Some simple test custom options of various types. - -extend google.protobuf.FileOptions { - uint64 file_opt1 = 7736974; -} - -extend google.protobuf.MessageOptions { - int32 message_opt1 = 7739036; -} - -extend google.protobuf.FieldOptions { - fixed64 field_opt1 = 7740936; -} - -extend google.protobuf.OneofOptions { - int32 oneof_opt1 = 7740111; -} - -extend google.protobuf.EnumOptions { - sfixed32 enum_opt1 = 7753576; -} - -extend google.protobuf.EnumValueOptions { - int32 enum_value_opt1 = 1560678; -} - -extend google.protobuf.ServiceOptions { - sint64 service_opt1 = 7887650; -} - -enum MethodOpt1 { - METHODOPT1_UNSPECIFIED = 0; - METHODOPT1_VAL1 = 1; - METHODOPT1_VAL2 = 2; -} - -extend google.protobuf.MethodOptions { - MethodOpt1 method_opt1 = 7890860; -} - -// A test message with custom options at all possible locations (and also some -// regular options, to make sure they interact nicely). -message TestMessageWithCustomOptions { - option message_set_wire_format = false; - - option (message_opt1) = -56; - - string field1 = 1 [ctype=CORD, - (field_opt1)=8765432109]; - - oneof AnOneof { - option (oneof_opt1) = -99; - int32 oneof_field = 2; - } - - enum AnEnum { - option (enum_opt1) = -789; - ANENUM_UNSPECIFIED = 0; - ANENUM_VAL1 = 1; - ANENUM_VAL2 = 2 [(enum_value_opt1) = 123]; - } -} - - -// A test RPC service with custom options at all possible locations (and also -// some regular options, to make sure they interact nicely). -message CustomOptionFooRequest { -} - -message CustomOptionFooResponse { -} - -message CustomOptionFooClientMessage { -} - -message CustomOptionFooServerMessage { -} - -service TestServiceWithCustomOptions { - option (service_opt1) = -9876543210; - - rpc Foo(CustomOptionFooRequest) returns (CustomOptionFooResponse) { - option (method_opt1) = METHODOPT1_VAL2; - } -} - - - -// Options of every possible field type, so we can test them all exhaustively. - -message DummyMessageContainingEnum { - enum TestEnumType { - TEST_OPTION_ENUM_UNSPECIFIED = 0; - TEST_OPTION_ENUM_TYPE1 = 22; - TEST_OPTION_ENUM_TYPE2 = -23; - } -} - -message DummyMessageInvalidAsOptionType { -} - -extend google.protobuf.MessageOptions { - bool bool_opt = 7706090; - int32 int32_opt = 7705709; - int64 int64_opt = 7705542; - uint32 uint32_opt = 7704880; - uint64 uint64_opt = 7702367; - sint32 sint32_opt = 7701568; - sint64 sint64_opt = 7700863; - fixed32 fixed32_opt = 7700307; - fixed64 fixed64_opt = 7700194; - sfixed32 sfixed32_opt = 7698645; - sfixed64 sfixed64_opt = 7685475; - float float_opt = 7675390; - double double_opt = 7673293; - string string_opt = 7673285; - bytes bytes_opt = 7673238; - DummyMessageContainingEnum.TestEnumType enum_opt = 7673233; - DummyMessageInvalidAsOptionType message_type_opt = 7665967; -} - -message CustomOptionMinIntegerValues { - option (bool_opt) = false; - option (int32_opt) = -0x80000000; - option (int64_opt) = -0x8000000000000000; - option (uint32_opt) = 0; - option (uint64_opt) = 0; - option (sint32_opt) = -0x80000000; - option (sint64_opt) = -0x8000000000000000; - option (fixed32_opt) = 0; - option (fixed64_opt) = 0; - option (sfixed32_opt) = -0x80000000; - option (sfixed64_opt) = -0x8000000000000000; -} - -message CustomOptionMaxIntegerValues { - option (bool_opt) = true; - option (int32_opt) = 0x7FFFFFFF; - option (int64_opt) = 0x7FFFFFFFFFFFFFFF; - option (uint32_opt) = 0xFFFFFFFF; - option (uint64_opt) = 0xFFFFFFFFFFFFFFFF; - option (sint32_opt) = 0x7FFFFFFF; - option (sint64_opt) = 0x7FFFFFFFFFFFFFFF; - option (fixed32_opt) = 0xFFFFFFFF; - option (fixed64_opt) = 0xFFFFFFFFFFFFFFFF; - option (sfixed32_opt) = 0x7FFFFFFF; - option (sfixed64_opt) = 0x7FFFFFFFFFFFFFFF; -} - -message CustomOptionOtherValues { - option (int32_opt) = -100; // To test sign-extension. - option (float_opt) = 12.3456789; - option (double_opt) = 1.234567890123456789; - option (string_opt) = "Hello, \"World\""; - option (bytes_opt) = "Hello\0World"; - option (enum_opt) = TEST_OPTION_ENUM_TYPE2; -} - -message SettingRealsFromPositiveInts { - option (float_opt) = 12; - option (double_opt) = 154; -} - -message SettingRealsFromNegativeInts { - option (float_opt) = -12; - option (double_opt) = -154; -} - -// Options of complex message types, themselves combined and extended in -// various ways. - -message ComplexOptionType1 { - int32 foo = 1; - int32 foo2 = 2; - int32 foo3 = 3; - repeated int32 foo4 = 4; -} - -message ComplexOptionType2 { - ComplexOptionType1 bar = 1; - int32 baz = 2; - - message ComplexOptionType4 { - int32 waldo = 1; - - extend google.protobuf.MessageOptions { - ComplexOptionType4 complex_opt4 = 7633546; - } - } - - ComplexOptionType4 fred = 3; - repeated ComplexOptionType4 barney = 4; -} - -message ComplexOptionType3 { - int32 qux = 1; -} - -extend google.protobuf.MessageOptions { - protobuf_unittest.ComplexOptionType1 complex_opt1 = 7646756; - ComplexOptionType2 complex_opt2 = 7636949; - ComplexOptionType3 complex_opt3 = 7636463; -} - -// Note that we try various different ways of naming the same extension. -message VariousComplexOptions { - option (.protobuf_unittest.complex_opt1).foo = 42; - option (protobuf_unittest.complex_opt1).foo4 = 99; - option (protobuf_unittest.complex_opt1).foo4 = 88; - option (complex_opt2).baz = 987; - option (complex_opt2).bar.foo = 743; - option (ComplexOptionType2.ComplexOptionType4.complex_opt4).waldo = 1971; - option (complex_opt2).fred.waldo = 321; - option (complex_opt2).barney = { waldo: 101 }; - option (complex_opt2).barney = { waldo: 212 }; - option (protobuf_unittest.complex_opt3).qux = 9; -} - -// ------------------------------------------------------ -// Definitions for testing aggregate option parsing. -// See descriptor_unittest.cc. - -// A helper type used to test aggregate option parsing -message Aggregate { - int32 i = 1; - string s = 2; - - // A nested object - Aggregate sub = 3; -} - -// Allow Aggregate to be used as an option at all possible locations -// in the .proto grammer. -extend google.protobuf.FileOptions { Aggregate fileopt = 15478479; } -extend google.protobuf.MessageOptions { Aggregate msgopt = 15480088; } -extend google.protobuf.FieldOptions { Aggregate fieldopt = 15481374; } -extend google.protobuf.EnumOptions { Aggregate enumopt = 15483218; } -extend google.protobuf.EnumValueOptions { Aggregate enumvalopt = 15486921; } -extend google.protobuf.ServiceOptions { Aggregate serviceopt = 15497145; } -extend google.protobuf.MethodOptions { Aggregate methodopt = 15512713; } - -// Try using AggregateOption at different points in the proto grammar -option (fileopt) = { - s: 'FileAnnotation' - // Also test the handling of comments - /* of both types */ i: 100 - - sub { s: 'NestedFileAnnotation' } -}; - -message AggregateMessage { - option (msgopt) = { i:101 s:'MessageAnnotation' }; - int32 fieldname = 1 [(fieldopt) = { s:'FieldAnnotation' }]; -} - -service AggregateService { - option (serviceopt) = { s:'ServiceAnnotation' }; - rpc Method (AggregateMessage) returns (AggregateMessage) { - option (methodopt) = { s:'MethodAnnotation' }; - } -} - -enum AggregateEnum { - option (enumopt) = { s:'EnumAnnotation' }; - UNSPECIFIED = 0; - VALUE = 1 [(enumvalopt) = { s:'EnumValueAnnotation' }]; -} - -// Test custom options for nested type. -message NestedOptionType { - message NestedMessage { - option (message_opt1) = 1001; - int32 nested_field = 1 [(field_opt1) = 1002]; - } - enum NestedEnum { - UNSPECIFIED = 0; - option (enum_opt1) = 1003; - NESTED_ENUM_VALUE = 1 [(enum_value_opt1) = 1004]; - } -} diff --git a/lib/protobuf/csharp/protos/unittest_import_proto3.proto b/lib/protobuf/csharp/protos/unittest_import_proto3.proto deleted file mode 100644 index 2e66682..0000000 --- a/lib/protobuf/csharp/protos/unittest_import_proto3.proto +++ /dev/null @@ -1,56 +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. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file which is imported by unittest_proto3.proto to test importing. - -syntax = "proto3"; - -package protobuf_unittest_import; - -option csharp_namespace = "Google.Protobuf.TestProtos"; - -// Test public import -import public "unittest_import_public_proto3.proto"; - -message ImportMessage { - int32 d = 1; -} - -enum ImportEnum { - IMPORT_ENUM_UNSPECIFIED = 0; - IMPORT_FOO = 7; - IMPORT_BAR = 8; - IMPORT_BAZ = 9; -} - diff --git a/lib/protobuf/csharp/protos/unittest_import_public_proto3.proto b/lib/protobuf/csharp/protos/unittest_import_public_proto3.proto deleted file mode 100644 index 88c2079..0000000 --- a/lib/protobuf/csharp/protos/unittest_import_public_proto3.proto +++ /dev/null @@ -1,41 +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. - -// Author: liujisi@google.com (Pherl Liu) - -syntax = "proto3"; - -package protobuf_unittest_import; - -option csharp_namespace = "Google.Protobuf.TestProtos"; - -message PublicImportMessage { - int32 e = 1; -} diff --git a/lib/protobuf/csharp/protos/unittest_issues.proto b/lib/protobuf/csharp/protos/unittest_issues.proto deleted file mode 100644 index b4a88d8..0000000 --- a/lib/protobuf/csharp/protos/unittest_issues.proto +++ /dev/null @@ -1,140 +0,0 @@ -syntax = "proto3"; - -// These proto descriptors have at one time been reported as an issue or defect. -// They are kept here to replicate the issue, and continue to verify the fix. - -// Issue: Non-"Google.Protobuffers" namespace will ensure that protobuffer library types are qualified -option csharp_namespace = "UnitTest.Issues.TestProtos"; - -package unittest_issues; - -// Issue 307: when generating doubly-nested types, any references -// should be of the form A.Types.B.Types.C. -message Issue307 { - message NestedOnce { - message NestedTwice { - } - } -} - -// Old issue 13: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=13 -// New issue 309: https://github.com/protocolbuffers/protobuf/issues/309 - -// message A { -// optional int32 _A = 1; -// } - -// message B { -// optional int32 B_ = 1; -// } - -//message AB { -// optional int32 a_b = 1; -//} - -// Similar issue with numeric names -// Java code failed too, so probably best for this to be a restriction. -// See https://github.com/protocolbuffers/protobuf/issues/308 -// message NumberField { -// optional int32 _01 = 1; -// } - -// issue 19 - negative enum values - -enum NegativeEnum { - NEGATIVE_ENUM_ZERO = 0; - FiveBelow = -5; - MinusOne = -1; -} - -message NegativeEnumMessage { - NegativeEnum value = 1; - repeated NegativeEnum values = 2 [packed = false]; - repeated NegativeEnum packed_values = 3 [packed=true]; -} - -// Issue 21: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=21 -// Decorate fields with [deprecated=true] as [System.Obsolete] - -message DeprecatedChild { -} - -enum DeprecatedEnum { - DEPRECATED_ZERO = 0; - one = 1; -} - -message DeprecatedFieldsMessage { - int32 PrimitiveValue = 1 [deprecated = true]; - repeated int32 PrimitiveArray = 2 [deprecated = true]; - - DeprecatedChild MessageValue = 3 [deprecated = true]; - repeated DeprecatedChild MessageArray = 4 [deprecated = true]; - - DeprecatedEnum EnumValue = 5 [deprecated = true]; - repeated DeprecatedEnum EnumArray = 6 [deprecated = true]; -} - -// Issue 45: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=45 -message ItemField { - int32 item = 1; -} - -message ReservedNames { - // Force a nested type called Types - message SomeNestedType { - } - - int32 types = 1; - int32 descriptor = 2; -} - -message TestJsonFieldOrdering { - // These fields are deliberately not declared in numeric - // order, and the oneof fields aren't contiguous either. - // This allows for reasonably robust tests of JSON output - // ordering. - // TestFieldOrderings in unittest_proto3.proto is similar, - // but doesn't include oneofs. - // TODO: Consider adding oneofs to TestFieldOrderings, although - // that will require fixing other tests in multiple platforms. - // Alternatively, consider just adding this to - // unittest_proto3.proto if multiple platforms want it. - - int32 plain_int32 = 4; - - oneof o1 { - string o1_string = 2; - int32 o1_int32 = 5; - } - - string plain_string = 1; - - oneof o2 { - int32 o2_int32 = 6; - string o2_string = 3; - } - -} - -message TestJsonName { - // Message for testing the effects for of the json_name option - string name = 1; - string description = 2 [json_name = "desc"]; - string guid = 3 [json_name = "exid"]; -} - -// Issue 3200: When merging two messages which use the same -// oneof case, which is itself a message type, the submessages should -// be merged. -message OneofMerging { - message Nested { - int32 x = 1; - int32 y = 2; - } - - oneof value { - string text = 1; - Nested nested = 2; - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/protos/unittest_proto3.proto b/lib/protobuf/csharp/protos/unittest_proto3.proto deleted file mode 100644 index 884beae..0000000 --- a/lib/protobuf/csharp/protos/unittest_proto3.proto +++ /dev/null @@ -1,410 +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. - -// Author: kenton@google.com (Kenton Varda) -// Based on original Protocol Buffers design by -// Sanjay Ghemawat, Jeff Dean, and others. -// -// A proto file we will use for unit testing. - -syntax = "proto3"; - -option csharp_namespace = "Google.Protobuf.TestProtos"; - -// Only present so we can test that we can read it (as an example -// of a non-C# option) -option java_outer_classname = "UnittestProto"; - -import "unittest_import_proto3.proto"; - -package protobuf_unittest3; - -// This proto includes every type of field in both singular and repeated -// forms. -message TestAllTypes { - message NestedMessage { - // The field name "b" fails to compile in proto1 because it conflicts with - // a local variable named "b" in one of the generated methods. Doh. - // This file needs to compile in proto1 to test backwards-compatibility. - int32 bb = 1; - } - - enum NestedEnum { - NESTED_ENUM_UNSPECIFIED = 0; - FOO = 1; - BAR = 2; - BAZ = 3; - NEG = -1; // Intentionally negative. - } - - // Singular - int32 single_int32 = 1; - int64 single_int64 = 2; - uint32 single_uint32 = 3; - uint64 single_uint64 = 4; - sint32 single_sint32 = 5; - sint64 single_sint64 = 6; - fixed32 single_fixed32 = 7; - fixed64 single_fixed64 = 8; - sfixed32 single_sfixed32 = 9; - sfixed64 single_sfixed64 = 10; - float single_float = 11; - double single_double = 12; - bool single_bool = 13; - string single_string = 14; - bytes single_bytes = 15; - - NestedMessage single_nested_message = 18; - ForeignMessage single_foreign_message = 19; - protobuf_unittest_import.ImportMessage single_import_message = 20; - - NestedEnum single_nested_enum = 21; - ForeignEnum single_foreign_enum = 22; - protobuf_unittest_import.ImportEnum single_import_enum = 23; - - // Defined in unittest_import_public.proto - protobuf_unittest_import.PublicImportMessage - single_public_import_message = 26; - - // Repeated - repeated int32 repeated_int32 = 31; - repeated int64 repeated_int64 = 32; - repeated uint32 repeated_uint32 = 33; - repeated uint64 repeated_uint64 = 34; - repeated sint32 repeated_sint32 = 35; - repeated sint64 repeated_sint64 = 36; - repeated fixed32 repeated_fixed32 = 37; - repeated fixed64 repeated_fixed64 = 38; - repeated sfixed32 repeated_sfixed32 = 39; - repeated sfixed64 repeated_sfixed64 = 40; - repeated float repeated_float = 41; - repeated double repeated_double = 42; - repeated bool repeated_bool = 43; - repeated string repeated_string = 44; - repeated bytes repeated_bytes = 45; - - repeated NestedMessage repeated_nested_message = 48; - repeated ForeignMessage repeated_foreign_message = 49; - repeated protobuf_unittest_import.ImportMessage repeated_import_message = 50; - - repeated NestedEnum repeated_nested_enum = 51; - repeated ForeignEnum repeated_foreign_enum = 52; - repeated protobuf_unittest_import.ImportEnum repeated_import_enum = 53; - // Defined in unittest_import_public.proto - repeated protobuf_unittest_import.PublicImportMessage - repeated_public_import_message = 54; - - // For oneof test - oneof oneof_field { - uint32 oneof_uint32 = 111; - NestedMessage oneof_nested_message = 112; - string oneof_string = 113; - bytes oneof_bytes = 114; - } -} - -// This proto includes a recusively nested message. -message NestedTestAllTypes { - NestedTestAllTypes child = 1; - TestAllTypes payload = 2; - repeated NestedTestAllTypes repeated_child = 3; -} - -message TestDeprecatedFields { - int32 deprecated_int32 = 1 [deprecated=true]; -} - -// Define these after TestAllTypes to make sure the compiler can handle -// that. -message ForeignMessage { - int32 c = 1; -} - -enum ForeignEnum { - FOREIGN_UNSPECIFIED = 0; - FOREIGN_FOO = 4; - FOREIGN_BAR = 5; - FOREIGN_BAZ = 6; -} - -message TestReservedFields { - reserved 2, 15, 9 to 11; - reserved "bar", "baz"; -} - - -// Test that we can use NestedMessage from outside TestAllTypes. -message TestForeignNested { - TestAllTypes.NestedMessage foreign_nested = 1; -} - -// Test that really large tag numbers don't break anything. -message TestReallyLargeTagNumber { - // The largest possible tag number is 2^28 - 1, since the wire format uses - // three bits to communicate wire type. - int32 a = 1; - int32 bb = 268435455; -} - -message TestRecursiveMessage { - TestRecursiveMessage a = 1; - int32 i = 2; -} - -// Test that mutual recursion works. -message TestMutualRecursionA { - TestMutualRecursionB bb = 1; -} - -message TestMutualRecursionB { - TestMutualRecursionA a = 1; - int32 optional_int32 = 2; -} - -message TestEnumAllowAlias { - TestEnumWithDupValue value = 1; -} - -// Test an enum that has multiple values with the same number. -enum TestEnumWithDupValue { - TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED = 0; - option allow_alias = true; - - FOO1 = 1; - BAR1 = 2; - BAZ = 3; - FOO2 = 1; - BAR2 = 2; -} - -// Test an enum with large, unordered values. -enum TestSparseEnum { - TEST_SPARSE_ENUM_UNSPECIFIED = 0; - SPARSE_A = 123; - SPARSE_B = 62374; - SPARSE_C = 12589234; - SPARSE_D = -15; - SPARSE_E = -53452; - // In proto3, value 0 must be the first one specified - // SPARSE_F = 0; - SPARSE_G = 2; -} - -// Test message with CamelCase field names. This violates Protocol Buffer -// standard style. -message TestCamelCaseFieldNames { - int32 PrimitiveField = 1; - string StringField = 2; - ForeignEnum EnumField = 3; - ForeignMessage MessageField = 4; - - repeated int32 RepeatedPrimitiveField = 7; - repeated string RepeatedStringField = 8; - repeated ForeignEnum RepeatedEnumField = 9; - repeated ForeignMessage RepeatedMessageField = 10; -} - - -// We list fields out of order, to ensure that we're using field number and not -// field index to determine serialization order. -message TestFieldOrderings { - string my_string = 11; - int64 my_int = 1; - float my_float = 101; - message NestedMessage { - int64 oo = 2; - // The field name "b" fails to compile in proto1 because it conflicts with - // a local variable named "b" in one of the generated methods. Doh. - // This file needs to compile in proto1 to test backwards-compatibility. - int32 bb = 1; - } - - NestedMessage single_nested_message = 200; -} - -message SparseEnumMessage { - TestSparseEnum sparse_enum = 1; -} - -// Test String and Bytes: string is for valid UTF-8 strings -message OneString { - string data = 1; -} - -message MoreString { - repeated string data = 1; -} - -message OneBytes { - bytes data = 1; -} - -message MoreBytes { - bytes data = 1; -} - -// Test int32, uint32, int64, uint64, and bool are all compatible -message Int32Message { - int32 data = 1; -} - -message Uint32Message { - uint32 data = 1; -} - -message Int64Message { - int64 data = 1; -} - -message Uint64Message { - uint64 data = 1; -} - -message BoolMessage { - bool data = 1; -} - -// Test oneofs. -message TestOneof { - oneof foo { - int32 foo_int = 1; - string foo_string = 2; - TestAllTypes foo_message = 3; - } -} - -// Test messages for packed fields - -message TestPackedTypes { - repeated int32 packed_int32 = 90 [packed = true]; - repeated int64 packed_int64 = 91 [packed = true]; - repeated uint32 packed_uint32 = 92 [packed = true]; - repeated uint64 packed_uint64 = 93 [packed = true]; - repeated sint32 packed_sint32 = 94 [packed = true]; - repeated sint64 packed_sint64 = 95 [packed = true]; - repeated fixed32 packed_fixed32 = 96 [packed = true]; - repeated fixed64 packed_fixed64 = 97 [packed = true]; - repeated sfixed32 packed_sfixed32 = 98 [packed = true]; - repeated sfixed64 packed_sfixed64 = 99 [packed = true]; - repeated float packed_float = 100 [packed = true]; - repeated double packed_double = 101 [packed = true]; - repeated bool packed_bool = 102 [packed = true]; - repeated ForeignEnum packed_enum = 103 [packed = true]; -} - -// A message with the same fields as TestPackedTypes, but without packing. Used -// to test packed <-> unpacked wire compatibility. -message TestUnpackedTypes { - repeated int32 unpacked_int32 = 90 [packed = false]; - repeated int64 unpacked_int64 = 91 [packed = false]; - repeated uint32 unpacked_uint32 = 92 [packed = false]; - repeated uint64 unpacked_uint64 = 93 [packed = false]; - repeated sint32 unpacked_sint32 = 94 [packed = false]; - repeated sint64 unpacked_sint64 = 95 [packed = false]; - repeated fixed32 unpacked_fixed32 = 96 [packed = false]; - repeated fixed64 unpacked_fixed64 = 97 [packed = false]; - repeated sfixed32 unpacked_sfixed32 = 98 [packed = false]; - repeated sfixed64 unpacked_sfixed64 = 99 [packed = false]; - repeated float unpacked_float = 100 [packed = false]; - repeated double unpacked_double = 101 [packed = false]; - repeated bool unpacked_bool = 102 [packed = false]; - repeated ForeignEnum unpacked_enum = 103 [packed = false]; -} - -message TestRepeatedScalarDifferentTagSizes { - // Parsing repeated fixed size values used to fail. This message needs to be - // used in order to get a tag of the right size; all of the repeated fields - // in TestAllTypes didn't trigger the check. - repeated fixed32 repeated_fixed32 = 12; - // Check for a varint type, just for good measure. - repeated int32 repeated_int32 = 13; - - // These have two-byte tags. - repeated fixed64 repeated_fixed64 = 2046; - repeated int64 repeated_int64 = 2047; - - // Three byte tags. - repeated float repeated_float = 262142; - repeated uint64 repeated_uint64 = 262143; -} - -message TestCommentInjectionMessage { - // */ <- This should not close the generated doc comment - string a = 1; -} - - -// Test that RPC services work. -message FooRequest {} -message FooResponse {} - -message FooClientMessage {} -message FooServerMessage{} - -// This is a test service -service TestService { - // This is a test method - rpc Foo(FooRequest) returns (FooResponse); - rpc Bar(BarRequest) returns (BarResponse); -} - - -message BarRequest {} -message BarResponse {} - -message TestEmptyMessage {} - -// This is leading detached comment 1 - -// This is leading detached comment 2 - -// This is a leading comment -message CommentMessage { - // Leading nested message comment - message NestedCommentMessage { - // Leading nested message field comment - string nested_text = 1; - } - - // Leading nested enum comment - enum NestedCommentEnum { - // Zero value comment - ZERO_VALUE = 0; - } - - // Leading field comment - string text = 1; // Trailing field comment -} - -// Leading enum comment -enum CommentEnum { - // Zero value comment - ZERO_VALUE = 0; -} diff --git a/lib/protobuf/csharp/src/AddressBook/AddPerson.cs b/lib/protobuf/csharp/src/AddressBook/AddPerson.cs deleted file mode 100644 index 62d1788..0000000 --- a/lib/protobuf/csharp/src/AddressBook/AddPerson.cs +++ /dev/null @@ -1,132 +0,0 @@ -#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.IO; - -namespace Google.Protobuf.Examples.AddressBook -{ - internal class AddPerson - { - /// - /// Builds a person based on user input - /// - private static Person PromptForAddress(TextReader input, TextWriter output) - { - Person person = new Person(); - - output.Write("Enter person ID: "); - person.Id = int.Parse(input.ReadLine()); - - output.Write("Enter name: "); - person.Name = input.ReadLine(); - - output.Write("Enter email address (blank for none): "); - string email = input.ReadLine(); - if (email.Length > 0) - { - person.Email = email; - } - - while (true) - { - output.Write("Enter a phone number (or leave blank to finish): "); - string number = input.ReadLine(); - if (number.Length == 0) - { - break; - } - - Person.Types.PhoneNumber phoneNumber = new Person.Types.PhoneNumber { Number = number }; - - output.Write("Is this a mobile, home, or work phone? "); - String type = input.ReadLine(); - switch (type) - { - case "mobile": - phoneNumber.Type = Person.Types.PhoneType.Mobile; - break; - case "home": - phoneNumber.Type = Person.Types.PhoneType.Home; - break; - case "work": - phoneNumber.Type = Person.Types.PhoneType.Work; - break; - default: - output.Write("Unknown phone type. Using default."); - break; - } - - person.Phones.Add(phoneNumber); - } - return person; - } - - /// - /// Entry point - loads an existing addressbook or creates a new one, - /// then writes it back to the file. - /// - public static int Main(string[] args) - { - if (args.Length != 1) - { - Console.Error.WriteLine("Usage: AddPerson ADDRESS_BOOK_FILE"); - return -1; - } - - AddressBook addressBook; - - if (File.Exists(args[0])) - { - using (Stream file = File.OpenRead(args[0])) - { - addressBook = AddressBook.Parser.ParseFrom(file); - } - } - else - { - Console.WriteLine("{0}: File not found. Creating a new file.", args[0]); - addressBook = new AddressBook(); - } - - // Add an address. - addressBook.People.Add(PromptForAddress(Console.In, Console.Out)); - - // Write the new address book back to disk. - using (Stream output = File.OpenWrite(args[0])) - { - addressBook.WriteTo(output); - } - return 0; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/AddressBook/AddressBook.csproj b/lib/protobuf/csharp/src/AddressBook/AddressBook.csproj deleted file mode 100644 index f3268c0..0000000 --- a/lib/protobuf/csharp/src/AddressBook/AddressBook.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - netcoreapp2.1 - Exe - Google.Protobuf.Examples.AddressBook.Program - False - - - - - - - diff --git a/lib/protobuf/csharp/src/AddressBook/Addressbook.cs b/lib/protobuf/csharp/src/AddressBook/Addressbook.cs deleted file mode 100644 index cbd9772..0000000 --- a/lib/protobuf/csharp/src/AddressBook/Addressbook.cs +++ /dev/null @@ -1,592 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: addressbook.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.Examples.AddressBook { - - /// Holder for reflection information generated from addressbook.proto - public static partial class AddressbookReflection { - - #region Descriptor - /// File descriptor for addressbook.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static AddressbookReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChFhZGRyZXNzYm9vay5wcm90bxIIdHV0b3JpYWwaH2dvb2dsZS9wcm90b2J1", - "Zi90aW1lc3RhbXAucHJvdG8ihwIKBlBlcnNvbhIMCgRuYW1lGAEgASgJEgoK", - "AmlkGAIgASgFEg0KBWVtYWlsGAMgASgJEiwKBnBob25lcxgEIAMoCzIcLnR1", - "dG9yaWFsLlBlcnNvbi5QaG9uZU51bWJlchIwCgxsYXN0X3VwZGF0ZWQYBSAB", - "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGkcKC1Bob25lTnVtYmVy", - "Eg4KBm51bWJlchgBIAEoCRIoCgR0eXBlGAIgASgOMhoudHV0b3JpYWwuUGVy", - "c29uLlBob25lVHlwZSIrCglQaG9uZVR5cGUSCgoGTU9CSUxFEAASCAoESE9N", - "RRABEggKBFdPUksQAiIvCgtBZGRyZXNzQm9vaxIgCgZwZW9wbGUYASADKAsy", - "EC50dXRvcmlhbC5QZXJzb25CUAoUY29tLmV4YW1wbGUudHV0b3JpYWxCEUFk", - "ZHJlc3NCb29rUHJvdG9zqgIkR29vZ2xlLlByb3RvYnVmLkV4YW1wbGVzLkFk", - "ZHJlc3NCb29rYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Examples.AddressBook.Person), global::Google.Protobuf.Examples.AddressBook.Person.Parser, new[]{ "Name", "Id", "Email", "Phones", "LastUpdated" }, null, new[]{ typeof(global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneNumber), global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneNumber.Parser, new[]{ "Number", "Type" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Examples.AddressBook.AddressBook), global::Google.Protobuf.Examples.AddressBook.AddressBook.Parser, new[]{ "People" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// [START messages] - /// - public sealed partial class Person : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Person()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Examples.AddressBook.AddressbookReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Person() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Person(Person other) : this() { - name_ = other.name_; - id_ = other.id_; - email_ = other.email_; - phones_ = other.phones_.Clone(); - lastUpdated_ = other.lastUpdated_ != null ? other.lastUpdated_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Person Clone() { - return new Person(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "id" field. - public const int IdFieldNumber = 2; - private int id_; - /// - /// Unique ID number for this person. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Id { - get { return id_; } - set { - id_ = value; - } - } - - /// Field number for the "email" field. - public const int EmailFieldNumber = 3; - private string email_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Email { - get { return email_; } - set { - email_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "phones" field. - public const int PhonesFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_phones_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneNumber.Parser); - private readonly pbc::RepeatedField phones_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Phones { - get { return phones_; } - } - - /// Field number for the "last_updated" field. - public const int LastUpdatedFieldNumber = 5; - private global::Google.Protobuf.WellKnownTypes.Timestamp lastUpdated_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Timestamp LastUpdated { - get { return lastUpdated_; } - set { - lastUpdated_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Person); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Person other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Id != other.Id) return false; - if (Email != other.Email) return false; - if(!phones_.Equals(other.phones_)) return false; - if (!object.Equals(LastUpdated, other.LastUpdated)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Id != 0) hash ^= Id.GetHashCode(); - if (Email.Length != 0) hash ^= Email.GetHashCode(); - hash ^= phones_.GetHashCode(); - if (lastUpdated_ != null) hash ^= LastUpdated.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Id != 0) { - output.WriteRawTag(16); - output.WriteInt32(Id); - } - if (Email.Length != 0) { - output.WriteRawTag(26); - output.WriteString(Email); - } - phones_.WriteTo(output, _repeated_phones_codec); - if (lastUpdated_ != null) { - output.WriteRawTag(42); - output.WriteMessage(LastUpdated); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (Id != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Id); - } - if (Email.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Email); - } - size += phones_.CalculateSize(_repeated_phones_codec); - if (lastUpdated_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(LastUpdated); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Person other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.Id != 0) { - Id = other.Id; - } - if (other.Email.Length != 0) { - Email = other.Email; - } - phones_.Add(other.phones_); - if (other.lastUpdated_ != null) { - if (lastUpdated_ == null) { - LastUpdated = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - LastUpdated.MergeFrom(other.LastUpdated); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Id = input.ReadInt32(); - break; - } - case 26: { - Email = input.ReadString(); - break; - } - case 34: { - phones_.AddEntriesFrom(input, _repeated_phones_codec); - break; - } - case 42: { - if (lastUpdated_ == null) { - LastUpdated = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(LastUpdated); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the Person message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum PhoneType { - [pbr::OriginalName("MOBILE")] Mobile = 0, - [pbr::OriginalName("HOME")] Home = 1, - [pbr::OriginalName("WORK")] Work = 2, - } - - public sealed partial class PhoneNumber : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PhoneNumber()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Examples.AddressBook.Person.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PhoneNumber() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PhoneNumber(PhoneNumber other) : this() { - number_ = other.number_; - type_ = other.type_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PhoneNumber Clone() { - return new PhoneNumber(this); - } - - /// Field number for the "number" field. - public const int NumberFieldNumber = 1; - private string number_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Number { - get { return number_; } - set { - number_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "type" field. - public const int TypeFieldNumber = 2; - private global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType type_ = global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.Mobile; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType Type { - get { return type_; } - set { - type_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as PhoneNumber); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(PhoneNumber other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Number != other.Number) return false; - if (Type != other.Type) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Number.Length != 0) hash ^= Number.GetHashCode(); - if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.Mobile) hash ^= Type.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Number.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Number); - } - if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.Mobile) { - output.WriteRawTag(16); - output.WriteEnum((int) Type); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Number.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Number); - } - if (Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.Mobile) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(PhoneNumber other) { - if (other == null) { - return; - } - if (other.Number.Length != 0) { - Number = other.Number; - } - if (other.Type != global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType.Mobile) { - Type = other.Type; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Number = input.ReadString(); - break; - } - case 16: { - Type = (global::Google.Protobuf.Examples.AddressBook.Person.Types.PhoneType) input.ReadEnum(); - break; - } - } - } - } - - } - - } - #endregion - - } - - /// - /// Our address book file is just one of these. - /// - public sealed partial class AddressBook : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AddressBook()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Examples.AddressBook.AddressbookReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AddressBook() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AddressBook(AddressBook other) : this() { - people_ = other.people_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AddressBook Clone() { - return new AddressBook(this); - } - - /// Field number for the "people" field. - public const int PeopleFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_people_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Examples.AddressBook.Person.Parser); - private readonly pbc::RepeatedField people_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField People { - get { return people_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as AddressBook); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(AddressBook other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!people_.Equals(other.people_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= people_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - people_.WriteTo(output, _repeated_people_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += people_.CalculateSize(_repeated_people_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(AddressBook other) { - if (other == null) { - return; - } - people_.Add(other.people_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - people_.AddEntriesFrom(input, _repeated_people_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/AddressBook/ListPeople.cs b/lib/protobuf/csharp/src/AddressBook/ListPeople.cs deleted file mode 100644 index 3758c1b..0000000 --- a/lib/protobuf/csharp/src/AddressBook/ListPeople.cs +++ /dev/null @@ -1,99 +0,0 @@ -#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.IO; - -namespace Google.Protobuf.Examples.AddressBook -{ - internal class ListPeople - { - /// - /// Iterates though all people in the AddressBook and prints info about them. - /// - private static void Print(AddressBook addressBook) - { - foreach (Person person in addressBook.People) - { - Console.WriteLine("Person ID: {0}", person.Id); - Console.WriteLine(" Name: {0}", person.Name); - if (person.Email != "") - { - Console.WriteLine(" E-mail address: {0}", person.Email); - } - - foreach (Person.Types.PhoneNumber phoneNumber in person.Phones) - { - switch (phoneNumber.Type) - { - case Person.Types.PhoneType.Mobile: - Console.Write(" Mobile phone #: "); - break; - case Person.Types.PhoneType.Home: - Console.Write(" Home phone #: "); - break; - case Person.Types.PhoneType.Work: - Console.Write(" Work phone #: "); - break; - } - Console.WriteLine(phoneNumber.Number); - } - } - } - - /// - /// Entry point - loads the addressbook and then displays it. - /// - public static int Main(string[] args) - { - if (args.Length != 1) - { - Console.Error.WriteLine("Usage: ListPeople ADDRESS_BOOK_FILE"); - return 1; - } - - if (!File.Exists(args[0])) - { - Console.WriteLine("{0} doesn't exist. Add a person to create the file first.", args[0]); - return 0; - } - - // Read the existing address book. - using (Stream stream = File.OpenRead(args[0])) - { - AddressBook addressBook = AddressBook.Parser.ParseFrom(stream); - Print(addressBook); - } - return 0; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/AddressBook/Program.cs b/lib/protobuf/csharp/src/AddressBook/Program.cs deleted file mode 100644 index ff7b9c0..0000000 --- a/lib/protobuf/csharp/src/AddressBook/Program.cs +++ /dev/null @@ -1,95 +0,0 @@ -#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.Examples.AddressBook -{ - /// - /// Entry point. Repeatedly prompts user for an action to take, delegating actual behaviour - /// to individual actions. Each action has its own Main method, so that it can be used as an - /// invidual complete program. - /// - internal class Program - { - private static int Main(string[] args) - { - if (args.Length > 1) - { - Console.Error.WriteLine("Usage: AddressBook [file]"); - Console.Error.WriteLine("If the filename isn't specified, \"addressbook.data\" is used instead."); - return 1; - } - string addressBookFile = args.Length > 0 ? args[0] : "addressbook.data"; - - bool stopping = false; - while (!stopping) - { - Console.WriteLine("Options:"); - Console.WriteLine(" L: List contents"); - Console.WriteLine(" A: Add new person"); - Console.WriteLine(" Q: Quit"); - Console.Write("Action? "); - Console.Out.Flush(); - char choice = Console.ReadKey().KeyChar; - Console.WriteLine(); - try - { - switch (choice) - { - case 'A': - case 'a': - AddPerson.Main(new string[] {addressBookFile}); - break; - case 'L': - case 'l': - ListPeople.Main(new string[] {addressBookFile}); - break; - case 'Q': - case 'q': - stopping = true; - break; - default: - Console.WriteLine("Unknown option: {0}", choice); - break; - } - } - catch (Exception e) - { - Console.WriteLine("Exception executing action: {0}", e); - } - Console.WriteLine(); - } - return 0; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/AddressBook/SampleUsage.cs b/lib/protobuf/csharp/src/AddressBook/SampleUsage.cs deleted file mode 100644 index 941d865..0000000 --- a/lib/protobuf/csharp/src/AddressBook/SampleUsage.cs +++ /dev/null @@ -1,73 +0,0 @@ -#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.IO; - -namespace Google.Protobuf.Examples.AddressBook -{ - internal class SampleUsage - { - private static void Main() - { - byte[] bytes; - // Create a new person - Person person = new Person - { - Id = 1, - Name = "Foo", - Email = "foo@bar", - Phones = { new Person.Types.PhoneNumber { Number = "555-1212" } } - }; - using (MemoryStream stream = new MemoryStream()) - { - // Save the person to a stream - person.WriteTo(stream); - bytes = stream.ToArray(); - } - Person copy = Person.Parser.ParseFrom(bytes); - - AddressBook book = new AddressBook - { - People = { copy } - }; - bytes = book.ToByteArray(); - // And read the address book back again - AddressBook restored = AddressBook.Parser.ParseFrom(bytes); - // The message performs a deep-comparison on equality: - if (restored.People.Count != 1 || !person.Equals(restored.People[0])) - { - throw new Exception("There is a bad person in here!"); - } - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/BenchmarkMessage1Proto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/BenchmarkMessage1Proto3.cs deleted file mode 100644 index 9e8c330..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/BenchmarkMessage1Proto3.cs +++ /dev/null @@ -1,1980 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: datasets/google_message1/proto3/benchmark_message1_proto3.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 Benchmarks.Proto3 { - - /// Holder for reflection information generated from datasets/google_message1/proto3/benchmark_message1_proto3.proto - public static partial class BenchmarkMessage1Proto3Reflection { - - #region Descriptor - /// File descriptor for datasets/google_message1/proto3/benchmark_message1_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static BenchmarkMessage1Proto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Cj9kYXRhc2V0cy9nb29nbGVfbWVzc2FnZTEvcHJvdG8zL2JlbmNobWFya19t", - "ZXNzYWdlMV9wcm90bzMucHJvdG8SEWJlbmNobWFya3MucHJvdG8zIoMGCg5H", - "b29nbGVNZXNzYWdlMRIOCgZmaWVsZDEYASABKAkSDgoGZmllbGQ5GAkgASgJ", - "Eg8KB2ZpZWxkMTgYEiABKAkSDwoHZmllbGQ4MBhQIAEoCBIPCgdmaWVsZDgx", - "GFEgASgIEg4KBmZpZWxkMhgCIAEoBRIOCgZmaWVsZDMYAyABKAUSEQoIZmll", - "bGQyODAYmAIgASgFEg4KBmZpZWxkNhgGIAEoBRIPCgdmaWVsZDIyGBYgASgD", - "Eg4KBmZpZWxkNBgEIAEoCRIOCgZmaWVsZDUYBSADKAYSDwoHZmllbGQ1ORg7", - "IAEoCBIOCgZmaWVsZDcYByABKAkSDwoHZmllbGQxNhgQIAEoBRIRCghmaWVs", - "ZDEzMBiCASABKAUSDwoHZmllbGQxMhgMIAEoCBIPCgdmaWVsZDE3GBEgASgI", - "Eg8KB2ZpZWxkMTMYDSABKAgSDwoHZmllbGQxNBgOIAEoCBIQCghmaWVsZDEw", - "NBhoIAEoBRIQCghmaWVsZDEwMBhkIAEoBRIQCghmaWVsZDEwMRhlIAEoBRIQ", - "CghmaWVsZDEwMhhmIAEoCRIQCghmaWVsZDEwMxhnIAEoCRIPCgdmaWVsZDI5", - "GB0gASgFEg8KB2ZpZWxkMzAYHiABKAgSDwoHZmllbGQ2MBg8IAEoBRIRCghm", - "aWVsZDI3MRiPAiABKAUSEQoIZmllbGQyNzIYkAIgASgFEhEKCGZpZWxkMTUw", - "GJYBIAEoBRIPCgdmaWVsZDIzGBcgASgFEg8KB2ZpZWxkMjQYGCABKAgSDwoH", - "ZmllbGQyNRgZIAEoBRI8CgdmaWVsZDE1GA8gASgLMisuYmVuY2htYXJrcy5w", - "cm90bzMuR29vZ2xlTWVzc2FnZTFTdWJNZXNzYWdlEg8KB2ZpZWxkNzgYTiAB", - "KAgSDwoHZmllbGQ2NxhDIAEoBRIPCgdmaWVsZDY4GEQgASgFEhEKCGZpZWxk", - "MTI4GIABIAEoBRIRCghmaWVsZDEyORiBASABKAkSEQoIZmllbGQxMzEYgwEg", - "ASgFIvcCChhHb29nbGVNZXNzYWdlMVN1Yk1lc3NhZ2USDgoGZmllbGQxGAEg", - "ASgFEg4KBmZpZWxkMhgCIAEoBRIOCgZmaWVsZDMYAyABKAUSDwoHZmllbGQx", - "NRgPIAEoCRIPCgdmaWVsZDEyGAwgASgIEg8KB2ZpZWxkMTMYDSABKAMSDwoH", - "ZmllbGQxNBgOIAEoAxIPCgdmaWVsZDE2GBAgASgFEg8KB2ZpZWxkMTkYEyAB", - "KAUSDwoHZmllbGQyMBgUIAEoCBIPCgdmaWVsZDI4GBwgASgIEg8KB2ZpZWxk", - "MjEYFSABKAYSDwoHZmllbGQyMhgWIAEoBRIPCgdmaWVsZDIzGBcgASgIEhEK", - "CGZpZWxkMjA2GM4BIAEoCBIRCghmaWVsZDIwMxjLASABKAcSEQoIZmllbGQy", - "MDQYzAEgASgFEhEKCGZpZWxkMjA1GM0BIAEoCRIRCghmaWVsZDIwNxjPASAB", - "KAQSEQoIZmllbGQzMDAYrAIgASgEQiUKHmNvbS5nb29nbGUucHJvdG9idWYu", - "YmVuY2htYXJrc0gB+AEBYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Benchmarks.Proto3.GoogleMessage1), global::Benchmarks.Proto3.GoogleMessage1.Parser, new[]{ "Field1", "Field9", "Field18", "Field80", "Field81", "Field2", "Field3", "Field280", "Field6", "Field22", "Field4", "Field5", "Field59", "Field7", "Field16", "Field130", "Field12", "Field17", "Field13", "Field14", "Field104", "Field100", "Field101", "Field102", "Field103", "Field29", "Field30", "Field60", "Field271", "Field272", "Field150", "Field23", "Field24", "Field25", "Field15", "Field78", "Field67", "Field68", "Field128", "Field129", "Field131" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Benchmarks.Proto3.GoogleMessage1SubMessage), global::Benchmarks.Proto3.GoogleMessage1SubMessage.Parser, new[]{ "Field1", "Field2", "Field3", "Field15", "Field12", "Field13", "Field14", "Field16", "Field19", "Field20", "Field28", "Field21", "Field22", "Field23", "Field206", "Field203", "Field204", "Field205", "Field207", "Field300" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - public sealed partial class GoogleMessage1 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GoogleMessage1()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Benchmarks.Proto3.BenchmarkMessage1Proto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1(GoogleMessage1 other) : this() { - field1_ = other.field1_; - field9_ = other.field9_; - field18_ = other.field18_; - field80_ = other.field80_; - field81_ = other.field81_; - field2_ = other.field2_; - field3_ = other.field3_; - field280_ = other.field280_; - field6_ = other.field6_; - field22_ = other.field22_; - field4_ = other.field4_; - field5_ = other.field5_.Clone(); - field59_ = other.field59_; - field7_ = other.field7_; - field16_ = other.field16_; - field130_ = other.field130_; - field12_ = other.field12_; - field17_ = other.field17_; - field13_ = other.field13_; - field14_ = other.field14_; - field104_ = other.field104_; - field100_ = other.field100_; - field101_ = other.field101_; - field102_ = other.field102_; - field103_ = other.field103_; - field29_ = other.field29_; - field30_ = other.field30_; - field60_ = other.field60_; - field271_ = other.field271_; - field272_ = other.field272_; - field150_ = other.field150_; - field23_ = other.field23_; - field24_ = other.field24_; - field25_ = other.field25_; - field15_ = other.field15_ != null ? other.field15_.Clone() : null; - field78_ = other.field78_; - field67_ = other.field67_; - field68_ = other.field68_; - field128_ = other.field128_; - field129_ = other.field129_; - field131_ = other.field131_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1 Clone() { - return new GoogleMessage1(this); - } - - /// Field number for the "field1" field. - public const int Field1FieldNumber = 1; - private string field1_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field1 { - get { return field1_; } - set { - field1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field9" field. - public const int Field9FieldNumber = 9; - private string field9_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field9 { - get { return field9_; } - set { - field9_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field18" field. - public const int Field18FieldNumber = 18; - private string field18_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field18 { - get { return field18_; } - set { - field18_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field80" field. - public const int Field80FieldNumber = 80; - private bool field80_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field80 { - get { return field80_; } - set { - field80_ = value; - } - } - - /// Field number for the "field81" field. - public const int Field81FieldNumber = 81; - private bool field81_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field81 { - get { return field81_; } - set { - field81_ = value; - } - } - - /// Field number for the "field2" field. - public const int Field2FieldNumber = 2; - private int field2_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field2 { - get { return field2_; } - set { - field2_ = value; - } - } - - /// Field number for the "field3" field. - public const int Field3FieldNumber = 3; - private int field3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field3 { - get { return field3_; } - set { - field3_ = value; - } - } - - /// Field number for the "field280" field. - public const int Field280FieldNumber = 280; - private int field280_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field280 { - get { return field280_; } - set { - field280_ = value; - } - } - - /// Field number for the "field6" field. - public const int Field6FieldNumber = 6; - private int field6_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field6 { - get { return field6_; } - set { - field6_ = value; - } - } - - /// Field number for the "field22" field. - public const int Field22FieldNumber = 22; - private long field22_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Field22 { - get { return field22_; } - set { - field22_ = value; - } - } - - /// Field number for the "field4" field. - public const int Field4FieldNumber = 4; - private string field4_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field4 { - get { return field4_; } - set { - field4_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field5" field. - public const int Field5FieldNumber = 5; - private static readonly pb::FieldCodec _repeated_field5_codec - = pb::FieldCodec.ForFixed64(42); - private readonly pbc::RepeatedField field5_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Field5 { - get { return field5_; } - } - - /// Field number for the "field59" field. - public const int Field59FieldNumber = 59; - private bool field59_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field59 { - get { return field59_; } - set { - field59_ = value; - } - } - - /// Field number for the "field7" field. - public const int Field7FieldNumber = 7; - private string field7_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field7 { - get { return field7_; } - set { - field7_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field16" field. - public const int Field16FieldNumber = 16; - private int field16_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field16 { - get { return field16_; } - set { - field16_ = value; - } - } - - /// Field number for the "field130" field. - public const int Field130FieldNumber = 130; - private int field130_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field130 { - get { return field130_; } - set { - field130_ = value; - } - } - - /// Field number for the "field12" field. - public const int Field12FieldNumber = 12; - private bool field12_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field12 { - get { return field12_; } - set { - field12_ = value; - } - } - - /// Field number for the "field17" field. - public const int Field17FieldNumber = 17; - private bool field17_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field17 { - get { return field17_; } - set { - field17_ = value; - } - } - - /// Field number for the "field13" field. - public const int Field13FieldNumber = 13; - private bool field13_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field13 { - get { return field13_; } - set { - field13_ = value; - } - } - - /// Field number for the "field14" field. - public const int Field14FieldNumber = 14; - private bool field14_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field14 { - get { return field14_; } - set { - field14_ = value; - } - } - - /// Field number for the "field104" field. - public const int Field104FieldNumber = 104; - private int field104_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field104 { - get { return field104_; } - set { - field104_ = value; - } - } - - /// Field number for the "field100" field. - public const int Field100FieldNumber = 100; - private int field100_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field100 { - get { return field100_; } - set { - field100_ = value; - } - } - - /// Field number for the "field101" field. - public const int Field101FieldNumber = 101; - private int field101_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field101 { - get { return field101_; } - set { - field101_ = value; - } - } - - /// Field number for the "field102" field. - public const int Field102FieldNumber = 102; - private string field102_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field102 { - get { return field102_; } - set { - field102_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field103" field. - public const int Field103FieldNumber = 103; - private string field103_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field103 { - get { return field103_; } - set { - field103_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field29" field. - public const int Field29FieldNumber = 29; - private int field29_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field29 { - get { return field29_; } - set { - field29_ = value; - } - } - - /// Field number for the "field30" field. - public const int Field30FieldNumber = 30; - private bool field30_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field30 { - get { return field30_; } - set { - field30_ = value; - } - } - - /// Field number for the "field60" field. - public const int Field60FieldNumber = 60; - private int field60_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field60 { - get { return field60_; } - set { - field60_ = value; - } - } - - /// Field number for the "field271" field. - public const int Field271FieldNumber = 271; - private int field271_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field271 { - get { return field271_; } - set { - field271_ = value; - } - } - - /// Field number for the "field272" field. - public const int Field272FieldNumber = 272; - private int field272_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field272 { - get { return field272_; } - set { - field272_ = value; - } - } - - /// Field number for the "field150" field. - public const int Field150FieldNumber = 150; - private int field150_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field150 { - get { return field150_; } - set { - field150_ = value; - } - } - - /// Field number for the "field23" field. - public const int Field23FieldNumber = 23; - private int field23_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field23 { - get { return field23_; } - set { - field23_ = value; - } - } - - /// Field number for the "field24" field. - public const int Field24FieldNumber = 24; - private bool field24_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field24 { - get { return field24_; } - set { - field24_ = value; - } - } - - /// Field number for the "field25" field. - public const int Field25FieldNumber = 25; - private int field25_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field25 { - get { return field25_; } - set { - field25_ = value; - } - } - - /// Field number for the "field15" field. - public const int Field15FieldNumber = 15; - private global::Benchmarks.Proto3.GoogleMessage1SubMessage field15_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Benchmarks.Proto3.GoogleMessage1SubMessage Field15 { - get { return field15_; } - set { - field15_ = value; - } - } - - /// Field number for the "field78" field. - public const int Field78FieldNumber = 78; - private bool field78_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field78 { - get { return field78_; } - set { - field78_ = value; - } - } - - /// Field number for the "field67" field. - public const int Field67FieldNumber = 67; - private int field67_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field67 { - get { return field67_; } - set { - field67_ = value; - } - } - - /// Field number for the "field68" field. - public const int Field68FieldNumber = 68; - private int field68_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field68 { - get { return field68_; } - set { - field68_ = value; - } - } - - /// Field number for the "field128" field. - public const int Field128FieldNumber = 128; - private int field128_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field128 { - get { return field128_; } - set { - field128_ = value; - } - } - - /// Field number for the "field129" field. - public const int Field129FieldNumber = 129; - private string field129_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field129 { - get { return field129_; } - set { - field129_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field131" field. - public const int Field131FieldNumber = 131; - private int field131_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field131 { - get { return field131_; } - set { - field131_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as GoogleMessage1); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(GoogleMessage1 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Field1 != other.Field1) return false; - if (Field9 != other.Field9) return false; - if (Field18 != other.Field18) return false; - if (Field80 != other.Field80) return false; - if (Field81 != other.Field81) return false; - if (Field2 != other.Field2) return false; - if (Field3 != other.Field3) return false; - if (Field280 != other.Field280) return false; - if (Field6 != other.Field6) return false; - if (Field22 != other.Field22) return false; - if (Field4 != other.Field4) return false; - if(!field5_.Equals(other.field5_)) return false; - if (Field59 != other.Field59) return false; - if (Field7 != other.Field7) return false; - if (Field16 != other.Field16) return false; - if (Field130 != other.Field130) return false; - if (Field12 != other.Field12) return false; - if (Field17 != other.Field17) return false; - if (Field13 != other.Field13) return false; - if (Field14 != other.Field14) return false; - if (Field104 != other.Field104) return false; - if (Field100 != other.Field100) return false; - if (Field101 != other.Field101) return false; - if (Field102 != other.Field102) return false; - if (Field103 != other.Field103) return false; - if (Field29 != other.Field29) return false; - if (Field30 != other.Field30) return false; - if (Field60 != other.Field60) return false; - if (Field271 != other.Field271) return false; - if (Field272 != other.Field272) return false; - if (Field150 != other.Field150) return false; - if (Field23 != other.Field23) return false; - if (Field24 != other.Field24) return false; - if (Field25 != other.Field25) return false; - if (!object.Equals(Field15, other.Field15)) return false; - if (Field78 != other.Field78) return false; - if (Field67 != other.Field67) return false; - if (Field68 != other.Field68) return false; - if (Field128 != other.Field128) return false; - if (Field129 != other.Field129) return false; - if (Field131 != other.Field131) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Field1.Length != 0) hash ^= Field1.GetHashCode(); - if (Field9.Length != 0) hash ^= Field9.GetHashCode(); - if (Field18.Length != 0) hash ^= Field18.GetHashCode(); - if (Field80 != false) hash ^= Field80.GetHashCode(); - if (Field81 != false) hash ^= Field81.GetHashCode(); - if (Field2 != 0) hash ^= Field2.GetHashCode(); - if (Field3 != 0) hash ^= Field3.GetHashCode(); - if (Field280 != 0) hash ^= Field280.GetHashCode(); - if (Field6 != 0) hash ^= Field6.GetHashCode(); - if (Field22 != 0L) hash ^= Field22.GetHashCode(); - if (Field4.Length != 0) hash ^= Field4.GetHashCode(); - hash ^= field5_.GetHashCode(); - if (Field59 != false) hash ^= Field59.GetHashCode(); - if (Field7.Length != 0) hash ^= Field7.GetHashCode(); - if (Field16 != 0) hash ^= Field16.GetHashCode(); - if (Field130 != 0) hash ^= Field130.GetHashCode(); - if (Field12 != false) hash ^= Field12.GetHashCode(); - if (Field17 != false) hash ^= Field17.GetHashCode(); - if (Field13 != false) hash ^= Field13.GetHashCode(); - if (Field14 != false) hash ^= Field14.GetHashCode(); - if (Field104 != 0) hash ^= Field104.GetHashCode(); - if (Field100 != 0) hash ^= Field100.GetHashCode(); - if (Field101 != 0) hash ^= Field101.GetHashCode(); - if (Field102.Length != 0) hash ^= Field102.GetHashCode(); - if (Field103.Length != 0) hash ^= Field103.GetHashCode(); - if (Field29 != 0) hash ^= Field29.GetHashCode(); - if (Field30 != false) hash ^= Field30.GetHashCode(); - if (Field60 != 0) hash ^= Field60.GetHashCode(); - if (Field271 != 0) hash ^= Field271.GetHashCode(); - if (Field272 != 0) hash ^= Field272.GetHashCode(); - if (Field150 != 0) hash ^= Field150.GetHashCode(); - if (Field23 != 0) hash ^= Field23.GetHashCode(); - if (Field24 != false) hash ^= Field24.GetHashCode(); - if (Field25 != 0) hash ^= Field25.GetHashCode(); - if (field15_ != null) hash ^= Field15.GetHashCode(); - if (Field78 != false) hash ^= Field78.GetHashCode(); - if (Field67 != 0) hash ^= Field67.GetHashCode(); - if (Field68 != 0) hash ^= Field68.GetHashCode(); - if (Field128 != 0) hash ^= Field128.GetHashCode(); - if (Field129.Length != 0) hash ^= Field129.GetHashCode(); - if (Field131 != 0) hash ^= Field131.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Field1.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Field1); - } - if (Field2 != 0) { - output.WriteRawTag(16); - output.WriteInt32(Field2); - } - if (Field3 != 0) { - output.WriteRawTag(24); - output.WriteInt32(Field3); - } - if (Field4.Length != 0) { - output.WriteRawTag(34); - output.WriteString(Field4); - } - field5_.WriteTo(output, _repeated_field5_codec); - if (Field6 != 0) { - output.WriteRawTag(48); - output.WriteInt32(Field6); - } - if (Field7.Length != 0) { - output.WriteRawTag(58); - output.WriteString(Field7); - } - if (Field9.Length != 0) { - output.WriteRawTag(74); - output.WriteString(Field9); - } - if (Field12 != false) { - output.WriteRawTag(96); - output.WriteBool(Field12); - } - if (Field13 != false) { - output.WriteRawTag(104); - output.WriteBool(Field13); - } - if (Field14 != false) { - output.WriteRawTag(112); - output.WriteBool(Field14); - } - if (field15_ != null) { - output.WriteRawTag(122); - output.WriteMessage(Field15); - } - if (Field16 != 0) { - output.WriteRawTag(128, 1); - output.WriteInt32(Field16); - } - if (Field17 != false) { - output.WriteRawTag(136, 1); - output.WriteBool(Field17); - } - if (Field18.Length != 0) { - output.WriteRawTag(146, 1); - output.WriteString(Field18); - } - if (Field22 != 0L) { - output.WriteRawTag(176, 1); - output.WriteInt64(Field22); - } - if (Field23 != 0) { - output.WriteRawTag(184, 1); - output.WriteInt32(Field23); - } - if (Field24 != false) { - output.WriteRawTag(192, 1); - output.WriteBool(Field24); - } - if (Field25 != 0) { - output.WriteRawTag(200, 1); - output.WriteInt32(Field25); - } - if (Field29 != 0) { - output.WriteRawTag(232, 1); - output.WriteInt32(Field29); - } - if (Field30 != false) { - output.WriteRawTag(240, 1); - output.WriteBool(Field30); - } - if (Field59 != false) { - output.WriteRawTag(216, 3); - output.WriteBool(Field59); - } - if (Field60 != 0) { - output.WriteRawTag(224, 3); - output.WriteInt32(Field60); - } - if (Field67 != 0) { - output.WriteRawTag(152, 4); - output.WriteInt32(Field67); - } - if (Field68 != 0) { - output.WriteRawTag(160, 4); - output.WriteInt32(Field68); - } - if (Field78 != false) { - output.WriteRawTag(240, 4); - output.WriteBool(Field78); - } - if (Field80 != false) { - output.WriteRawTag(128, 5); - output.WriteBool(Field80); - } - if (Field81 != false) { - output.WriteRawTag(136, 5); - output.WriteBool(Field81); - } - if (Field100 != 0) { - output.WriteRawTag(160, 6); - output.WriteInt32(Field100); - } - if (Field101 != 0) { - output.WriteRawTag(168, 6); - output.WriteInt32(Field101); - } - if (Field102.Length != 0) { - output.WriteRawTag(178, 6); - output.WriteString(Field102); - } - if (Field103.Length != 0) { - output.WriteRawTag(186, 6); - output.WriteString(Field103); - } - if (Field104 != 0) { - output.WriteRawTag(192, 6); - output.WriteInt32(Field104); - } - if (Field128 != 0) { - output.WriteRawTag(128, 8); - output.WriteInt32(Field128); - } - if (Field129.Length != 0) { - output.WriteRawTag(138, 8); - output.WriteString(Field129); - } - if (Field130 != 0) { - output.WriteRawTag(144, 8); - output.WriteInt32(Field130); - } - if (Field131 != 0) { - output.WriteRawTag(152, 8); - output.WriteInt32(Field131); - } - if (Field150 != 0) { - output.WriteRawTag(176, 9); - output.WriteInt32(Field150); - } - if (Field271 != 0) { - output.WriteRawTag(248, 16); - output.WriteInt32(Field271); - } - if (Field272 != 0) { - output.WriteRawTag(128, 17); - output.WriteInt32(Field272); - } - if (Field280 != 0) { - output.WriteRawTag(192, 17); - output.WriteInt32(Field280); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Field1.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field1); - } - if (Field9.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field9); - } - if (Field18.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(Field18); - } - if (Field80 != false) { - size += 2 + 1; - } - if (Field81 != false) { - size += 2 + 1; - } - if (Field2 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field2); - } - if (Field3 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field3); - } - if (Field280 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field280); - } - if (Field6 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field6); - } - if (Field22 != 0L) { - size += 2 + pb::CodedOutputStream.ComputeInt64Size(Field22); - } - if (Field4.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field4); - } - size += field5_.CalculateSize(_repeated_field5_codec); - if (Field59 != false) { - size += 2 + 1; - } - if (Field7.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field7); - } - if (Field16 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field16); - } - if (Field130 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field130); - } - if (Field12 != false) { - size += 1 + 1; - } - if (Field17 != false) { - size += 2 + 1; - } - if (Field13 != false) { - size += 1 + 1; - } - if (Field14 != false) { - size += 1 + 1; - } - if (Field104 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field104); - } - if (Field100 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field100); - } - if (Field101 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field101); - } - if (Field102.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(Field102); - } - if (Field103.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(Field103); - } - if (Field29 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field29); - } - if (Field30 != false) { - size += 2 + 1; - } - if (Field60 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field60); - } - if (Field271 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field271); - } - if (Field272 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field272); - } - if (Field150 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field150); - } - if (Field23 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field23); - } - if (Field24 != false) { - size += 2 + 1; - } - if (Field25 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field25); - } - if (field15_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Field15); - } - if (Field78 != false) { - size += 2 + 1; - } - if (Field67 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field67); - } - if (Field68 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field68); - } - if (Field128 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field128); - } - if (Field129.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(Field129); - } - if (Field131 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field131); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(GoogleMessage1 other) { - if (other == null) { - return; - } - if (other.Field1.Length != 0) { - Field1 = other.Field1; - } - if (other.Field9.Length != 0) { - Field9 = other.Field9; - } - if (other.Field18.Length != 0) { - Field18 = other.Field18; - } - if (other.Field80 != false) { - Field80 = other.Field80; - } - if (other.Field81 != false) { - Field81 = other.Field81; - } - if (other.Field2 != 0) { - Field2 = other.Field2; - } - if (other.Field3 != 0) { - Field3 = other.Field3; - } - if (other.Field280 != 0) { - Field280 = other.Field280; - } - if (other.Field6 != 0) { - Field6 = other.Field6; - } - if (other.Field22 != 0L) { - Field22 = other.Field22; - } - if (other.Field4.Length != 0) { - Field4 = other.Field4; - } - field5_.Add(other.field5_); - if (other.Field59 != false) { - Field59 = other.Field59; - } - if (other.Field7.Length != 0) { - Field7 = other.Field7; - } - if (other.Field16 != 0) { - Field16 = other.Field16; - } - if (other.Field130 != 0) { - Field130 = other.Field130; - } - if (other.Field12 != false) { - Field12 = other.Field12; - } - if (other.Field17 != false) { - Field17 = other.Field17; - } - if (other.Field13 != false) { - Field13 = other.Field13; - } - if (other.Field14 != false) { - Field14 = other.Field14; - } - if (other.Field104 != 0) { - Field104 = other.Field104; - } - if (other.Field100 != 0) { - Field100 = other.Field100; - } - if (other.Field101 != 0) { - Field101 = other.Field101; - } - if (other.Field102.Length != 0) { - Field102 = other.Field102; - } - if (other.Field103.Length != 0) { - Field103 = other.Field103; - } - if (other.Field29 != 0) { - Field29 = other.Field29; - } - if (other.Field30 != false) { - Field30 = other.Field30; - } - if (other.Field60 != 0) { - Field60 = other.Field60; - } - if (other.Field271 != 0) { - Field271 = other.Field271; - } - if (other.Field272 != 0) { - Field272 = other.Field272; - } - if (other.Field150 != 0) { - Field150 = other.Field150; - } - if (other.Field23 != 0) { - Field23 = other.Field23; - } - if (other.Field24 != false) { - Field24 = other.Field24; - } - if (other.Field25 != 0) { - Field25 = other.Field25; - } - if (other.field15_ != null) { - if (field15_ == null) { - Field15 = new global::Benchmarks.Proto3.GoogleMessage1SubMessage(); - } - Field15.MergeFrom(other.Field15); - } - if (other.Field78 != false) { - Field78 = other.Field78; - } - if (other.Field67 != 0) { - Field67 = other.Field67; - } - if (other.Field68 != 0) { - Field68 = other.Field68; - } - if (other.Field128 != 0) { - Field128 = other.Field128; - } - if (other.Field129.Length != 0) { - Field129 = other.Field129; - } - if (other.Field131 != 0) { - Field131 = other.Field131; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Field1 = input.ReadString(); - break; - } - case 16: { - Field2 = input.ReadInt32(); - break; - } - case 24: { - Field3 = input.ReadInt32(); - break; - } - case 34: { - Field4 = input.ReadString(); - break; - } - case 42: - case 41: { - field5_.AddEntriesFrom(input, _repeated_field5_codec); - break; - } - case 48: { - Field6 = input.ReadInt32(); - break; - } - case 58: { - Field7 = input.ReadString(); - break; - } - case 74: { - Field9 = input.ReadString(); - break; - } - case 96: { - Field12 = input.ReadBool(); - break; - } - case 104: { - Field13 = input.ReadBool(); - break; - } - case 112: { - Field14 = input.ReadBool(); - break; - } - case 122: { - if (field15_ == null) { - Field15 = new global::Benchmarks.Proto3.GoogleMessage1SubMessage(); - } - input.ReadMessage(Field15); - break; - } - case 128: { - Field16 = input.ReadInt32(); - break; - } - case 136: { - Field17 = input.ReadBool(); - break; - } - case 146: { - Field18 = input.ReadString(); - break; - } - case 176: { - Field22 = input.ReadInt64(); - break; - } - case 184: { - Field23 = input.ReadInt32(); - break; - } - case 192: { - Field24 = input.ReadBool(); - break; - } - case 200: { - Field25 = input.ReadInt32(); - break; - } - case 232: { - Field29 = input.ReadInt32(); - break; - } - case 240: { - Field30 = input.ReadBool(); - break; - } - case 472: { - Field59 = input.ReadBool(); - break; - } - case 480: { - Field60 = input.ReadInt32(); - break; - } - case 536: { - Field67 = input.ReadInt32(); - break; - } - case 544: { - Field68 = input.ReadInt32(); - break; - } - case 624: { - Field78 = input.ReadBool(); - break; - } - case 640: { - Field80 = input.ReadBool(); - break; - } - case 648: { - Field81 = input.ReadBool(); - break; - } - case 800: { - Field100 = input.ReadInt32(); - break; - } - case 808: { - Field101 = input.ReadInt32(); - break; - } - case 818: { - Field102 = input.ReadString(); - break; - } - case 826: { - Field103 = input.ReadString(); - break; - } - case 832: { - Field104 = input.ReadInt32(); - break; - } - case 1024: { - Field128 = input.ReadInt32(); - break; - } - case 1034: { - Field129 = input.ReadString(); - break; - } - case 1040: { - Field130 = input.ReadInt32(); - break; - } - case 1048: { - Field131 = input.ReadInt32(); - break; - } - case 1200: { - Field150 = input.ReadInt32(); - break; - } - case 2168: { - Field271 = input.ReadInt32(); - break; - } - case 2176: { - Field272 = input.ReadInt32(); - break; - } - case 2240: { - Field280 = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class GoogleMessage1SubMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GoogleMessage1SubMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Benchmarks.Proto3.BenchmarkMessage1Proto3Reflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1SubMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1SubMessage(GoogleMessage1SubMessage other) : this() { - field1_ = other.field1_; - field2_ = other.field2_; - field3_ = other.field3_; - field15_ = other.field15_; - field12_ = other.field12_; - field13_ = other.field13_; - field14_ = other.field14_; - field16_ = other.field16_; - field19_ = other.field19_; - field20_ = other.field20_; - field28_ = other.field28_; - field21_ = other.field21_; - field22_ = other.field22_; - field23_ = other.field23_; - field206_ = other.field206_; - field203_ = other.field203_; - field204_ = other.field204_; - field205_ = other.field205_; - field207_ = other.field207_; - field300_ = other.field300_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GoogleMessage1SubMessage Clone() { - return new GoogleMessage1SubMessage(this); - } - - /// Field number for the "field1" field. - public const int Field1FieldNumber = 1; - private int field1_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field1 { - get { return field1_; } - set { - field1_ = value; - } - } - - /// Field number for the "field2" field. - public const int Field2FieldNumber = 2; - private int field2_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field2 { - get { return field2_; } - set { - field2_ = value; - } - } - - /// Field number for the "field3" field. - public const int Field3FieldNumber = 3; - private int field3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field3 { - get { return field3_; } - set { - field3_ = value; - } - } - - /// Field number for the "field15" field. - public const int Field15FieldNumber = 15; - private string field15_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field15 { - get { return field15_; } - set { - field15_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field12" field. - public const int Field12FieldNumber = 12; - private bool field12_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field12 { - get { return field12_; } - set { - field12_ = value; - } - } - - /// Field number for the "field13" field. - public const int Field13FieldNumber = 13; - private long field13_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Field13 { - get { return field13_; } - set { - field13_ = value; - } - } - - /// Field number for the "field14" field. - public const int Field14FieldNumber = 14; - private long field14_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Field14 { - get { return field14_; } - set { - field14_ = value; - } - } - - /// Field number for the "field16" field. - public const int Field16FieldNumber = 16; - private int field16_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field16 { - get { return field16_; } - set { - field16_ = value; - } - } - - /// Field number for the "field19" field. - public const int Field19FieldNumber = 19; - private int field19_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field19 { - get { return field19_; } - set { - field19_ = value; - } - } - - /// Field number for the "field20" field. - public const int Field20FieldNumber = 20; - private bool field20_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field20 { - get { return field20_; } - set { - field20_ = value; - } - } - - /// Field number for the "field28" field. - public const int Field28FieldNumber = 28; - private bool field28_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field28 { - get { return field28_; } - set { - field28_ = value; - } - } - - /// Field number for the "field21" field. - public const int Field21FieldNumber = 21; - private ulong field21_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong Field21 { - get { return field21_; } - set { - field21_ = value; - } - } - - /// Field number for the "field22" field. - public const int Field22FieldNumber = 22; - private int field22_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field22 { - get { return field22_; } - set { - field22_ = value; - } - } - - /// Field number for the "field23" field. - public const int Field23FieldNumber = 23; - private bool field23_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field23 { - get { return field23_; } - set { - field23_ = value; - } - } - - /// Field number for the "field206" field. - public const int Field206FieldNumber = 206; - private bool field206_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Field206 { - get { return field206_; } - set { - field206_ = value; - } - } - - /// Field number for the "field203" field. - public const int Field203FieldNumber = 203; - private uint field203_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint Field203 { - get { return field203_; } - set { - field203_ = value; - } - } - - /// Field number for the "field204" field. - public const int Field204FieldNumber = 204; - private int field204_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field204 { - get { return field204_; } - set { - field204_ = value; - } - } - - /// Field number for the "field205" field. - public const int Field205FieldNumber = 205; - private string field205_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field205 { - get { return field205_; } - set { - field205_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "field207" field. - public const int Field207FieldNumber = 207; - private ulong field207_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong Field207 { - get { return field207_; } - set { - field207_ = value; - } - } - - /// Field number for the "field300" field. - public const int Field300FieldNumber = 300; - private ulong field300_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong Field300 { - get { return field300_; } - set { - field300_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as GoogleMessage1SubMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(GoogleMessage1SubMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Field1 != other.Field1) return false; - if (Field2 != other.Field2) return false; - if (Field3 != other.Field3) return false; - if (Field15 != other.Field15) return false; - if (Field12 != other.Field12) return false; - if (Field13 != other.Field13) return false; - if (Field14 != other.Field14) return false; - if (Field16 != other.Field16) return false; - if (Field19 != other.Field19) return false; - if (Field20 != other.Field20) return false; - if (Field28 != other.Field28) return false; - if (Field21 != other.Field21) return false; - if (Field22 != other.Field22) return false; - if (Field23 != other.Field23) return false; - if (Field206 != other.Field206) return false; - if (Field203 != other.Field203) return false; - if (Field204 != other.Field204) return false; - if (Field205 != other.Field205) return false; - if (Field207 != other.Field207) return false; - if (Field300 != other.Field300) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Field1 != 0) hash ^= Field1.GetHashCode(); - if (Field2 != 0) hash ^= Field2.GetHashCode(); - if (Field3 != 0) hash ^= Field3.GetHashCode(); - if (Field15.Length != 0) hash ^= Field15.GetHashCode(); - if (Field12 != false) hash ^= Field12.GetHashCode(); - if (Field13 != 0L) hash ^= Field13.GetHashCode(); - if (Field14 != 0L) hash ^= Field14.GetHashCode(); - if (Field16 != 0) hash ^= Field16.GetHashCode(); - if (Field19 != 0) hash ^= Field19.GetHashCode(); - if (Field20 != false) hash ^= Field20.GetHashCode(); - if (Field28 != false) hash ^= Field28.GetHashCode(); - if (Field21 != 0UL) hash ^= Field21.GetHashCode(); - if (Field22 != 0) hash ^= Field22.GetHashCode(); - if (Field23 != false) hash ^= Field23.GetHashCode(); - if (Field206 != false) hash ^= Field206.GetHashCode(); - if (Field203 != 0) hash ^= Field203.GetHashCode(); - if (Field204 != 0) hash ^= Field204.GetHashCode(); - if (Field205.Length != 0) hash ^= Field205.GetHashCode(); - if (Field207 != 0UL) hash ^= Field207.GetHashCode(); - if (Field300 != 0UL) hash ^= Field300.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Field1 != 0) { - output.WriteRawTag(8); - output.WriteInt32(Field1); - } - if (Field2 != 0) { - output.WriteRawTag(16); - output.WriteInt32(Field2); - } - if (Field3 != 0) { - output.WriteRawTag(24); - output.WriteInt32(Field3); - } - if (Field12 != false) { - output.WriteRawTag(96); - output.WriteBool(Field12); - } - if (Field13 != 0L) { - output.WriteRawTag(104); - output.WriteInt64(Field13); - } - if (Field14 != 0L) { - output.WriteRawTag(112); - output.WriteInt64(Field14); - } - if (Field15.Length != 0) { - output.WriteRawTag(122); - output.WriteString(Field15); - } - if (Field16 != 0) { - output.WriteRawTag(128, 1); - output.WriteInt32(Field16); - } - if (Field19 != 0) { - output.WriteRawTag(152, 1); - output.WriteInt32(Field19); - } - if (Field20 != false) { - output.WriteRawTag(160, 1); - output.WriteBool(Field20); - } - if (Field21 != 0UL) { - output.WriteRawTag(169, 1); - output.WriteFixed64(Field21); - } - if (Field22 != 0) { - output.WriteRawTag(176, 1); - output.WriteInt32(Field22); - } - if (Field23 != false) { - output.WriteRawTag(184, 1); - output.WriteBool(Field23); - } - if (Field28 != false) { - output.WriteRawTag(224, 1); - output.WriteBool(Field28); - } - if (Field203 != 0) { - output.WriteRawTag(221, 12); - output.WriteFixed32(Field203); - } - if (Field204 != 0) { - output.WriteRawTag(224, 12); - output.WriteInt32(Field204); - } - if (Field205.Length != 0) { - output.WriteRawTag(234, 12); - output.WriteString(Field205); - } - if (Field206 != false) { - output.WriteRawTag(240, 12); - output.WriteBool(Field206); - } - if (Field207 != 0UL) { - output.WriteRawTag(248, 12); - output.WriteUInt64(Field207); - } - if (Field300 != 0UL) { - output.WriteRawTag(224, 18); - output.WriteUInt64(Field300); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Field1 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field1); - } - if (Field2 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field2); - } - if (Field3 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Field3); - } - if (Field15.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field15); - } - if (Field12 != false) { - size += 1 + 1; - } - if (Field13 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Field13); - } - if (Field14 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Field14); - } - if (Field16 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field16); - } - if (Field19 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field19); - } - if (Field20 != false) { - size += 2 + 1; - } - if (Field28 != false) { - size += 2 + 1; - } - if (Field21 != 0UL) { - size += 2 + 8; - } - if (Field22 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field22); - } - if (Field23 != false) { - size += 2 + 1; - } - if (Field206 != false) { - size += 2 + 1; - } - if (Field203 != 0) { - size += 2 + 4; - } - if (Field204 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field204); - } - if (Field205.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(Field205); - } - if (Field207 != 0UL) { - size += 2 + pb::CodedOutputStream.ComputeUInt64Size(Field207); - } - if (Field300 != 0UL) { - size += 2 + pb::CodedOutputStream.ComputeUInt64Size(Field300); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(GoogleMessage1SubMessage other) { - if (other == null) { - return; - } - if (other.Field1 != 0) { - Field1 = other.Field1; - } - if (other.Field2 != 0) { - Field2 = other.Field2; - } - if (other.Field3 != 0) { - Field3 = other.Field3; - } - if (other.Field15.Length != 0) { - Field15 = other.Field15; - } - if (other.Field12 != false) { - Field12 = other.Field12; - } - if (other.Field13 != 0L) { - Field13 = other.Field13; - } - if (other.Field14 != 0L) { - Field14 = other.Field14; - } - if (other.Field16 != 0) { - Field16 = other.Field16; - } - if (other.Field19 != 0) { - Field19 = other.Field19; - } - if (other.Field20 != false) { - Field20 = other.Field20; - } - if (other.Field28 != false) { - Field28 = other.Field28; - } - if (other.Field21 != 0UL) { - Field21 = other.Field21; - } - if (other.Field22 != 0) { - Field22 = other.Field22; - } - if (other.Field23 != false) { - Field23 = other.Field23; - } - if (other.Field206 != false) { - Field206 = other.Field206; - } - if (other.Field203 != 0) { - Field203 = other.Field203; - } - if (other.Field204 != 0) { - Field204 = other.Field204; - } - if (other.Field205.Length != 0) { - Field205 = other.Field205; - } - if (other.Field207 != 0UL) { - Field207 = other.Field207; - } - if (other.Field300 != 0UL) { - Field300 = other.Field300; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Field1 = input.ReadInt32(); - break; - } - case 16: { - Field2 = input.ReadInt32(); - break; - } - case 24: { - Field3 = input.ReadInt32(); - break; - } - case 96: { - Field12 = input.ReadBool(); - break; - } - case 104: { - Field13 = input.ReadInt64(); - break; - } - case 112: { - Field14 = input.ReadInt64(); - break; - } - case 122: { - Field15 = input.ReadString(); - break; - } - case 128: { - Field16 = input.ReadInt32(); - break; - } - case 152: { - Field19 = input.ReadInt32(); - break; - } - case 160: { - Field20 = input.ReadBool(); - break; - } - case 169: { - Field21 = input.ReadFixed64(); - break; - } - case 176: { - Field22 = input.ReadInt32(); - break; - } - case 184: { - Field23 = input.ReadBool(); - break; - } - case 224: { - Field28 = input.ReadBool(); - break; - } - case 1629: { - Field203 = input.ReadFixed32(); - break; - } - case 1632: { - Field204 = input.ReadInt32(); - break; - } - case 1642: { - Field205 = input.ReadString(); - break; - } - case 1648: { - Field206 = input.ReadBool(); - break; - } - case 1656: { - Field207 = input.ReadUInt64(); - break; - } - case 2400: { - Field300 = input.ReadUInt64(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Benchmarks.cs b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Benchmarks.cs deleted file mode 100644 index 01dfcd7..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Benchmarks.cs +++ /dev/null @@ -1,250 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: benchmarks.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 Benchmarks { - - /// Holder for reflection information generated from benchmarks.proto - public static partial class BenchmarksReflection { - - #region Descriptor - /// File descriptor for benchmarks.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static BenchmarksReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChBiZW5jaG1hcmtzLnByb3RvEgpiZW5jaG1hcmtzIkcKEEJlbmNobWFya0Rh", - "dGFzZXQSDAoEbmFtZRgBIAEoCRIUCgxtZXNzYWdlX25hbWUYAiABKAkSDwoH", - "cGF5bG9hZBgDIAMoDEIgCh5jb20uZ29vZ2xlLnByb3RvYnVmLmJlbmNobWFy", - "a3NiBnByb3RvMw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Benchmarks.BenchmarkDataset), global::Benchmarks.BenchmarkDataset.Parser, new[]{ "Name", "MessageName", "Payload" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - public sealed partial class BenchmarkDataset : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BenchmarkDataset()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Benchmarks.BenchmarksReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BenchmarkDataset() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BenchmarkDataset(BenchmarkDataset other) : this() { - name_ = other.name_; - messageName_ = other.messageName_; - payload_ = other.payload_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BenchmarkDataset Clone() { - return new BenchmarkDataset(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// Name of the benchmark dataset. This should be unique across all datasets. - /// Should only contain word characters: [a-zA-Z0-9_] - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "message_name" field. - public const int MessageNameFieldNumber = 2; - private string messageName_ = ""; - /// - /// Fully-qualified name of the protobuf message for this dataset. - /// It will be one of the messages defined benchmark_messages_proto2.proto - /// or benchmark_messages_proto3.proto. - /// - /// Implementations that do not support reflection can implement this with - /// an explicit "if/else" chain that lists every known message defined - /// in those files. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string MessageName { - get { return messageName_; } - set { - messageName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "payload" field. - public const int PayloadFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_payload_codec - = pb::FieldCodec.ForBytes(26); - private readonly pbc::RepeatedField payload_ = new pbc::RepeatedField(); - /// - /// The payload(s) for this dataset. They should be parsed or serialized - /// in sequence, in a loop, ie. - /// - /// while (!benchmarkDone) { // Benchmark runner decides when to exit. - /// for (i = 0; i < benchmark.payload.length; i++) { - /// parse(benchmark.payload[i]) - /// } - /// } - /// - /// This is intended to let datasets include a variety of data to provide - /// potentially more realistic results than just parsing the same message - /// over and over. A single message parsed repeatedly could yield unusually - /// good branch prediction performance. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Payload { - get { return payload_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as BenchmarkDataset); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(BenchmarkDataset other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (MessageName != other.MessageName) return false; - if(!payload_.Equals(other.payload_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (MessageName.Length != 0) hash ^= MessageName.GetHashCode(); - hash ^= payload_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (MessageName.Length != 0) { - output.WriteRawTag(18); - output.WriteString(MessageName); - } - payload_.WriteTo(output, _repeated_payload_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (MessageName.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(MessageName); - } - size += payload_.CalculateSize(_repeated_payload_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(BenchmarkDataset other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.MessageName.Length != 0) { - MessageName = other.MessageName; - } - payload_.Add(other.payload_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - MessageName = input.ReadString(); - break; - } - case 26: { - payload_.AddEntriesFrom(input, _repeated_payload_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Google.Protobuf.Benchmarks.csproj b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Google.Protobuf.Benchmarks.csproj deleted file mode 100644 index ecc064e..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Google.Protobuf.Benchmarks.csproj +++ /dev/null @@ -1,18 +0,0 @@ - - - - Exe - netcoreapp2.1 - False - - - - - - - - - - - - diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Program.cs b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Program.cs deleted file mode 100644 index 66f71d1..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/Program.cs +++ /dev/null @@ -1,46 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2019 Google Inc. All rights reserved. -// https://github.com/protocolbuffers/protobuf -// -// 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 BenchmarkDotNet.Running; - -namespace Google.Protobuf.Benchmarks -{ - /// - /// Entry point, that currently runs the sole benchmark we have. - /// Eventually we might want to be able to specify a particular dataset - /// from the command line. - /// - class Program - { - static void Main() => BenchmarkRunner.Run(); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationBenchmark.cs b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationBenchmark.cs deleted file mode 100644 index d8c2ec1..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationBenchmark.cs +++ /dev/null @@ -1,120 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2019 Google Inc. All rights reserved. -// https://github.com/protocolbuffers/protobuf -// -// 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 BenchmarkDotNet.Attributes; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Google.Protobuf.Benchmarks -{ - /// - /// Benchmark for serializing (to a MemoryStream) and deserializing (from a ByteString). - /// Over time we may wish to test the various different approaches to serialization and deserialization separately. - /// - [MemoryDiagnoser] - public class SerializationBenchmark - { - /// - /// All the configurations to be tested. Add more datasets to the array as they're available. - /// (When C# supports proto2, this will increase significantly.) - /// - public static SerializationConfig[] Configurations => new[] - { - new SerializationConfig("dataset.google_message1_proto3.pb") - }; - - [ParamsSource(nameof(Configurations))] - public SerializationConfig Configuration { get; set; } - - private MessageParser parser; - /// - /// Each data set can contain multiple messages in a single file. - /// Each "write" operation should write each message in turn, and each "parse" - /// operation should parse each message in turn. - /// - private List subTests; - - [GlobalSetup] - public void GlobalSetup() - { - parser = Configuration.Parser; - subTests = Configuration.Payloads.Select(p => new SubTest(p, parser.ParseFrom(p))).ToList(); - } - - [Benchmark] - public void WriteToStream() => subTests.ForEach(item => item.WriteToStream()); - - [Benchmark] - public void ToByteArray() => subTests.ForEach(item => item.ToByteArray()); - - [Benchmark] - public void ParseFromByteString() => subTests.ForEach(item => item.ParseFromByteString(parser)); - - [Benchmark] - public void ParseFromStream() => subTests.ForEach(item => item.ParseFromStream(parser)); - - private class SubTest - { - private readonly Stream destinationStream; - private readonly Stream sourceStream; - private readonly ByteString data; - private readonly IMessage message; - - public SubTest(ByteString data, IMessage message) - { - destinationStream = new MemoryStream(data.Length); - sourceStream = new MemoryStream(data.ToByteArray()); - this.data = data; - this.message = message; - } - - public void Reset() => destinationStream.Position = 0; - - public void WriteToStream() - { - destinationStream.Position = 0; - message.WriteTo(destinationStream); - } - - public void ToByteArray() => message.ToByteArray(); - - public void ParseFromByteString(MessageParser parser) => parser.ParseFrom(data); - - public void ParseFromStream(MessageParser parser) - { - sourceStream.Position = 0; - parser.ParseFrom(sourceStream); - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationConfig.cs b/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationConfig.cs deleted file mode 100644 index 679f16c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Benchmarks/SerializationConfig.cs +++ /dev/null @@ -1,89 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2019 Google Inc. All rights reserved. -// https://github.com/protocolbuffers/protobuf -// -// 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 Benchmarks; -using Google.Protobuf.Reflection; -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; - -namespace Google.Protobuf.Benchmarks -{ - /// - /// The configuration for a single serialization test, loaded from a dataset. - /// - public class SerializationConfig - { - private static readonly Dictionary parsersByMessageName = - typeof(SerializationBenchmark).Assembly.GetTypes() - .Where(t => typeof(IMessage).IsAssignableFrom(t)) - .ToDictionary( - t => ((MessageDescriptor) t.GetProperty("Descriptor", BindingFlags.Static | BindingFlags.Public).GetValue(null)).FullName, - t => ((MessageParser) t.GetProperty("Parser", BindingFlags.Static | BindingFlags.Public).GetValue(null))); - - public MessageParser Parser { get; } - public IEnumerable Payloads { get; } - public string Name { get; } - - public SerializationConfig(string resource) - { - var data = LoadData(resource); - var dataset = BenchmarkDataset.Parser.ParseFrom(data); - - if (!parsersByMessageName.TryGetValue(dataset.MessageName, out var parser)) - { - throw new ArgumentException($"No parser for message {dataset.MessageName} in this assembly"); - } - Parser = parser; - Payloads = dataset.Payload; - Name = dataset.Name; - } - - private static byte[] LoadData(string resource) - { - using (var stream = typeof(SerializationBenchmark).Assembly.GetManifestResourceStream($"Google.Protobuf.Benchmarks.{resource}")) - { - if (stream == null) - { - throw new ArgumentException($"Unable to load embedded resource {resource}"); - } - var copy = new MemoryStream(); - stream.CopyTo(copy); - return copy.ToArray(); - } - } - - public override string ToString() => Name; - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Conformance.cs b/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Conformance.cs deleted file mode 100644 index 65ba9b1..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Conformance.cs +++ /dev/null @@ -1,1211 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: conformance.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 Conformance { - - /// Holder for reflection information generated from conformance.proto - public static partial class ConformanceReflection { - - #region Descriptor - /// File descriptor for conformance.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static ConformanceReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChFjb25mb3JtYW5jZS5wcm90bxILY29uZm9ybWFuY2UiHQoKRmFpbHVyZVNl", - "dBIPCgdmYWlsdXJlGAEgAygJIuMCChJDb25mb3JtYW5jZVJlcXVlc3QSGgoQ", - "cHJvdG9idWZfcGF5bG9hZBgBIAEoDEgAEhYKDGpzb25fcGF5bG9hZBgCIAEo", - "CUgAEhYKDGpzcGJfcGF5bG9hZBgHIAEoCUgAEhYKDHRleHRfcGF5bG9hZBgI", - "IAEoCUgAEjgKF3JlcXVlc3RlZF9vdXRwdXRfZm9ybWF0GAMgASgOMhcuY29u", - "Zm9ybWFuY2UuV2lyZUZvcm1hdBIUCgxtZXNzYWdlX3R5cGUYBCABKAkSMAoN", - "dGVzdF9jYXRlZ29yeRgFIAEoDjIZLmNvbmZvcm1hbmNlLlRlc3RDYXRlZ29y", - "eRI+ChVqc3BiX2VuY29kaW5nX29wdGlvbnMYBiABKAsyHy5jb25mb3JtYW5j", - "ZS5Kc3BiRW5jb2RpbmdDb25maWcSHAoUcHJpbnRfdW5rbm93bl9maWVsZHMY", - "CSABKAhCCQoHcGF5bG9hZCLhAQoTQ29uZm9ybWFuY2VSZXNwb25zZRIVCgtw", - "YXJzZV9lcnJvchgBIAEoCUgAEhkKD3NlcmlhbGl6ZV9lcnJvchgGIAEoCUgA", - "EhcKDXJ1bnRpbWVfZXJyb3IYAiABKAlIABIaChBwcm90b2J1Zl9wYXlsb2Fk", - "GAMgASgMSAASFgoManNvbl9wYXlsb2FkGAQgASgJSAASEQoHc2tpcHBlZBgF", - "IAEoCUgAEhYKDGpzcGJfcGF5bG9hZBgHIAEoCUgAEhYKDHRleHRfcGF5bG9h", - "ZBgIIAEoCUgAQggKBnJlc3VsdCI3ChJKc3BiRW5jb2RpbmdDb25maWcSIQoZ", - "dXNlX2pzcGJfYXJyYXlfYW55X2Zvcm1hdBgBIAEoCCpQCgpXaXJlRm9ybWF0", - "Eg8KC1VOU1BFQ0lGSUVEEAASDAoIUFJPVE9CVUYQARIICgRKU09OEAISCAoE", - "SlNQQhADEg8KC1RFWFRfRk9STUFUEAQqjwEKDFRlc3RDYXRlZ29yeRIUChBV", - "TlNQRUNJRklFRF9URVNUEAASDwoLQklOQVJZX1RFU1QQARINCglKU09OX1RF", - "U1QQAhIkCiBKU09OX0lHTk9SRV9VTktOT1dOX1BBUlNJTkdfVEVTVBADEg0K", - "CUpTUEJfVEVTVBAEEhQKEFRFWFRfRk9STUFUX1RFU1QQBUIhCh9jb20uZ29v", - "Z2xlLnByb3RvYnVmLmNvbmZvcm1hbmNlYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Conformance.WireFormat), typeof(global::Conformance.TestCategory), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.FailureSet), global::Conformance.FailureSet.Parser, new[]{ "Failure" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.ConformanceRequest), global::Conformance.ConformanceRequest.Parser, new[]{ "ProtobufPayload", "JsonPayload", "JspbPayload", "TextPayload", "RequestedOutputFormat", "MessageType", "TestCategory", "JspbEncodingOptions", "PrintUnknownFields" }, new[]{ "Payload" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.ConformanceResponse), global::Conformance.ConformanceResponse.Parser, new[]{ "ParseError", "SerializeError", "RuntimeError", "ProtobufPayload", "JsonPayload", "Skipped", "JspbPayload", "TextPayload" }, new[]{ "Result" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Conformance.JspbEncodingConfig), global::Conformance.JspbEncodingConfig.Parser, new[]{ "UseJspbArrayAnyFormat" }, null, null, null, null) - })); - } - #endregion - - } - #region Enums - public enum WireFormat { - [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("PROTOBUF")] Protobuf = 1, - [pbr::OriginalName("JSON")] Json = 2, - /// - /// Google internal only. Opensource testees just skip it. - /// - [pbr::OriginalName("JSPB")] Jspb = 3, - [pbr::OriginalName("TEXT_FORMAT")] TextFormat = 4, - } - - public enum TestCategory { - [pbr::OriginalName("UNSPECIFIED_TEST")] UnspecifiedTest = 0, - /// - /// Test binary wire format. - /// - [pbr::OriginalName("BINARY_TEST")] BinaryTest = 1, - /// - /// Test json wire format. - /// - [pbr::OriginalName("JSON_TEST")] JsonTest = 2, - /// - /// Similar to JSON_TEST. However, during parsing json, testee should ignore - /// unknown fields. This feature is optional. Each implementation can descide - /// whether to support it. See - /// https://developers.google.com/protocol-buffers/docs/proto3#json_options - /// for more detail. - /// - [pbr::OriginalName("JSON_IGNORE_UNKNOWN_PARSING_TEST")] JsonIgnoreUnknownParsingTest = 3, - /// - /// Test jspb wire format. Google internal only. Opensource testees just skip it. - /// - [pbr::OriginalName("JSPB_TEST")] JspbTest = 4, - /// - /// Test text format. For cpp, java and python, testees can already deal with - /// this type. Testees of other languages can simply skip it. - /// - [pbr::OriginalName("TEXT_FORMAT_TEST")] TextFormatTest = 5, - } - - #endregion - - #region Messages - /// - /// The conformance runner will request a list of failures as the first request. - /// This will be known by message_type == "conformance.FailureSet", a conformance - /// test should return a serialized FailureSet in protobuf_payload. - /// - public sealed partial class FailureSet : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FailureSet()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Conformance.ConformanceReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FailureSet() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FailureSet(FailureSet other) : this() { - failure_ = other.failure_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FailureSet Clone() { - return new FailureSet(this); - } - - /// Field number for the "failure" field. - public const int FailureFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_failure_codec - = pb::FieldCodec.ForString(10); - private readonly pbc::RepeatedField failure_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Failure { - get { return failure_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FailureSet); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FailureSet other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!failure_.Equals(other.failure_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= failure_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - failure_.WriteTo(output, _repeated_failure_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += failure_.CalculateSize(_repeated_failure_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FailureSet other) { - if (other == null) { - return; - } - failure_.Add(other.failure_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - failure_.AddEntriesFrom(input, _repeated_failure_codec); - break; - } - } - } - } - - } - - /// - /// Represents a single test case's input. The testee should: - /// - /// 1. parse this proto (which should always succeed) - /// 2. parse the protobuf or JSON payload in "payload" (which may fail) - /// 3. if the parse succeeded, serialize the message in the requested format. - /// - public sealed partial class ConformanceRequest : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ConformanceRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Conformance.ConformanceReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceRequest(ConformanceRequest other) : this() { - requestedOutputFormat_ = other.requestedOutputFormat_; - messageType_ = other.messageType_; - testCategory_ = other.testCategory_; - jspbEncodingOptions_ = other.jspbEncodingOptions_ != null ? other.jspbEncodingOptions_.Clone() : null; - printUnknownFields_ = other.printUnknownFields_; - switch (other.PayloadCase) { - case PayloadOneofCase.ProtobufPayload: - ProtobufPayload = other.ProtobufPayload; - break; - case PayloadOneofCase.JsonPayload: - JsonPayload = other.JsonPayload; - break; - case PayloadOneofCase.JspbPayload: - JspbPayload = other.JspbPayload; - break; - case PayloadOneofCase.TextPayload: - TextPayload = other.TextPayload; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceRequest Clone() { - return new ConformanceRequest(this); - } - - /// Field number for the "protobuf_payload" field. - public const int ProtobufPayloadFieldNumber = 1; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString ProtobufPayload { - get { return payloadCase_ == PayloadOneofCase.ProtobufPayload ? (pb::ByteString) payload_ : pb::ByteString.Empty; } - set { - payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - payloadCase_ = PayloadOneofCase.ProtobufPayload; - } - } - - /// Field number for the "json_payload" field. - public const int JsonPayloadFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JsonPayload { - get { return payloadCase_ == PayloadOneofCase.JsonPayload ? (string) payload_ : ""; } - set { - payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - payloadCase_ = PayloadOneofCase.JsonPayload; - } - } - - /// Field number for the "jspb_payload" field. - public const int JspbPayloadFieldNumber = 7; - /// - /// Google internal only. Opensource testees just skip it. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JspbPayload { - get { return payloadCase_ == PayloadOneofCase.JspbPayload ? (string) payload_ : ""; } - set { - payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - payloadCase_ = PayloadOneofCase.JspbPayload; - } - } - - /// Field number for the "text_payload" field. - public const int TextPayloadFieldNumber = 8; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TextPayload { - get { return payloadCase_ == PayloadOneofCase.TextPayload ? (string) payload_ : ""; } - set { - payload_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - payloadCase_ = PayloadOneofCase.TextPayload; - } - } - - /// Field number for the "requested_output_format" field. - public const int RequestedOutputFormatFieldNumber = 3; - private global::Conformance.WireFormat requestedOutputFormat_ = global::Conformance.WireFormat.Unspecified; - /// - /// Which format should the testee serialize its message to? - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Conformance.WireFormat RequestedOutputFormat { - get { return requestedOutputFormat_; } - set { - requestedOutputFormat_ = value; - } - } - - /// Field number for the "message_type" field. - public const int MessageTypeFieldNumber = 4; - private string messageType_ = ""; - /// - /// The full name for the test message to use; for the moment, either: - /// protobuf_test_messages.proto3.TestAllTypesProto3 or - /// protobuf_test_messages.proto2.TestAllTypesProto2. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string MessageType { - get { return messageType_; } - set { - messageType_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "test_category" field. - public const int TestCategoryFieldNumber = 5; - private global::Conformance.TestCategory testCategory_ = global::Conformance.TestCategory.UnspecifiedTest; - /// - /// Each test is given a specific test category. Some category may need - /// spedific support in testee programs. Refer to the defintion of TestCategory - /// for more information. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Conformance.TestCategory TestCategory { - get { return testCategory_; } - set { - testCategory_ = value; - } - } - - /// Field number for the "jspb_encoding_options" field. - public const int JspbEncodingOptionsFieldNumber = 6; - private global::Conformance.JspbEncodingConfig jspbEncodingOptions_; - /// - /// Specify details for how to encode jspb. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Conformance.JspbEncodingConfig JspbEncodingOptions { - get { return jspbEncodingOptions_; } - set { - jspbEncodingOptions_ = value; - } - } - - /// Field number for the "print_unknown_fields" field. - public const int PrintUnknownFieldsFieldNumber = 9; - private bool printUnknownFields_; - /// - /// This can be used in json and text format. If true, testee should print - /// unknown fields instead of ignore. This feature is optional. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool PrintUnknownFields { - get { return printUnknownFields_; } - set { - printUnknownFields_ = value; - } - } - - private object payload_; - /// Enum of possible cases for the "payload" oneof. - public enum PayloadOneofCase { - None = 0, - ProtobufPayload = 1, - JsonPayload = 2, - JspbPayload = 7, - TextPayload = 8, - } - private PayloadOneofCase payloadCase_ = PayloadOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PayloadOneofCase PayloadCase { - get { return payloadCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPayload() { - payloadCase_ = PayloadOneofCase.None; - payload_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ConformanceRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ConformanceRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (ProtobufPayload != other.ProtobufPayload) return false; - if (JsonPayload != other.JsonPayload) return false; - if (JspbPayload != other.JspbPayload) return false; - if (TextPayload != other.TextPayload) return false; - if (RequestedOutputFormat != other.RequestedOutputFormat) return false; - if (MessageType != other.MessageType) return false; - if (TestCategory != other.TestCategory) return false; - if (!object.Equals(JspbEncodingOptions, other.JspbEncodingOptions)) return false; - if (PrintUnknownFields != other.PrintUnknownFields) return false; - if (PayloadCase != other.PayloadCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (payloadCase_ == PayloadOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode(); - if (payloadCase_ == PayloadOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode(); - if (payloadCase_ == PayloadOneofCase.JspbPayload) hash ^= JspbPayload.GetHashCode(); - if (payloadCase_ == PayloadOneofCase.TextPayload) hash ^= TextPayload.GetHashCode(); - if (RequestedOutputFormat != global::Conformance.WireFormat.Unspecified) hash ^= RequestedOutputFormat.GetHashCode(); - if (MessageType.Length != 0) hash ^= MessageType.GetHashCode(); - if (TestCategory != global::Conformance.TestCategory.UnspecifiedTest) hash ^= TestCategory.GetHashCode(); - if (jspbEncodingOptions_ != null) hash ^= JspbEncodingOptions.GetHashCode(); - if (PrintUnknownFields != false) hash ^= PrintUnknownFields.GetHashCode(); - hash ^= (int) payloadCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (payloadCase_ == PayloadOneofCase.ProtobufPayload) { - output.WriteRawTag(10); - output.WriteBytes(ProtobufPayload); - } - if (payloadCase_ == PayloadOneofCase.JsonPayload) { - output.WriteRawTag(18); - output.WriteString(JsonPayload); - } - if (RequestedOutputFormat != global::Conformance.WireFormat.Unspecified) { - output.WriteRawTag(24); - output.WriteEnum((int) RequestedOutputFormat); - } - if (MessageType.Length != 0) { - output.WriteRawTag(34); - output.WriteString(MessageType); - } - if (TestCategory != global::Conformance.TestCategory.UnspecifiedTest) { - output.WriteRawTag(40); - output.WriteEnum((int) TestCategory); - } - if (jspbEncodingOptions_ != null) { - output.WriteRawTag(50); - output.WriteMessage(JspbEncodingOptions); - } - if (payloadCase_ == PayloadOneofCase.JspbPayload) { - output.WriteRawTag(58); - output.WriteString(JspbPayload); - } - if (payloadCase_ == PayloadOneofCase.TextPayload) { - output.WriteRawTag(66); - output.WriteString(TextPayload); - } - if (PrintUnknownFields != false) { - output.WriteRawTag(72); - output.WriteBool(PrintUnknownFields); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (payloadCase_ == PayloadOneofCase.ProtobufPayload) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(ProtobufPayload); - } - if (payloadCase_ == PayloadOneofCase.JsonPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload); - } - if (payloadCase_ == PayloadOneofCase.JspbPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JspbPayload); - } - if (payloadCase_ == PayloadOneofCase.TextPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TextPayload); - } - if (RequestedOutputFormat != global::Conformance.WireFormat.Unspecified) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RequestedOutputFormat); - } - if (MessageType.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(MessageType); - } - if (TestCategory != global::Conformance.TestCategory.UnspecifiedTest) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TestCategory); - } - if (jspbEncodingOptions_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(JspbEncodingOptions); - } - if (PrintUnknownFields != false) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ConformanceRequest other) { - if (other == null) { - return; - } - if (other.RequestedOutputFormat != global::Conformance.WireFormat.Unspecified) { - RequestedOutputFormat = other.RequestedOutputFormat; - } - if (other.MessageType.Length != 0) { - MessageType = other.MessageType; - } - if (other.TestCategory != global::Conformance.TestCategory.UnspecifiedTest) { - TestCategory = other.TestCategory; - } - if (other.jspbEncodingOptions_ != null) { - if (jspbEncodingOptions_ == null) { - JspbEncodingOptions = new global::Conformance.JspbEncodingConfig(); - } - JspbEncodingOptions.MergeFrom(other.JspbEncodingOptions); - } - if (other.PrintUnknownFields != false) { - PrintUnknownFields = other.PrintUnknownFields; - } - switch (other.PayloadCase) { - case PayloadOneofCase.ProtobufPayload: - ProtobufPayload = other.ProtobufPayload; - break; - case PayloadOneofCase.JsonPayload: - JsonPayload = other.JsonPayload; - break; - case PayloadOneofCase.JspbPayload: - JspbPayload = other.JspbPayload; - break; - case PayloadOneofCase.TextPayload: - TextPayload = other.TextPayload; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - ProtobufPayload = input.ReadBytes(); - break; - } - case 18: { - JsonPayload = input.ReadString(); - break; - } - case 24: { - RequestedOutputFormat = (global::Conformance.WireFormat) input.ReadEnum(); - break; - } - case 34: { - MessageType = input.ReadString(); - break; - } - case 40: { - TestCategory = (global::Conformance.TestCategory) input.ReadEnum(); - break; - } - case 50: { - if (jspbEncodingOptions_ == null) { - JspbEncodingOptions = new global::Conformance.JspbEncodingConfig(); - } - input.ReadMessage(JspbEncodingOptions); - break; - } - case 58: { - JspbPayload = input.ReadString(); - break; - } - case 66: { - TextPayload = input.ReadString(); - break; - } - case 72: { - PrintUnknownFields = input.ReadBool(); - break; - } - } - } - } - - } - - /// - /// Represents a single test case's output. - /// - public sealed partial class ConformanceResponse : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ConformanceResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Conformance.ConformanceReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceResponse(ConformanceResponse other) : this() { - switch (other.ResultCase) { - case ResultOneofCase.ParseError: - ParseError = other.ParseError; - break; - case ResultOneofCase.SerializeError: - SerializeError = other.SerializeError; - break; - case ResultOneofCase.RuntimeError: - RuntimeError = other.RuntimeError; - break; - case ResultOneofCase.ProtobufPayload: - ProtobufPayload = other.ProtobufPayload; - break; - case ResultOneofCase.JsonPayload: - JsonPayload = other.JsonPayload; - break; - case ResultOneofCase.Skipped: - Skipped = other.Skipped; - break; - case ResultOneofCase.JspbPayload: - JspbPayload = other.JspbPayload; - break; - case ResultOneofCase.TextPayload: - TextPayload = other.TextPayload; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ConformanceResponse Clone() { - return new ConformanceResponse(this); - } - - /// Field number for the "parse_error" field. - public const int ParseErrorFieldNumber = 1; - /// - /// This string should be set to indicate parsing failed. The string can - /// provide more information about the parse error if it is available. - /// - /// Setting this string does not necessarily mean the testee failed the - /// test. Some of the test cases are intentionally invalid input. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string ParseError { - get { return resultCase_ == ResultOneofCase.ParseError ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.ParseError; - } - } - - /// Field number for the "serialize_error" field. - public const int SerializeErrorFieldNumber = 6; - /// - /// If the input was successfully parsed but errors occurred when - /// serializing it to the requested output format, set the error message in - /// this field. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string SerializeError { - get { return resultCase_ == ResultOneofCase.SerializeError ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.SerializeError; - } - } - - /// Field number for the "runtime_error" field. - public const int RuntimeErrorFieldNumber = 2; - /// - /// This should be set if some other error occurred. This will always - /// indicate that the test failed. The string can provide more information - /// about the failure. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string RuntimeError { - get { return resultCase_ == ResultOneofCase.RuntimeError ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.RuntimeError; - } - } - - /// Field number for the "protobuf_payload" field. - public const int ProtobufPayloadFieldNumber = 3; - /// - /// If the input was successfully parsed and the requested output was - /// protobuf, serialize it to protobuf and set it in this field. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString ProtobufPayload { - get { return resultCase_ == ResultOneofCase.ProtobufPayload ? (pb::ByteString) result_ : pb::ByteString.Empty; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.ProtobufPayload; - } - } - - /// Field number for the "json_payload" field. - public const int JsonPayloadFieldNumber = 4; - /// - /// If the input was successfully parsed and the requested output was JSON, - /// serialize to JSON and set it in this field. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JsonPayload { - get { return resultCase_ == ResultOneofCase.JsonPayload ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.JsonPayload; - } - } - - /// Field number for the "skipped" field. - public const int SkippedFieldNumber = 5; - /// - /// For when the testee skipped the test, likely because a certain feature - /// wasn't supported, like JSON input/output. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Skipped { - get { return resultCase_ == ResultOneofCase.Skipped ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.Skipped; - } - } - - /// Field number for the "jspb_payload" field. - public const int JspbPayloadFieldNumber = 7; - /// - /// If the input was successfully parsed and the requested output was JSPB, - /// serialize to JSPB and set it in this field. JSPB is google internal only - /// format. Opensource testees can just skip it. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JspbPayload { - get { return resultCase_ == ResultOneofCase.JspbPayload ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.JspbPayload; - } - } - - /// Field number for the "text_payload" field. - public const int TextPayloadFieldNumber = 8; - /// - /// If the input was successfully parsed and the requested output was - /// TEXT_FORMAT, serialize to TEXT_FORMAT and set it in this field. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TextPayload { - get { return resultCase_ == ResultOneofCase.TextPayload ? (string) result_ : ""; } - set { - result_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - resultCase_ = ResultOneofCase.TextPayload; - } - } - - private object result_; - /// Enum of possible cases for the "result" oneof. - public enum ResultOneofCase { - None = 0, - ParseError = 1, - SerializeError = 6, - RuntimeError = 2, - ProtobufPayload = 3, - JsonPayload = 4, - Skipped = 5, - JspbPayload = 7, - TextPayload = 8, - } - private ResultOneofCase resultCase_ = ResultOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ResultOneofCase ResultCase { - get { return resultCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearResult() { - resultCase_ = ResultOneofCase.None; - result_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ConformanceResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ConformanceResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (ParseError != other.ParseError) return false; - if (SerializeError != other.SerializeError) return false; - if (RuntimeError != other.RuntimeError) return false; - if (ProtobufPayload != other.ProtobufPayload) return false; - if (JsonPayload != other.JsonPayload) return false; - if (Skipped != other.Skipped) return false; - if (JspbPayload != other.JspbPayload) return false; - if (TextPayload != other.TextPayload) return false; - if (ResultCase != other.ResultCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (resultCase_ == ResultOneofCase.ParseError) hash ^= ParseError.GetHashCode(); - if (resultCase_ == ResultOneofCase.SerializeError) hash ^= SerializeError.GetHashCode(); - if (resultCase_ == ResultOneofCase.RuntimeError) hash ^= RuntimeError.GetHashCode(); - if (resultCase_ == ResultOneofCase.ProtobufPayload) hash ^= ProtobufPayload.GetHashCode(); - if (resultCase_ == ResultOneofCase.JsonPayload) hash ^= JsonPayload.GetHashCode(); - if (resultCase_ == ResultOneofCase.Skipped) hash ^= Skipped.GetHashCode(); - if (resultCase_ == ResultOneofCase.JspbPayload) hash ^= JspbPayload.GetHashCode(); - if (resultCase_ == ResultOneofCase.TextPayload) hash ^= TextPayload.GetHashCode(); - hash ^= (int) resultCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (resultCase_ == ResultOneofCase.ParseError) { - output.WriteRawTag(10); - output.WriteString(ParseError); - } - if (resultCase_ == ResultOneofCase.RuntimeError) { - output.WriteRawTag(18); - output.WriteString(RuntimeError); - } - if (resultCase_ == ResultOneofCase.ProtobufPayload) { - output.WriteRawTag(26); - output.WriteBytes(ProtobufPayload); - } - if (resultCase_ == ResultOneofCase.JsonPayload) { - output.WriteRawTag(34); - output.WriteString(JsonPayload); - } - if (resultCase_ == ResultOneofCase.Skipped) { - output.WriteRawTag(42); - output.WriteString(Skipped); - } - if (resultCase_ == ResultOneofCase.SerializeError) { - output.WriteRawTag(50); - output.WriteString(SerializeError); - } - if (resultCase_ == ResultOneofCase.JspbPayload) { - output.WriteRawTag(58); - output.WriteString(JspbPayload); - } - if (resultCase_ == ResultOneofCase.TextPayload) { - output.WriteRawTag(66); - output.WriteString(TextPayload); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (resultCase_ == ResultOneofCase.ParseError) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(ParseError); - } - if (resultCase_ == ResultOneofCase.SerializeError) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(SerializeError); - } - if (resultCase_ == ResultOneofCase.RuntimeError) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(RuntimeError); - } - if (resultCase_ == ResultOneofCase.ProtobufPayload) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(ProtobufPayload); - } - if (resultCase_ == ResultOneofCase.JsonPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonPayload); - } - if (resultCase_ == ResultOneofCase.Skipped) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Skipped); - } - if (resultCase_ == ResultOneofCase.JspbPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JspbPayload); - } - if (resultCase_ == ResultOneofCase.TextPayload) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TextPayload); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ConformanceResponse other) { - if (other == null) { - return; - } - switch (other.ResultCase) { - case ResultOneofCase.ParseError: - ParseError = other.ParseError; - break; - case ResultOneofCase.SerializeError: - SerializeError = other.SerializeError; - break; - case ResultOneofCase.RuntimeError: - RuntimeError = other.RuntimeError; - break; - case ResultOneofCase.ProtobufPayload: - ProtobufPayload = other.ProtobufPayload; - break; - case ResultOneofCase.JsonPayload: - JsonPayload = other.JsonPayload; - break; - case ResultOneofCase.Skipped: - Skipped = other.Skipped; - break; - case ResultOneofCase.JspbPayload: - JspbPayload = other.JspbPayload; - break; - case ResultOneofCase.TextPayload: - TextPayload = other.TextPayload; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - ParseError = input.ReadString(); - break; - } - case 18: { - RuntimeError = input.ReadString(); - break; - } - case 26: { - ProtobufPayload = input.ReadBytes(); - break; - } - case 34: { - JsonPayload = input.ReadString(); - break; - } - case 42: { - Skipped = input.ReadString(); - break; - } - case 50: { - SerializeError = input.ReadString(); - break; - } - case 58: { - JspbPayload = input.ReadString(); - break; - } - case 66: { - TextPayload = input.ReadString(); - break; - } - } - } - } - - } - - /// - /// Encoding options for jspb format. - /// - public sealed partial class JspbEncodingConfig : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new JspbEncodingConfig()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Conformance.ConformanceReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public JspbEncodingConfig() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public JspbEncodingConfig(JspbEncodingConfig other) : this() { - useJspbArrayAnyFormat_ = other.useJspbArrayAnyFormat_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public JspbEncodingConfig Clone() { - return new JspbEncodingConfig(this); - } - - /// Field number for the "use_jspb_array_any_format" field. - public const int UseJspbArrayAnyFormatFieldNumber = 1; - private bool useJspbArrayAnyFormat_; - /// - /// Encode the value field of Any as jspb array if ture, otherwise binary. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool UseJspbArrayAnyFormat { - get { return useJspbArrayAnyFormat_; } - set { - useJspbArrayAnyFormat_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as JspbEncodingConfig); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(JspbEncodingConfig other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (UseJspbArrayAnyFormat != other.UseJspbArrayAnyFormat) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (UseJspbArrayAnyFormat != false) hash ^= UseJspbArrayAnyFormat.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (UseJspbArrayAnyFormat != false) { - output.WriteRawTag(8); - output.WriteBool(UseJspbArrayAnyFormat); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (UseJspbArrayAnyFormat != false) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(JspbEncodingConfig other) { - if (other == null) { - return; - } - if (other.UseJspbArrayAnyFormat != false) { - UseJspbArrayAnyFormat = other.UseJspbArrayAnyFormat; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - UseJspbArrayAnyFormat = input.ReadBool(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Google.Protobuf.Conformance.csproj b/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Google.Protobuf.Conformance.csproj deleted file mode 100644 index ec8fb91..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Google.Protobuf.Conformance.csproj +++ /dev/null @@ -1,14 +0,0 @@ - - - - netcoreapp2.1 - Exe - False - - - - - - - - diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Program.cs b/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Program.cs deleted file mode 100644 index f5e1dad..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Conformance/Program.cs +++ /dev/null @@ -1,162 +0,0 @@ -#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 Conformance; -using Google.Protobuf.Reflection; -using System; -using System.IO; - -namespace Google.Protobuf.Conformance -{ - /// - /// Conformance tests. The test runner will provide JSON or proto data on stdin, - /// and this program will produce its output on stdout. - /// - class Program - { - private static void Main(string[] args) - { - // This way we get the binary streams instead of readers/writers. - var input = new BinaryReader(Console.OpenStandardInput()); - var output = new BinaryWriter(Console.OpenStandardOutput()); - var typeRegistry = TypeRegistry.FromMessages(ProtobufTestMessages.Proto3.TestAllTypesProto3.Descriptor); - - int count = 0; - while (RunTest(input, output, typeRegistry)) - { - count++; - } - Console.Error.WriteLine("Received EOF after {0} tests", count); - } - - private static bool RunTest(BinaryReader input, BinaryWriter output, TypeRegistry typeRegistry) - { - int? size = ReadInt32(input); - if (size == null) - { - return false; - } - byte[] inputData = input.ReadBytes(size.Value); - if (inputData.Length != size.Value) - { - throw new EndOfStreamException("Read " + inputData.Length + " bytes of data when expecting " + size); - } - ConformanceRequest request = ConformanceRequest.Parser.ParseFrom(inputData); - ConformanceResponse response = PerformRequest(request, typeRegistry); - byte[] outputData = response.ToByteArray(); - output.Write(outputData.Length); - output.Write(outputData); - // Ready for another test... - return true; - } - - private static ConformanceResponse PerformRequest(ConformanceRequest request, TypeRegistry typeRegistry) - { - ProtobufTestMessages.Proto3.TestAllTypesProto3 message; - try - { - switch (request.PayloadCase) - { - case ConformanceRequest.PayloadOneofCase.JsonPayload: - if (request.TestCategory == global::Conformance.TestCategory.JsonIgnoreUnknownParsingTest) { - return new ConformanceResponse { Skipped = "CSharp doesn't support skipping unknown fields in json parsing." }; - } - var parser = new JsonParser(new JsonParser.Settings(20, typeRegistry)); - message = parser.Parse(request.JsonPayload); - break; - case ConformanceRequest.PayloadOneofCase.ProtobufPayload: - { - if (request.MessageType.Equals("protobuf_test_messages.proto3.TestAllTypesProto3")) - { - message = ProtobufTestMessages.Proto3.TestAllTypesProto3.Parser.ParseFrom(request.ProtobufPayload); - } - else if (request.MessageType.Equals("protobuf_test_messages.proto2.TestAllTypesProto2")) - { - return new ConformanceResponse { Skipped = "CSharp doesn't support proto2" }; - } - else - { - throw new Exception(" Protobuf request doesn't have specific payload type"); - } - break; - } - case ConformanceRequest.PayloadOneofCase.TextPayload: - { - return new ConformanceResponse { Skipped = "CSharp doesn't support text format" }; - } - default: - throw new Exception("Unsupported request payload: " + request.PayloadCase); - } - } - catch (InvalidProtocolBufferException e) - { - return new ConformanceResponse { ParseError = e.Message }; - } - catch (InvalidJsonException e) - { - return new ConformanceResponse { ParseError = e.Message }; - } - try - { - switch (request.RequestedOutputFormat) - { - case global::Conformance.WireFormat.Json: - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, typeRegistry)); - return new ConformanceResponse { JsonPayload = formatter.Format(message) }; - case global::Conformance.WireFormat.Protobuf: - return new ConformanceResponse { ProtobufPayload = message.ToByteString() }; - default: - throw new Exception("Unsupported request output format: " + request.PayloadCase); - } - } - catch (InvalidOperationException e) - { - return new ConformanceResponse { SerializeError = e.Message }; - } - } - - private static int? ReadInt32(BinaryReader input) - { - byte[] bytes = input.ReadBytes(4); - if (bytes.Length == 0) - { - // Cleanly reached the end of the stream - return null; - } - if (bytes.Length != 4) - { - throw new EndOfStreamException("Read " + bytes.Length + " bytes of size when expecting 4"); - } - return bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Google.Protobuf.JsonDump.csproj b/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Google.Protobuf.JsonDump.csproj deleted file mode 100644 index fee35be..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Google.Protobuf.JsonDump.csproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - netcoreapp2.1 - Exe - False - - - - - - - diff --git a/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Program.cs b/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Program.cs deleted file mode 100644 index 296b2f3..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.JsonDump/Program.cs +++ /dev/null @@ -1,73 +0,0 @@ -#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.IO; -using System.Reflection; - -namespace Google.Protobuf.ProtoDump -{ - /// - /// Small utility to load a binary message and dump it in JSON format. - /// - internal class Program - { - private static int Main(string[] args) - { - if (args.Length != 2) - { - Console.Error.WriteLine("Usage: Google.Protobuf.JsonDump "); - Console.Error.WriteLine("The descriptor type name is the fully-qualified message name,"); - Console.Error.WriteLine("including assembly e.g. ProjectNamespace.Message,Company.Project"); - return 1; - } - Type type = Type.GetType(args[0]); - if (type == null) - { - Console.Error.WriteLine("Unable to load type {0}.", args[0]); - return 1; - } - if (!typeof(IMessage).GetTypeInfo().IsAssignableFrom(type)) - { - Console.Error.WriteLine("Type {0} doesn't implement IMessage.", args[0]); - return 1; - } - IMessage message = (IMessage) Activator.CreateInstance(type); - using (var input = File.OpenRead(args[1])) - { - message.MergeFrom(input); - } - Console.WriteLine(message); - return 0; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/ByteStringTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/ByteStringTest.cs deleted file mode 100644 index 84e6341..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/ByteStringTest.cs +++ /dev/null @@ -1,237 +0,0 @@ -#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.Text; -using NUnit.Framework; -using System.IO; -#if !NET35 -using System.Threading.Tasks; -#endif - -namespace Google.Protobuf -{ - public class ByteStringTest - { - [Test] - public void Equality() - { - ByteString b1 = ByteString.CopyFrom(1, 2, 3); - ByteString b2 = ByteString.CopyFrom(1, 2, 3); - ByteString b3 = ByteString.CopyFrom(1, 2, 4); - ByteString b4 = ByteString.CopyFrom(1, 2, 3, 4); - EqualityTester.AssertEquality(b1, b1); - EqualityTester.AssertEquality(b1, b2); - EqualityTester.AssertInequality(b1, b3); - EqualityTester.AssertInequality(b1, b4); - EqualityTester.AssertInequality(b1, null); -#pragma warning disable 1718 // Deliberately calling ==(b1, b1) and !=(b1, b1) - Assert.IsTrue(b1 == b1); - Assert.IsTrue(b1 == b2); - Assert.IsFalse(b1 == b3); - Assert.IsFalse(b1 == b4); - Assert.IsFalse(b1 == null); - Assert.IsTrue((ByteString) null == null); - Assert.IsFalse(b1 != b1); - Assert.IsFalse(b1 != b2); -#pragma warning disable 1718 - Assert.IsTrue(b1 != b3); - Assert.IsTrue(b1 != b4); - Assert.IsTrue(b1 != null); - Assert.IsFalse((ByteString) null != null); - } - - [Test] - public void EmptyByteStringHasZeroSize() - { - Assert.AreEqual(0, ByteString.Empty.Length); - } - - [Test] - public void CopyFromStringWithExplicitEncoding() - { - ByteString bs = ByteString.CopyFrom("AB", Encoding.Unicode); - Assert.AreEqual(4, bs.Length); - Assert.AreEqual(65, bs[0]); - Assert.AreEqual(0, bs[1]); - Assert.AreEqual(66, bs[2]); - Assert.AreEqual(0, bs[3]); - } - - [Test] - public void IsEmptyWhenEmpty() - { - Assert.IsTrue(ByteString.CopyFromUtf8("").IsEmpty); - } - - [Test] - public void IsEmptyWhenNotEmpty() - { - Assert.IsFalse(ByteString.CopyFromUtf8("X").IsEmpty); - } - - [Test] - public void CopyFromByteArrayCopiesContents() - { - byte[] data = new byte[1]; - data[0] = 10; - ByteString bs = ByteString.CopyFrom(data); - Assert.AreEqual(10, bs[0]); - data[0] = 5; - Assert.AreEqual(10, bs[0]); - } - - [Test] - public void ToByteArrayCopiesContents() - { - ByteString bs = ByteString.CopyFromUtf8("Hello"); - byte[] data = bs.ToByteArray(); - Assert.AreEqual((byte)'H', data[0]); - Assert.AreEqual((byte)'H', bs[0]); - data[0] = 0; - Assert.AreEqual(0, data[0]); - Assert.AreEqual((byte)'H', bs[0]); - } - - [Test] - public void CopyFromUtf8UsesUtf8() - { - ByteString bs = ByteString.CopyFromUtf8("\u20ac"); - Assert.AreEqual(3, bs.Length); - Assert.AreEqual(0xe2, bs[0]); - Assert.AreEqual(0x82, bs[1]); - Assert.AreEqual(0xac, bs[2]); - } - - [Test] - public void CopyFromPortion() - { - byte[] data = new byte[] {0, 1, 2, 3, 4, 5, 6}; - ByteString bs = ByteString.CopyFrom(data, 2, 3); - Assert.AreEqual(3, bs.Length); - Assert.AreEqual(2, bs[0]); - Assert.AreEqual(3, bs[1]); - } - - [Test] - public void ToStringUtf8() - { - ByteString bs = ByteString.CopyFromUtf8("\u20ac"); - Assert.AreEqual("\u20ac", bs.ToStringUtf8()); - } - - [Test] - public void ToStringWithExplicitEncoding() - { - ByteString bs = ByteString.CopyFrom("\u20ac", Encoding.Unicode); - Assert.AreEqual("\u20ac", bs.ToString(Encoding.Unicode)); - } - - [Test] - public void FromBase64_WithText() - { - byte[] data = new byte[] {0, 1, 2, 3, 4, 5, 6}; - string base64 = Convert.ToBase64String(data); - ByteString bs = ByteString.FromBase64(base64); - Assert.AreEqual(data, bs.ToByteArray()); - } - - [Test] - public void FromBase64_Empty() - { - // Optimization which also fixes issue 61. - Assert.AreSame(ByteString.Empty, ByteString.FromBase64("")); - } - - [Test] - public void FromStream_Seekable() - { - var stream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }); - // Consume the first byte, just to test that it's "from current position" - stream.ReadByte(); - var actual = ByteString.FromStream(stream); - ByteString expected = ByteString.CopyFrom(2, 3, 4, 5); - Assert.AreEqual(expected, actual, $"{expected.ToBase64()} != {actual.ToBase64()}"); - } - - [Test] - public void FromStream_NotSeekable() - { - var stream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }); - // Consume the first byte, just to test that it's "from current position" - stream.ReadByte(); - // Wrap the original stream in LimitedInputStream, which has CanSeek=false - var limitedStream = new LimitedInputStream(stream, 3); - var actual = ByteString.FromStream(limitedStream); - ByteString expected = ByteString.CopyFrom(2, 3, 4); - Assert.AreEqual(expected, actual, $"{expected.ToBase64()} != {actual.ToBase64()}"); - } - -#if !NET35 - [Test] - public async Task FromStreamAsync_Seekable() - { - var stream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }); - // Consume the first byte, just to test that it's "from current position" - stream.ReadByte(); - var actual = await ByteString.FromStreamAsync(stream); - ByteString expected = ByteString.CopyFrom(2, 3, 4, 5); - Assert.AreEqual(expected, actual, $"{expected.ToBase64()} != {actual.ToBase64()}"); - } - - [Test] - public async Task FromStreamAsync_NotSeekable() - { - var stream = new MemoryStream(new byte[] { 1, 2, 3, 4, 5 }); - // Consume the first byte, just to test that it's "from current position" - stream.ReadByte(); - // Wrap the original stream in LimitedInputStream, which has CanSeek=false - var limitedStream = new LimitedInputStream(stream, 3); - var actual = await ByteString.FromStreamAsync(limitedStream); - ByteString expected = ByteString.CopyFrom(2, 3, 4); - Assert.AreEqual(expected, actual, $"{expected.ToBase64()} != {actual.ToBase64()}"); - } -#endif - - [Test] - public void GetHashCode_Regression() - { - // We used to have an awful hash algorithm where only the last four - // bytes were relevant. This is a regression test for - // https://github.com/protocolbuffers/protobuf/issues/2511 - - ByteString b1 = ByteString.CopyFrom(100, 1, 2, 3, 4); - ByteString b2 = ByteString.CopyFrom(200, 1, 2, 3, 4); - Assert.AreNotEqual(b1.GetHashCode(), b2.GetHashCode()); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs deleted file mode 100644 index 23af288..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamExtensions.cs +++ /dev/null @@ -1,53 +0,0 @@ -#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 NUnit.Framework; - -namespace Google.Protobuf -{ - internal static class CodedInputStreamExtensions - { - public static void AssertNextTag(this CodedInputStream input, uint expectedTag) - { - uint tag = input.ReadTag(); - Assert.AreEqual(expectedTag, tag); - } - - public static T ReadMessage(this CodedInputStream stream, MessageParser parser) - where T : IMessage - { - var message = parser.CreateTemplate(); - stream.ReadMessage(message); - return message; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs deleted file mode 100644 index ba65b32..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedInputStreamTest.cs +++ /dev/null @@ -1,738 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class CodedInputStreamTest - { - /// - /// Helper to construct a byte array from a bunch of bytes. The inputs are - /// actually ints so that I can use hex notation and not get stupid errors - /// about precision. - /// - private static byte[] Bytes(params int[] bytesAsInts) - { - byte[] bytes = new byte[bytesAsInts.Length]; - for (int i = 0; i < bytesAsInts.Length; i++) - { - bytes[i] = (byte) bytesAsInts[i]; - } - return bytes; - } - - /// - /// Parses the given bytes using ReadRawVarint32() and ReadRawVarint64() - /// - private static void AssertReadVarint(byte[] data, ulong value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual((uint) value, input.ReadRawVarint32()); - - input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawVarint64()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - input = new CodedInputStream(new SmallBlockInputStream(data, bufferSize)); - Assert.AreEqual((uint) value, input.ReadRawVarint32()); - - input = new CodedInputStream(new SmallBlockInputStream(data, bufferSize)); - Assert.AreEqual(value, input.ReadRawVarint64()); - Assert.IsTrue(input.IsAtEnd); - } - - // Try reading directly from a MemoryStream. We want to verify that it - // doesn't read past the end of the input, so write an extra byte - this - // lets us test the position at the end. - MemoryStream memoryStream = new MemoryStream(); - memoryStream.Write(data, 0, data.Length); - memoryStream.WriteByte(0); - memoryStream.Position = 0; - Assert.AreEqual((uint) value, CodedInputStream.ReadRawVarint32(memoryStream)); - Assert.AreEqual(data.Length, memoryStream.Position); - } - - /// - /// Parses the given bytes using ReadRawVarint32() and ReadRawVarint64() and - /// expects them to fail with an InvalidProtocolBufferException whose - /// description matches the given one. - /// - private static void AssertReadVarintFailure(InvalidProtocolBufferException expected, byte[] data) - { - CodedInputStream input = new CodedInputStream(data); - var exception = Assert.Throws(() => input.ReadRawVarint32()); - Assert.AreEqual(expected.Message, exception.Message); - - input = new CodedInputStream(data); - exception = Assert.Throws(() => input.ReadRawVarint64()); - Assert.AreEqual(expected.Message, exception.Message); - - // Make sure we get the same error when reading directly from a Stream. - exception = Assert.Throws(() => CodedInputStream.ReadRawVarint32(new MemoryStream(data))); - Assert.AreEqual(expected.Message, exception.Message); - } - - [Test] - public void ReadVarint() - { - AssertReadVarint(Bytes(0x00), 0); - AssertReadVarint(Bytes(0x01), 1); - AssertReadVarint(Bytes(0x7f), 127); - // 14882 - AssertReadVarint(Bytes(0xa2, 0x74), (0x22 << 0) | (0x74 << 7)); - // 2961488830 - AssertReadVarint(Bytes(0xbe, 0xf7, 0x92, 0x84, 0x0b), - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x0bL << 28)); - - // 64-bit - // 7256456126 - AssertReadVarint(Bytes(0xbe, 0xf7, 0x92, 0x84, 0x1b), - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x1bL << 28)); - // 41256202580718336 - AssertReadVarint(Bytes(0x80, 0xe6, 0xeb, 0x9c, 0xc3, 0xc9, 0xa4, 0x49), - (0x00 << 0) | (0x66 << 7) | (0x6b << 14) | (0x1c << 21) | - (0x43L << 28) | (0x49L << 35) | (0x24L << 42) | (0x49L << 49)); - // 11964378330978735131 - AssertReadVarint(Bytes(0x9b, 0xa8, 0xf9, 0xc2, 0xbb, 0xd6, 0x80, 0x85, 0xa6, 0x01), - (0x1b << 0) | (0x28 << 7) | (0x79 << 14) | (0x42 << 21) | - (0x3bUL << 28) | (0x56UL << 35) | (0x00UL << 42) | - (0x05UL << 49) | (0x26UL << 56) | (0x01UL << 63)); - - // Failures - AssertReadVarintFailure( - InvalidProtocolBufferException.MalformedVarint(), - Bytes(0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x00)); - AssertReadVarintFailure( - InvalidProtocolBufferException.TruncatedMessage(), - Bytes(0x80)); - } - - /// - /// Parses the given bytes using ReadRawLittleEndian32() and checks - /// that the result matches the given value. - /// - private static void AssertReadLittleEndian32(byte[] data, uint value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawLittleEndian32()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - input = new CodedInputStream( - new SmallBlockInputStream(data, blockSize)); - Assert.AreEqual(value, input.ReadRawLittleEndian32()); - Assert.IsTrue(input.IsAtEnd); - } - } - - /// - /// Parses the given bytes using ReadRawLittleEndian64() and checks - /// that the result matches the given value. - /// - private static void AssertReadLittleEndian64(byte[] data, ulong value) - { - CodedInputStream input = new CodedInputStream(data); - Assert.AreEqual(value, input.ReadRawLittleEndian64()); - Assert.IsTrue(input.IsAtEnd); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - input = new CodedInputStream( - new SmallBlockInputStream(data, blockSize)); - Assert.AreEqual(value, input.ReadRawLittleEndian64()); - Assert.IsTrue(input.IsAtEnd); - } - } - - [Test] - public void ReadLittleEndian() - { - AssertReadLittleEndian32(Bytes(0x78, 0x56, 0x34, 0x12), 0x12345678); - AssertReadLittleEndian32(Bytes(0xf0, 0xde, 0xbc, 0x9a), 0x9abcdef0); - - AssertReadLittleEndian64(Bytes(0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12), - 0x123456789abcdef0L); - AssertReadLittleEndian64( - Bytes(0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a), 0x9abcdef012345678UL); - } - - [Test] - public void DecodeZigZag32() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag32(0)); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag32(1)); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag32(2)); - Assert.AreEqual(-2, CodedInputStream.DecodeZigZag32(3)); - Assert.AreEqual(0x3FFFFFFF, CodedInputStream.DecodeZigZag32(0x7FFFFFFE)); - Assert.AreEqual(unchecked((int) 0xC0000000), CodedInputStream.DecodeZigZag32(0x7FFFFFFF)); - Assert.AreEqual(0x7FFFFFFF, CodedInputStream.DecodeZigZag32(0xFFFFFFFE)); - Assert.AreEqual(unchecked((int) 0x80000000), CodedInputStream.DecodeZigZag32(0xFFFFFFFF)); - } - - [Test] - public void DecodeZigZag64() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag64(0)); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag64(1)); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag64(2)); - Assert.AreEqual(-2, CodedInputStream.DecodeZigZag64(3)); - Assert.AreEqual(0x000000003FFFFFFFL, CodedInputStream.DecodeZigZag64(0x000000007FFFFFFEL)); - Assert.AreEqual(unchecked((long) 0xFFFFFFFFC0000000L), CodedInputStream.DecodeZigZag64(0x000000007FFFFFFFL)); - Assert.AreEqual(0x000000007FFFFFFFL, CodedInputStream.DecodeZigZag64(0x00000000FFFFFFFEL)); - Assert.AreEqual(unchecked((long) 0xFFFFFFFF80000000L), CodedInputStream.DecodeZigZag64(0x00000000FFFFFFFFL)); - Assert.AreEqual(0x7FFFFFFFFFFFFFFFL, CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFEL)); - Assert.AreEqual(unchecked((long) 0x8000000000000000L), CodedInputStream.DecodeZigZag64(0xFFFFFFFFFFFFFFFFL)); - } - - [Test] - public void ReadWholeMessage_VaryingBlockSizes() - { - TestAllTypes message = SampleMessages.CreateFullTestAllTypes(); - - byte[] rawBytes = message.ToByteArray(); - Assert.AreEqual(rawBytes.Length, message.CalculateSize()); - TestAllTypes message2 = TestAllTypes.Parser.ParseFrom(rawBytes); - Assert.AreEqual(message, message2); - - // Try different block sizes. - for (int blockSize = 1; blockSize < 256; blockSize *= 2) - { - message2 = TestAllTypes.Parser.ParseFrom(new SmallBlockInputStream(rawBytes, blockSize)); - Assert.AreEqual(message, message2); - } - } - - [Test] - public void ReadHugeBlob() - { - // Allocate and initialize a 1MB blob. - byte[] blob = new byte[1 << 20]; - for (int i = 0; i < blob.Length; i++) - { - blob[i] = (byte) i; - } - - // Make a message containing it. - var message = new TestAllTypes { SingleBytes = ByteString.CopyFrom(blob) }; - - // Serialize and parse it. Make sure to parse from an InputStream, not - // directly from a ByteString, so that CodedInputStream uses buffered - // reading. - TestAllTypes message2 = TestAllTypes.Parser.ParseFrom(message.ToByteString()); - - Assert.AreEqual(message, message2); - } - - [Test] - public void ReadMaliciouslyLargeBlob() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteRawVarint32(0x7FFFFFFF); - output.WriteRawBytes(new byte[32]); // Pad with a few random bytes. - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - Assert.AreEqual(tag, input.ReadTag()); - - Assert.Throws(() => input.ReadBytes()); - } - - // Representations of a tag for field 0 with various wire types - [Test] - [TestCase(0)] - [TestCase(1)] - [TestCase(2)] - [TestCase(3)] - [TestCase(4)] - [TestCase(5)] - public void ReadTag_ZeroFieldRejected(byte tag) - { - CodedInputStream cis = new CodedInputStream(new byte[] { tag }); - Assert.Throws(() => cis.ReadTag()); - } - - internal static TestRecursiveMessage MakeRecursiveMessage(int depth) - { - if (depth == 0) - { - return new TestRecursiveMessage { I = 5 }; - } - else - { - return new TestRecursiveMessage { A = MakeRecursiveMessage(depth - 1) }; - } - } - - internal static void AssertMessageDepth(TestRecursiveMessage message, int depth) - { - if (depth == 0) - { - Assert.IsNull(message.A); - Assert.AreEqual(5, message.I); - } - else - { - Assert.IsNotNull(message.A); - AssertMessageDepth(message.A, depth - 1); - } - } - - [Test] - public void MaliciousRecursion() - { - ByteString atRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit).ToByteString(); - ByteString beyondRecursiveLimit = MakeRecursiveMessage(CodedInputStream.DefaultRecursionLimit + 1).ToByteString(); - - AssertMessageDepth(TestRecursiveMessage.Parser.ParseFrom(atRecursiveLimit), CodedInputStream.DefaultRecursionLimit); - - Assert.Throws(() => TestRecursiveMessage.Parser.ParseFrom(beyondRecursiveLimit)); - - CodedInputStream input = CodedInputStream.CreateWithLimits(new MemoryStream(atRecursiveLimit.ToByteArray()), 1000000, CodedInputStream.DefaultRecursionLimit - 1); - Assert.Throws(() => TestRecursiveMessage.Parser.ParseFrom(input)); - } - - [Test] - public void SizeLimit() - { - // Have to use a Stream rather than ByteString.CreateCodedInput as SizeLimit doesn't - // apply to the latter case. - MemoryStream ms = new MemoryStream(SampleMessages.CreateFullTestAllTypes().ToByteArray()); - CodedInputStream input = CodedInputStream.CreateWithLimits(ms, 16, 100); - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(input)); - } - - /// - /// Tests that if we read an string that contains invalid UTF-8, no exception - /// is thrown. Instead, the invalid bytes are replaced with the Unicode - /// "replacement character" U+FFFD. - /// - [Test] - public void ReadInvalidUtf8() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteRawVarint32(1); - output.WriteRawBytes(new byte[] {0x80}); - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - - Assert.AreEqual(tag, input.ReadTag()); - string text = input.ReadString(); - Assert.AreEqual('\ufffd', text[0]); - } - - [Test] - public void ReadNegativeSizedStringThrowsInvalidProtocolBufferException() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteLength(-1); - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - - Assert.AreEqual(tag, input.ReadTag()); - Assert.Throws(() => input.ReadString()); - } - - [Test] - public void ReadNegativeSizedBytesThrowsInvalidProtocolBufferException() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - output.WriteRawVarint32(tag); - output.WriteLength(-1); - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - - Assert.AreEqual(tag, input.ReadTag()); - Assert.Throws(() => input.ReadBytes()); - } - - /// - /// A stream which limits the number of bytes it reads at a time. - /// We use this to make sure that CodedInputStream doesn't screw up when - /// reading in small blocks. - /// - private sealed class SmallBlockInputStream : MemoryStream - { - private readonly int blockSize; - - public SmallBlockInputStream(byte[] data, int blockSize) - : base(data) - { - this.blockSize = blockSize; - } - - public override int Read(byte[] buffer, int offset, int count) - { - return base.Read(buffer, offset, Math.Min(count, blockSize)); - } - } - - [Test] - public void TestNegativeEnum() - { - byte[] bytes = { 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01 }; - CodedInputStream input = new CodedInputStream(bytes); - Assert.AreEqual((int)SampleEnum.NegativeValue, input.ReadEnum()); - Assert.IsTrue(input.IsAtEnd); - } - - //Issue 71: CodedInputStream.ReadBytes go to slow path unnecessarily - [Test] - public void TestSlowPathAvoidance() - { - using (var ms = new MemoryStream()) - { - CodedOutputStream output = new CodedOutputStream(ms); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteBytes(ByteString.CopyFrom(new byte[100])); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteBytes(ByteString.CopyFrom(new byte[100])); - output.Flush(); - - ms.Position = 0; - CodedInputStream input = new CodedInputStream(ms, new byte[ms.Length / 2], 0, 0, false); - - uint tag = input.ReadTag(); - Assert.AreEqual(1, WireFormat.GetTagFieldNumber(tag)); - Assert.AreEqual(100, input.ReadBytes().Length); - - tag = input.ReadTag(); - Assert.AreEqual(2, WireFormat.GetTagFieldNumber(tag)); - Assert.AreEqual(100, input.ReadBytes().Length); - } - } - - [Test] - public void Tag0Throws() - { - var input = new CodedInputStream(new byte[] { 0 }); - Assert.Throws(() => input.ReadTag()); - } - - [Test] - public void SkipGroup() - { - // Create an output stream with a group in: - // Field 1: string "field 1" - // Field 2: group containing: - // Field 1: fixed int32 value 100 - // Field 2: string "ignore me" - // Field 3: nested group containing - // Field 1: fixed int64 value 1000 - // Field 3: string "field 3" - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString("field 1"); - - // The outer group... - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(1, WireFormat.WireType.Fixed32); - output.WriteFixed32(100); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteString("ignore me"); - // The nested group... - output.WriteTag(3, WireFormat.WireType.StartGroup); - output.WriteTag(1, WireFormat.WireType.Fixed64); - output.WriteFixed64(1000); - // Note: Not sure the field number is relevant for end group... - output.WriteTag(3, WireFormat.WireType.EndGroup); - - // End the outer group - output.WriteTag(2, WireFormat.WireType.EndGroup); - - output.WriteTag(3, WireFormat.WireType.LengthDelimited); - output.WriteString("field 3"); - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 1", input.ReadString()); - Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag()); - input.SkipLastField(); // Should consume the whole group, including the nested one. - Assert.AreEqual(WireFormat.MakeTag(3, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 3", input.ReadString()); - } - - [Test] - public void SkipGroup_WrongEndGroupTag() - { - // Create an output stream with: - // Field 1: string "field 1" - // Start group 2 - // Field 3: fixed int32 - // End group 4 (should give an error) - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString("field 1"); - - // The outer group... - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(3, WireFormat.WireType.Fixed32); - output.WriteFixed32(100); - output.WriteTag(4, WireFormat.WireType.EndGroup); - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited), input.ReadTag()); - Assert.AreEqual("field 1", input.ReadString()); - Assert.AreEqual(WireFormat.MakeTag(2, WireFormat.WireType.StartGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void RogueEndGroupTag() - { - // If we have an end-group tag without a leading start-group tag, generated - // code will just call SkipLastField... so that should fail. - - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.EndGroup); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.EndGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void EndOfStreamReachedWhileSkippingGroup() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(1, WireFormat.WireType.StartGroup); - output.WriteTag(2, WireFormat.WireType.StartGroup); - output.WriteTag(2, WireFormat.WireType.EndGroup); - - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - input.ReadTag(); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void RecursionLimitAppliedWhileSkippingGroup() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - for (int i = 0; i < CodedInputStream.DefaultRecursionLimit + 1; i++) - { - output.WriteTag(1, WireFormat.WireType.StartGroup); - } - for (int i = 0; i < CodedInputStream.DefaultRecursionLimit + 1; i++) - { - output.WriteTag(1, WireFormat.WireType.EndGroup); - } - output.Flush(); - stream.Position = 0; - - // Now act like a generated client - var input = new CodedInputStream(stream); - Assert.AreEqual(WireFormat.MakeTag(1, WireFormat.WireType.StartGroup), input.ReadTag()); - Assert.Throws(input.SkipLastField); - } - - [Test] - public void Construction_Invalid() - { - Assert.Throws(() => new CodedInputStream((byte[]) null)); - Assert.Throws(() => new CodedInputStream(null, 0, 0)); - Assert.Throws(() => new CodedInputStream((Stream) null)); - Assert.Throws(() => new CodedInputStream(new byte[10], 100, 0)); - Assert.Throws(() => new CodedInputStream(new byte[10], 5, 10)); - } - - [Test] - public void CreateWithLimits_InvalidLimits() - { - var stream = new MemoryStream(); - Assert.Throws(() => CodedInputStream.CreateWithLimits(stream, 0, 1)); - Assert.Throws(() => CodedInputStream.CreateWithLimits(stream, 1, 0)); - } - - [Test] - public void Dispose_DisposesUnderlyingStream() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanRead); - using (var cis = new CodedInputStream(memoryStream)) - { - } - Assert.IsFalse(memoryStream.CanRead); // Disposed - } - - [Test] - public void Dispose_WithLeaveOpen() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanRead); - using (var cis = new CodedInputStream(memoryStream, true)) - { - } - Assert.IsTrue(memoryStream.CanRead); // We left the stream open - } - - [Test] - public void Dispose_FromByteArray() - { - var stream = new CodedInputStream(new byte[10]); - stream.Dispose(); - } - - [Test] - public void TestParseMessagesCloseTo2G() - { - byte[] serializedMessage = GenerateBigSerializedMessage(); - // How many of these big messages do we need to take us near our 2GB limit? - int count = Int32.MaxValue / serializedMessage.Length; - // Now make a MemoryStream that will fake a near-2GB stream of messages by returning - // our big serialized message 'count' times. - using (RepeatingMemoryStream stream = new RepeatingMemoryStream(serializedMessage, count)) - { - Assert.DoesNotThrow(()=>TestAllTypes.Parser.ParseFrom(stream)); - } - } - - [Test] - public void TestParseMessagesOver2G() - { - byte[] serializedMessage = GenerateBigSerializedMessage(); - // How many of these big messages do we need to take us near our 2GB limit? - int count = Int32.MaxValue / serializedMessage.Length; - // Now add one to take us over the 2GB limit - count++; - // Now make a MemoryStream that will fake a near-2GB stream of messages by returning - // our big serialized message 'count' times. - using (RepeatingMemoryStream stream = new RepeatingMemoryStream(serializedMessage, count)) - { - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(stream), - "Protocol message was too large. May be malicious. " + - "Use CodedInputStream.SetSizeLimit() to increase the size limit."); - } - } - - /// A serialized big message - private static byte[] GenerateBigSerializedMessage() - { - byte[] value = new byte[16 * 1024 * 1024]; - TestAllTypes message = SampleMessages.CreateFullTestAllTypes(); - message.SingleBytes = ByteString.CopyFrom(value); - return message.ToByteArray(); - } - - /// - /// A MemoryStream that repeats a byte arrays' content a number of times. - /// Simulates really large input without consuming loads of memory. Used above - /// to test the parsing behavior when the input size exceeds 2GB or close to it. - /// - private class RepeatingMemoryStream: MemoryStream - { - private readonly byte[] bytes; - private readonly int maxIterations; - private int index = 0; - - public RepeatingMemoryStream(byte[] bytes, int maxIterations) - { - this.bytes = bytes; - this.maxIterations = maxIterations; - } - - public override int Read(byte[] buffer, int offset, int count) - { - if (bytes.Length == 0) - { - return 0; - } - int numBytesCopiedTotal = 0; - while (numBytesCopiedTotal < count && index < maxIterations) - { - int numBytesToCopy = Math.Min(bytes.Length - (int)Position, count); - Array.Copy(bytes, (int)Position, buffer, offset, numBytesToCopy); - numBytesCopiedTotal += numBytesToCopy; - offset += numBytesToCopy; - count -= numBytesCopiedTotal; - Position += numBytesToCopy; - if (Position >= bytes.Length) - { - Position = 0; - index++; - } - } - return numBytesCopiedTotal; - } - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedOutputStreamTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedOutputStreamTest.cs deleted file mode 100644 index 98cabd5..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/CodedOutputStreamTest.cs +++ /dev/null @@ -1,426 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class CodedOutputStreamTest - { - /// - /// Writes the given value using WriteRawVarint32() and WriteRawVarint64() and - /// checks that the result matches the given bytes - /// - private static void AssertWriteVarint(byte[] data, ulong value) - { - // Only do 32-bit write if the value fits in 32 bits. - if ((value >> 32) == 0) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawVarint32((uint) value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - // Also try computing size. - Assert.AreEqual(data.Length, CodedOutputStream.ComputeRawVarint32Size((uint) value)); - } - - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawVarint64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Also try computing size. - Assert.AreEqual(data.Length, CodedOutputStream.ComputeRawVarint64Size(value)); - } - - // Try different buffer sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - // Only do 32-bit write if the value fits in 32 bits. - if ((value >> 32) == 0) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = - new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawVarint32((uint) value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawVarint64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - } - - /// - /// Tests WriteRawVarint32() and WriteRawVarint64() - /// - [Test] - public void WriteVarint() - { - AssertWriteVarint(new byte[] {0x00}, 0); - AssertWriteVarint(new byte[] {0x01}, 1); - AssertWriteVarint(new byte[] {0x7f}, 127); - // 14882 - AssertWriteVarint(new byte[] {0xa2, 0x74}, (0x22 << 0) | (0x74 << 7)); - // 2961488830 - AssertWriteVarint(new byte[] {0xbe, 0xf7, 0x92, 0x84, 0x0b}, - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x0bL << 28)); - - // 64-bit - // 7256456126 - AssertWriteVarint(new byte[] {0xbe, 0xf7, 0x92, 0x84, 0x1b}, - (0x3e << 0) | (0x77 << 7) | (0x12 << 14) | (0x04 << 21) | - (0x1bL << 28)); - // 41256202580718336 - AssertWriteVarint( - new byte[] {0x80, 0xe6, 0xeb, 0x9c, 0xc3, 0xc9, 0xa4, 0x49}, - (0x00 << 0) | (0x66 << 7) | (0x6b << 14) | (0x1c << 21) | - (0x43UL << 28) | (0x49L << 35) | (0x24UL << 42) | (0x49UL << 49)); - // 11964378330978735131 - AssertWriteVarint( - new byte[] {0x9b, 0xa8, 0xf9, 0xc2, 0xbb, 0xd6, 0x80, 0x85, 0xa6, 0x01}, - unchecked((ulong) - ((0x1b << 0) | (0x28 << 7) | (0x79 << 14) | (0x42 << 21) | - (0x3bL << 28) | (0x56L << 35) | (0x00L << 42) | - (0x05L << 49) | (0x26L << 56) | (0x01L << 63)))); - } - - /// - /// Parses the given bytes using WriteRawLittleEndian32() and checks - /// that the result matches the given value. - /// - private static void AssertWriteLittleEndian32(byte[] data, uint value) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawLittleEndian32(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Try different buffer sizes. - for (int bufferSize = 1; bufferSize <= 16; bufferSize *= 2) - { - rawOutput = new MemoryStream(); - output = new CodedOutputStream(rawOutput, bufferSize); - output.WriteRawLittleEndian32(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - - /// - /// Parses the given bytes using WriteRawLittleEndian64() and checks - /// that the result matches the given value. - /// - private static void AssertWriteLittleEndian64(byte[] data, ulong value) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput); - output.WriteRawLittleEndian64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - - // Try different block sizes. - for (int blockSize = 1; blockSize <= 16; blockSize *= 2) - { - rawOutput = new MemoryStream(); - output = new CodedOutputStream(rawOutput, blockSize); - output.WriteRawLittleEndian64(value); - output.Flush(); - Assert.AreEqual(data, rawOutput.ToArray()); - } - } - - /// - /// Tests writeRawLittleEndian32() and writeRawLittleEndian64(). - /// - [Test] - public void WriteLittleEndian() - { - AssertWriteLittleEndian32(new byte[] {0x78, 0x56, 0x34, 0x12}, 0x12345678); - AssertWriteLittleEndian32(new byte[] {0xf0, 0xde, 0xbc, 0x9a}, 0x9abcdef0); - - AssertWriteLittleEndian64( - new byte[] {0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12}, - 0x123456789abcdef0L); - AssertWriteLittleEndian64( - new byte[] {0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a}, - 0x9abcdef012345678UL); - } - - [Test] - public void WriteWholeMessage_VaryingBlockSizes() - { - TestAllTypes message = SampleMessages.CreateFullTestAllTypes(); - - byte[] rawBytes = message.ToByteArray(); - - // Try different block sizes. - for (int blockSize = 1; blockSize < 256; blockSize *= 2) - { - MemoryStream rawOutput = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(rawOutput, blockSize); - message.WriteTo(output); - output.Flush(); - Assert.AreEqual(rawBytes, rawOutput.ToArray()); - } - } - - [Test] - public void EncodeZigZag32() - { - Assert.AreEqual(0u, CodedOutputStream.EncodeZigZag32(0)); - Assert.AreEqual(1u, CodedOutputStream.EncodeZigZag32(-1)); - Assert.AreEqual(2u, CodedOutputStream.EncodeZigZag32(1)); - Assert.AreEqual(3u, CodedOutputStream.EncodeZigZag32(-2)); - Assert.AreEqual(0x7FFFFFFEu, CodedOutputStream.EncodeZigZag32(0x3FFFFFFF)); - Assert.AreEqual(0x7FFFFFFFu, CodedOutputStream.EncodeZigZag32(unchecked((int) 0xC0000000))); - Assert.AreEqual(0xFFFFFFFEu, CodedOutputStream.EncodeZigZag32(0x7FFFFFFF)); - Assert.AreEqual(0xFFFFFFFFu, CodedOutputStream.EncodeZigZag32(unchecked((int) 0x80000000))); - } - - [Test] - public void EncodeZigZag64() - { - Assert.AreEqual(0u, CodedOutputStream.EncodeZigZag64(0)); - Assert.AreEqual(1u, CodedOutputStream.EncodeZigZag64(-1)); - Assert.AreEqual(2u, CodedOutputStream.EncodeZigZag64(1)); - Assert.AreEqual(3u, CodedOutputStream.EncodeZigZag64(-2)); - Assert.AreEqual(0x000000007FFFFFFEuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x000000003FFFFFFFUL))); - Assert.AreEqual(0x000000007FFFFFFFuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0xFFFFFFFFC0000000UL))); - Assert.AreEqual(0x00000000FFFFFFFEuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x000000007FFFFFFFUL))); - Assert.AreEqual(0x00000000FFFFFFFFuL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0xFFFFFFFF80000000UL))); - Assert.AreEqual(0xFFFFFFFFFFFFFFFEL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x7FFFFFFFFFFFFFFFUL))); - Assert.AreEqual(0xFFFFFFFFFFFFFFFFL, - CodedOutputStream.EncodeZigZag64(unchecked((long) 0x8000000000000000UL))); - } - - [Test] - public void RoundTripZigZag32() - { - // Some easier-to-verify round-trip tests. The inputs (other than 0, 1, -1) - // were chosen semi-randomly via keyboard bashing. - Assert.AreEqual(0, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(0))); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(1))); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(-1))); - Assert.AreEqual(14927, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(14927))); - Assert.AreEqual(-3612, CodedInputStream.DecodeZigZag32(CodedOutputStream.EncodeZigZag32(-3612))); - } - - [Test] - public void RoundTripZigZag64() - { - Assert.AreEqual(0, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(0))); - Assert.AreEqual(1, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(1))); - Assert.AreEqual(-1, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-1))); - Assert.AreEqual(14927, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(14927))); - Assert.AreEqual(-3612, CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-3612))); - - Assert.AreEqual(856912304801416L, - CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(856912304801416L))); - Assert.AreEqual(-75123905439571256L, - CodedInputStream.DecodeZigZag64(CodedOutputStream.EncodeZigZag64(-75123905439571256L))); - } - - [Test] - public void TestNegativeEnumNoTag() - { - Assert.AreEqual(10, CodedOutputStream.ComputeInt32Size(-2)); - Assert.AreEqual(10, CodedOutputStream.ComputeEnumSize((int) SampleEnum.NegativeValue)); - - byte[] bytes = new byte[10]; - CodedOutputStream output = new CodedOutputStream(bytes); - output.WriteEnum((int) SampleEnum.NegativeValue); - - Assert.AreEqual(0, output.SpaceLeft); - Assert.AreEqual("FE-FF-FF-FF-FF-FF-FF-FF-FF-01", BitConverter.ToString(bytes)); - } - - [Test] - public void TestCodedInputOutputPosition() - { - byte[] content = new byte[110]; - for (int i = 0; i < content.Length; i++) - content[i] = (byte)i; - - byte[] child = new byte[120]; - { - MemoryStream ms = new MemoryStream(child); - CodedOutputStream cout = new CodedOutputStream(ms, 20); - // Field 11: numeric value: 500 - cout.WriteTag(11, WireFormat.WireType.Varint); - Assert.AreEqual(1, cout.Position); - cout.WriteInt32(500); - Assert.AreEqual(3, cout.Position); - //Field 12: length delimited 120 bytes - cout.WriteTag(12, WireFormat.WireType.LengthDelimited); - Assert.AreEqual(4, cout.Position); - cout.WriteBytes(ByteString.CopyFrom(content)); - Assert.AreEqual(115, cout.Position); - // Field 13: fixed numeric value: 501 - cout.WriteTag(13, WireFormat.WireType.Fixed32); - Assert.AreEqual(116, cout.Position); - cout.WriteSFixed32(501); - Assert.AreEqual(120, cout.Position); - cout.Flush(); - } - - byte[] bytes = new byte[130]; - { - CodedOutputStream cout = new CodedOutputStream(bytes); - // Field 1: numeric value: 500 - cout.WriteTag(1, WireFormat.WireType.Varint); - Assert.AreEqual(1, cout.Position); - cout.WriteInt32(500); - Assert.AreEqual(3, cout.Position); - //Field 2: length delimited 120 bytes - cout.WriteTag(2, WireFormat.WireType.LengthDelimited); - Assert.AreEqual(4, cout.Position); - cout.WriteBytes(ByteString.CopyFrom(child)); - Assert.AreEqual(125, cout.Position); - // Field 3: fixed numeric value: 500 - cout.WriteTag(3, WireFormat.WireType.Fixed32); - Assert.AreEqual(126, cout.Position); - cout.WriteSFixed32(501); - Assert.AreEqual(130, cout.Position); - cout.Flush(); - } - // Now test Input stream: - { - CodedInputStream cin = new CodedInputStream(new MemoryStream(bytes), new byte[50], 0, 0, false); - Assert.AreEqual(0, cin.Position); - // Field 1: - uint tag = cin.ReadTag(); - Assert.AreEqual(1, tag >> 3); - Assert.AreEqual(1, cin.Position); - Assert.AreEqual(500, cin.ReadInt32()); - Assert.AreEqual(3, cin.Position); - //Field 2: - tag = cin.ReadTag(); - Assert.AreEqual(2, tag >> 3); - Assert.AreEqual(4, cin.Position); - int childlen = cin.ReadLength(); - Assert.AreEqual(120, childlen); - Assert.AreEqual(5, cin.Position); - int oldlimit = cin.PushLimit((int)childlen); - Assert.AreEqual(5, cin.Position); - // Now we are reading child message - { - // Field 11: numeric value: 500 - tag = cin.ReadTag(); - Assert.AreEqual(11, tag >> 3); - Assert.AreEqual(6, cin.Position); - Assert.AreEqual(500, cin.ReadInt32()); - Assert.AreEqual(8, cin.Position); - //Field 12: length delimited 120 bytes - tag = cin.ReadTag(); - Assert.AreEqual(12, tag >> 3); - Assert.AreEqual(9, cin.Position); - ByteString bstr = cin.ReadBytes(); - Assert.AreEqual(110, bstr.Length); - Assert.AreEqual((byte) 109, bstr[109]); - Assert.AreEqual(120, cin.Position); - // Field 13: fixed numeric value: 501 - tag = cin.ReadTag(); - Assert.AreEqual(13, tag >> 3); - // ROK - Previously broken here, this returned 126 failing to account for bufferSizeAfterLimit - Assert.AreEqual(121, cin.Position); - Assert.AreEqual(501, cin.ReadSFixed32()); - Assert.AreEqual(125, cin.Position); - Assert.IsTrue(cin.IsAtEnd); - } - cin.PopLimit(oldlimit); - Assert.AreEqual(125, cin.Position); - // Field 3: fixed numeric value: 501 - tag = cin.ReadTag(); - Assert.AreEqual(3, tag >> 3); - Assert.AreEqual(126, cin.Position); - Assert.AreEqual(501, cin.ReadSFixed32()); - Assert.AreEqual(130, cin.Position); - Assert.IsTrue(cin.IsAtEnd); - } - } - - [Test] - public void Dispose_DisposesUnderlyingStream() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanWrite); - using (var cos = new CodedOutputStream(memoryStream)) - { - cos.WriteRawByte(0); - Assert.AreEqual(0, memoryStream.Position); // Not flushed yet - } - Assert.AreEqual(1, memoryStream.ToArray().Length); // Flushed data from CodedOutputStream to MemoryStream - Assert.IsFalse(memoryStream.CanWrite); // Disposed - } - - [Test] - public void Dispose_WithLeaveOpen() - { - var memoryStream = new MemoryStream(); - Assert.IsTrue(memoryStream.CanWrite); - using (var cos = new CodedOutputStream(memoryStream, true)) - { - cos.WriteRawByte(0); - Assert.AreEqual(0, memoryStream.Position); // Not flushed yet - } - Assert.AreEqual(1, memoryStream.Position); // Flushed data from CodedOutputStream to MemoryStream - Assert.IsTrue(memoryStream.CanWrite); // We left the stream open - } - - [Test] - public void Dispose_FromByteArray() - { - var stream = new CodedOutputStream(new byte[10]); - stream.Dispose(); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs deleted file mode 100644 index f64ebac..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/MapFieldTest.cs +++ /dev/null @@ -1,607 +0,0 @@ -#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.Generic; -using Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.Linq; - -namespace Google.Protobuf.Collections -{ - /// - /// Tests for MapField which aren't reliant on the encoded format - - /// tests for serialization/deserialization are part of GeneratedMessageTest. - /// - public class MapFieldTest - { - [Test] - public void Clone_ClonesMessages() - { - var message = new ForeignMessage { C = 20 }; - var map = new MapField { { "x", message } }; - var clone = map.Clone(); - map["x"].C = 30; - Assert.AreEqual(20, clone["x"].C); - } - - [Test] - public void NullValuesProhibited() - { - TestNullValues(0); - TestNullValues(""); - TestNullValues(new TestAllTypes()); - } - - private void TestNullValues(T nonNullValue) - { - var map = new MapField(); - var nullValue = (T) (object) null; - Assert.Throws(() => map.Add(0, nullValue)); - Assert.Throws(() => map[0] = nullValue); - map.Add(1, nonNullValue); - map[1] = nonNullValue; - } - - [Test] - public void Add_ForbidsNullKeys() - { - var map = new MapField(); - Assert.Throws(() => map.Add(null, new ForeignMessage())); - } - - [Test] - public void Indexer_ForbidsNullKeys() - { - var map = new MapField(); - Assert.Throws(() => map[null] = new ForeignMessage()); - } - - [Test] - public void AddPreservesInsertionOrder() - { - var map = new MapField(); - map.Add("a", "v1"); - map.Add("b", "v2"); - map.Add("c", "v3"); - map.Remove("b"); - map.Add("d", "v4"); - CollectionAssert.AreEqual(new[] { "a", "c", "d" }, map.Keys); - CollectionAssert.AreEqual(new[] { "v1", "v3", "v4" }, map.Values); - } - - [Test] - public void EqualityIsOrderInsensitive() - { - var map1 = new MapField(); - map1.Add("a", "v1"); - map1.Add("b", "v2"); - - var map2 = new MapField(); - map2.Add("b", "v2"); - map2.Add("a", "v1"); - - EqualityTester.AssertEquality(map1, map2); - } - - [Test] - public void EqualityIsKeySensitive() - { - var map1 = new MapField(); - map1.Add("first key", "v1"); - map1.Add("second key", "v2"); - - var map2 = new MapField(); - map2.Add("third key", "v1"); - map2.Add("fourth key", "v2"); - - EqualityTester.AssertInequality(map1, map2); - } - - [Test] - public void Equality_Simple() - { - var map = new MapField(); - EqualityTester.AssertEquality(map, map); - EqualityTester.AssertInequality(map, null); - Assert.IsFalse(map.Equals(new object())); - } - - [Test] - public void EqualityIsValueSensitive() - { - // Note: Without some care, it's a little easier than one might - // hope to see hash collisions, but only in some environments... - var map1 = new MapField(); - map1.Add("a", "first value"); - map1.Add("b", "second value"); - - var map2 = new MapField(); - map2.Add("a", "third value"); - map2.Add("b", "fourth value"); - - EqualityTester.AssertInequality(map1, map2); - } - - [Test] - public void Add_Dictionary() - { - var map1 = new MapField - { - { "x", "y" }, - { "a", "b" } - }; - var map2 = new MapField - { - { "before", "" }, - map1, - { "after", "" } - }; - var expected = new MapField - { - { "before", "" }, - { "x", "y" }, - { "a", "b" }, - { "after", "" } - }; - Assert.AreEqual(expected, map2); - CollectionAssert.AreEqual(new[] { "before", "x", "a", "after" }, map2.Keys); - } - - // General IDictionary behavior tests - [Test] - public void Add_KeyAlreadyExists() - { - var map = new MapField(); - map.Add("foo", "bar"); - Assert.Throws(() => map.Add("foo", "baz")); - } - - [Test] - public void Add_Pair() - { - var map = new MapField(); - ICollection> collection = map; - collection.Add(NewKeyValuePair("x", "y")); - Assert.AreEqual("y", map["x"]); - Assert.Throws(() => collection.Add(NewKeyValuePair("x", "z"))); - } - - [Test] - public void Contains_Pair() - { - var map = new MapField { { "x", "y" } }; - ICollection> collection = map; - Assert.IsTrue(collection.Contains(NewKeyValuePair("x", "y"))); - Assert.IsFalse(collection.Contains(NewKeyValuePair("x", "z"))); - Assert.IsFalse(collection.Contains(NewKeyValuePair("z", "y"))); - } - - [Test] - public void Remove_Key() - { - var map = new MapField(); - map.Add("foo", "bar"); - Assert.AreEqual(1, map.Count); - Assert.IsFalse(map.Remove("missing")); - Assert.AreEqual(1, map.Count); - Assert.IsTrue(map.Remove("foo")); - Assert.AreEqual(0, map.Count); - Assert.Throws(() => map.Remove(null)); - } - - [Test] - public void Remove_Pair() - { - var map = new MapField(); - map.Add("foo", "bar"); - ICollection> collection = map; - Assert.AreEqual(1, map.Count); - Assert.IsFalse(collection.Remove(NewKeyValuePair("wrong key", "bar"))); - Assert.AreEqual(1, map.Count); - Assert.IsFalse(collection.Remove(NewKeyValuePair("foo", "wrong value"))); - Assert.AreEqual(1, map.Count); - Assert.IsTrue(collection.Remove(NewKeyValuePair("foo", "bar"))); - Assert.AreEqual(0, map.Count); - Assert.Throws(() => collection.Remove(new KeyValuePair(null, ""))); - } - - [Test] - public void CopyTo_Pair() - { - var map = new MapField(); - map.Add("foo", "bar"); - ICollection> collection = map; - KeyValuePair[] array = new KeyValuePair[3]; - collection.CopyTo(array, 1); - Assert.AreEqual(NewKeyValuePair("foo", "bar"), array[1]); - } - - [Test] - public void Clear() - { - var map = new MapField { { "x", "y" } }; - Assert.AreEqual(1, map.Count); - map.Clear(); - Assert.AreEqual(0, map.Count); - map.Add("x", "y"); - Assert.AreEqual(1, map.Count); - } - - [Test] - public void Indexer_Get() - { - var map = new MapField { { "x", "y" } }; - Assert.AreEqual("y", map["x"]); - Assert.Throws(() => { var ignored = map["z"]; }); - } - - [Test] - public void Indexer_Set() - { - var map = new MapField(); - map["x"] = "y"; - Assert.AreEqual("y", map["x"]); - map["x"] = "z"; // This won't throw, unlike Add. - Assert.AreEqual("z", map["x"]); - } - - [Test] - public void GetEnumerator_NonGeneric() - { - IEnumerable map = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { new KeyValuePair("x", "y") }, - map.Cast().ToList()); - } - - // Test for the explicitly-implemented non-generic IDictionary interface - [Test] - public void IDictionary_GetEnumerator() - { - IDictionary map = new MapField { { "x", "y" } }; - var enumerator = map.GetEnumerator(); - - // Commented assertions show an ideal situation - it looks like - // the LinkedList enumerator doesn't throw when you ask for the current entry - // at an inappropriate time; fixing this would be more work than it's worth. - // Assert.Throws(() => enumerator.Current.GetHashCode()); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("x", enumerator.Key); - Assert.AreEqual("y", enumerator.Value); - Assert.AreEqual(new DictionaryEntry("x", "y"), enumerator.Current); - Assert.AreEqual(new DictionaryEntry("x", "y"), enumerator.Entry); - Assert.IsFalse(enumerator.MoveNext()); - // Assert.Throws(() => enumerator.Current.GetHashCode()); - enumerator.Reset(); - // Assert.Throws(() => enumerator.Current.GetHashCode()); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("x", enumerator.Key); // Assume the rest are okay - } - - [Test] - public void IDictionary_Add() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - dictionary.Add("a", "b"); - Assert.AreEqual("b", map["a"]); - Assert.Throws(() => dictionary.Add("a", "duplicate")); - Assert.Throws(() => dictionary.Add(new object(), "key is bad")); - Assert.Throws(() => dictionary.Add("value is bad", new object())); - } - - [Test] - public void IDictionary_Contains() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - - Assert.IsFalse(dictionary.Contains("a")); - Assert.IsFalse(dictionary.Contains(5)); - // Surprising, but IDictionary.Contains is only about keys. - Assert.IsFalse(dictionary.Contains(new DictionaryEntry("x", "y"))); - Assert.IsTrue(dictionary.Contains("x")); - } - - [Test] - public void IDictionary_Remove() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - dictionary.Remove("a"); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove(5); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove(new DictionaryEntry("x", "y")); - Assert.AreEqual(1, dictionary.Count); - dictionary.Remove("x"); - Assert.AreEqual(0, dictionary.Count); - Assert.Throws(() => dictionary.Remove(null)); - } - - [Test] - public void IDictionary_CopyTo() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - var array = new DictionaryEntry[3]; - dictionary.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { default(DictionaryEntry), new DictionaryEntry("x", "y"), default(DictionaryEntry) }, - array); - var objectArray = new object[3]; - dictionary.CopyTo(objectArray, 1); - CollectionAssert.AreEqual(new object[] { null, new DictionaryEntry("x", "y"), null }, - objectArray); - } - - [Test] - public void IDictionary_IsFixedSize() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - Assert.IsFalse(dictionary.IsFixedSize); - } - - [Test] - public void IDictionary_Keys() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { "x" }, dictionary.Keys); - } - - [Test] - public void IDictionary_Values() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - CollectionAssert.AreEqual(new[] { "y" }, dictionary.Values); - } - - [Test] - public void IDictionary_IsSynchronized() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.IsFalse(dictionary.IsSynchronized); - } - - [Test] - public void IDictionary_SyncRoot() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.AreSame(dictionary, dictionary.SyncRoot); - } - - [Test] - public void IDictionary_Indexer_Get() - { - IDictionary dictionary = new MapField { { "x", "y" } }; - Assert.AreEqual("y", dictionary["x"]); - Assert.IsNull(dictionary["a"]); - Assert.IsNull(dictionary[5]); - Assert.Throws(() => dictionary[null].GetHashCode()); - } - - [Test] - public void IDictionary_Indexer_Set() - { - var map = new MapField { { "x", "y" } }; - IDictionary dictionary = map; - map["a"] = "b"; - Assert.AreEqual("b", map["a"]); - map["a"] = "c"; - Assert.AreEqual("c", map["a"]); - Assert.Throws(() => dictionary[5] = "x"); - Assert.Throws(() => dictionary["x"] = 5); - Assert.Throws(() => dictionary[null] = "z"); - Assert.Throws(() => dictionary["x"] = null); - } - - [Test] - public void KeysReturnsLiveView() - { - var map = new MapField(); - var keys = map.Keys; - CollectionAssert.AreEqual(new string[0], keys); - map["foo"] = "bar"; - map["x"] = "y"; - CollectionAssert.AreEqual(new[] { "foo", "x" }, keys); - } - - [Test] - public void ValuesReturnsLiveView() - { - var map = new MapField(); - var values = map.Values; - CollectionAssert.AreEqual(new string[0], values); - map["foo"] = "bar"; - map["x"] = "y"; - CollectionAssert.AreEqual(new[] { "bar", "y" }, values); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void ViewsAreReadOnly() - { - var map = new MapField(); - var keys = map.Keys; - Assert.IsTrue(keys.IsReadOnly); - Assert.Throws(() => keys.Clear()); - Assert.Throws(() => keys.Remove("a")); - Assert.Throws(() => keys.Add("a")); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void ViewCopyTo() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var keys = map.Keys; - var array = new string[4]; - Assert.Throws(() => keys.CopyTo(array, 3)); - Assert.Throws(() => keys.CopyTo(array, -1)); - keys.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { null, "foo", "x", null }, array); - } - - // Just test keys - we know the implementation is the same for values - [Test] - public void NonGenericViewCopyTo() - { - IDictionary map = new MapField { { "foo", "bar" }, { "x", "y" } }; - ICollection keys = map.Keys; - // Note the use of the Array type here rather than string[] - Array array = new string[4]; - Assert.Throws(() => keys.CopyTo(array, 3)); - Assert.Throws(() => keys.CopyTo(array, -1)); - keys.CopyTo(array, 1); - CollectionAssert.AreEqual(new[] { null, "foo", "x", null }, array); - } - - [Test] - public void KeysContains() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var keys = map.Keys; - Assert.IsTrue(keys.Contains("foo")); - Assert.IsFalse(keys.Contains("bar")); // It's a value! - Assert.IsFalse(keys.Contains("1")); - // Keys can't be null, so we should prevent contains check - Assert.Throws(() => keys.Contains(null)); - } - - [Test] - public void KeysCopyTo() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var keys = map.Keys.ToArray(); // Uses CopyTo internally - CollectionAssert.AreEquivalent(new[] { "foo", "x" }, keys); - } - - [Test] - public void ValuesContains() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var values = map.Values; - Assert.IsTrue(values.Contains("bar")); - Assert.IsFalse(values.Contains("foo")); // It's a key! - Assert.IsFalse(values.Contains("1")); - // Values can be null, so this makes sense - Assert.IsFalse(values.Contains(null)); - } - - [Test] - public void ValuesCopyTo() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - var values = map.Values.ToArray(); // Uses CopyTo internally - CollectionAssert.AreEquivalent(new[] { "bar", "y" }, values); - } - - [Test] - public void ToString_StringToString() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - Assert.AreEqual("{ \"foo\": \"bar\", \"x\": \"y\" }", map.ToString()); - } - - [Test] - public void ToString_UnsupportedKeyType() - { - var map = new MapField { { 10, "foo" } }; - Assert.Throws(() => map.ToString()); - } - - [Test] - public void NaNValuesComparedBitwise() - { - var map1 = new MapField - { - { "x", SampleNaNs.Regular }, - { "y", SampleNaNs.SignallingFlipped } - }; - - var map2 = new MapField - { - { "x", SampleNaNs.Regular }, - { "y", SampleNaNs.PayloadFlipped } - }; - - var map3 = new MapField - { - { "x", SampleNaNs.Regular }, - { "y", SampleNaNs.SignallingFlipped } - }; - - EqualityTester.AssertInequality(map1, map2); - EqualityTester.AssertEquality(map1, map3); - Assert.True(map1.Values.Contains(SampleNaNs.SignallingFlipped)); - Assert.False(map2.Values.Contains(SampleNaNs.SignallingFlipped)); - } - - // This wouldn't usually happen, as protos can't use doubles as map keys, - // but let's be consistent. - [Test] - public void NaNKeysComparedBitwise() - { - var map = new MapField - { - { SampleNaNs.Regular, "x" }, - { SampleNaNs.SignallingFlipped, "y" } - }; - Assert.AreEqual("x", map[SampleNaNs.Regular]); - Assert.AreEqual("y", map[SampleNaNs.SignallingFlipped]); - string ignored; - Assert.False(map.TryGetValue(SampleNaNs.PayloadFlipped, out ignored)); - } - -#if !NET35 - [Test] - public void IDictionaryKeys_Equals_IReadOnlyDictionaryKeys() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - CollectionAssert.AreEquivalent(((IDictionary)map).Keys, ((IReadOnlyDictionary)map).Keys); - } - - [Test] - public void IDictionaryValues_Equals_IReadOnlyDictionaryValues() - { - var map = new MapField { { "foo", "bar" }, { "x", "y" } }; - CollectionAssert.AreEquivalent(((IDictionary)map).Values, ((IReadOnlyDictionary)map).Values); - } -#endif - - private static KeyValuePair NewKeyValuePair(TKey key, TValue value) - { - return new KeyValuePair(key, value); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/ProtobufEqualityComparersTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/ProtobufEqualityComparersTest.cs deleted file mode 100644 index 594a879..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/ProtobufEqualityComparersTest.cs +++ /dev/null @@ -1,124 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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 NUnit.Framework; -using System.Collections.Generic; -using System.Linq; -using static Google.Protobuf.Collections.ProtobufEqualityComparers; - -namespace Google.Protobuf.Collections -{ - public class ProtobufEqualityComparersTest - { - private static readonly double[] doubles = - { - 0, - 1, - 1.5, - -1.5, - double.PositiveInfinity, - double.NegativeInfinity, - // Three different types of NaN... - SampleNaNs.Regular, - SampleNaNs.SignallingFlipped, - SampleNaNs.PayloadFlipped - }; - - [Test] - public void GetEqualityComparer_Default() - { - // It's more pain than it's worth to try to parameterize these tests. - Assert.AreSame(EqualityComparer.Default, GetEqualityComparer()); - Assert.AreSame(EqualityComparer.Default, GetEqualityComparer()); - Assert.AreSame(EqualityComparer.Default, GetEqualityComparer()); - Assert.AreSame(EqualityComparer.Default, GetEqualityComparer()); - } - - [Test] - public void GetEqualityComparer_NotDefault() - { - // It's more pain than it's worth to try to parameterize these tests. - Assert.AreSame(BitwiseDoubleEqualityComparer, GetEqualityComparer()); - Assert.AreSame(BitwiseSingleEqualityComparer, GetEqualityComparer()); - Assert.AreSame(BitwiseNullableDoubleEqualityComparer, GetEqualityComparer()); - Assert.AreSame(BitwiseNullableSingleEqualityComparer, GetEqualityComparer()); - } - - [Test] - public void DoubleComparisons() - { - ValidateEqualityComparer(BitwiseDoubleEqualityComparer, doubles); - } - - [Test] - public void NullableDoubleComparisons() - { - ValidateEqualityComparer(BitwiseNullableDoubleEqualityComparer, doubles.Select(d => (double?) d).Concat(new double?[] { null })); - } - - [Test] - public void SingleComparisons() - { - ValidateEqualityComparer(BitwiseSingleEqualityComparer, doubles.Select(d => (float) d)); - } - - [Test] - public void NullableSingleComparisons() - { - ValidateEqualityComparer(BitwiseNullableSingleEqualityComparer, doubles.Select(d => (float?) d).Concat(new float?[] { null })); - } - - private static void ValidateEqualityComparer(EqualityComparer comparer, IEnumerable values) - { - var array = values.ToArray(); - // Each value should be equal to itself, but not to any other value. - for (int i = 0; i < array.Length; i++) - { - for (int j = 0; j < array.Length; j++) - { - if (i == j) - { - Assert.IsTrue(comparer.Equals(array[i], array[j]), - "{0} should be equal to itself", array[i], array[j]); - } - else - { - Assert.IsFalse(comparer.Equals(array[i], array[j]), - "{0} and {1} should not be equal", array[i], array[j]); - Assert.AreNotEqual(comparer.GetHashCode(array[i]), comparer.GetHashCode(array[j]), - "Hash codes for {0} and {1} should not be equal", array[i], array[j]); - } - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs deleted file mode 100644 index b3863a4..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Collections/RepeatedFieldTest.cs +++ /dev/null @@ -1,760 +0,0 @@ -#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.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; - -namespace Google.Protobuf.Collections -{ - public class RepeatedFieldTest - { - [Test] - public void NullValuesRejected() - { - var list = new RepeatedField(); - Assert.Throws(() => list.Add((string)null)); - Assert.Throws(() => list.Add((IEnumerable)null)); - Assert.Throws(() => list.Add((RepeatedField)null)); - Assert.Throws(() => list.Contains(null)); - Assert.Throws(() => list.IndexOf(null)); - } - - [Test] - public void Add_SingleItem() - { - var list = new RepeatedField(); - list.Add("foo"); - Assert.AreEqual(1, list.Count); - Assert.AreEqual("foo", list[0]); - } - - [Test] - public void Add_Sequence() - { - var list = new RepeatedField(); - list.Add(new[] { "foo", "bar" }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_SlowPath() - { - var list = new RepeatedField(); - list.AddRange(new[] { "foo", "bar" }.Select(x => x)); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_SlowPath_NullsProhibited_ReferenceType() - { - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new[] { "foo", null }.Select(x => x))); - } - - [Test] - public void AddRange_SlowPath_NullsProhibited_NullableValueType() - { - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new[] { 20, (int?)null }.Select(x => x))); - } - - [Test] - public void AddRange_Optimized_NonNullableValueType() - { - var list = new RepeatedField(); - list.AddRange(new List { 20, 30 }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual(20, list[0]); - Assert.AreEqual(30, list[1]); - } - - [Test] - public void AddRange_Optimized_ReferenceType() - { - var list = new RepeatedField(); - list.AddRange(new List { "foo", "bar" }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual("foo", list[0]); - Assert.AreEqual("bar", list[1]); - } - - [Test] - public void AddRange_Optimized_NullableValueType() - { - var list = new RepeatedField(); - list.AddRange(new List { 20, 30 }); - Assert.AreEqual(2, list.Count); - Assert.AreEqual((int?) 20, list[0]); - Assert.AreEqual((int?) 30, list[1]); - } - - [Test] - public void AddRange_Optimized_NullsProhibited_ReferenceType() - { - // We don't just trust that a collection with a nullable element type doesn't contain nulls - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new List { "foo", null })); - } - - [Test] - public void AddRange_Optimized_NullsProhibited_NullableValueType() - { - // We don't just trust that a collection with a nullable element type doesn't contain nulls - var list = new RepeatedField(); - // It's okay for this to throw ArgumentNullException if necessary. - // It's not ideal, but not awful. - Assert.Catch(() => list.AddRange(new List { 20, null })); - } - - [Test] - public void AddRange_AlreadyNotEmpty() - { - var list = new RepeatedField { 1, 2, 3 }; - list.AddRange(new List { 4, 5, 6 }); - CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, list); - } - - [Test] - public void AddRange_RepeatedField() - { - var list = new RepeatedField { "original" }; - list.AddRange(new RepeatedField { "foo", "bar" }); - Assert.AreEqual(3, list.Count); - Assert.AreEqual("original", list[0]); - Assert.AreEqual("foo", list[1]); - Assert.AreEqual("bar", list[2]); - } - - [Test] - public void RemoveAt_Valid() - { - var list = new RepeatedField { "first", "second", "third" }; - list.RemoveAt(1); - CollectionAssert.AreEqual(new[] { "first", "third" }, list); - // Just check that these don't throw... - list.RemoveAt(list.Count - 1); // Now the count will be 1... - list.RemoveAt(0); - Assert.AreEqual(0, list.Count); - } - - [Test] - public void RemoveAt_Invalid() - { - var list = new RepeatedField { "first", "second", "third" }; - Assert.Throws(() => list.RemoveAt(-1)); - Assert.Throws(() => list.RemoveAt(3)); - } - - [Test] - public void Insert_Valid() - { - var list = new RepeatedField { "first", "second" }; - list.Insert(1, "middle"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second" }, list); - list.Insert(3, "end"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second", "end" }, list); - list.Insert(0, "start"); - CollectionAssert.AreEqual(new[] { "start", "first", "middle", "second", "end" }, list); - } - - [Test] - public void Insert_Invalid() - { - var list = new RepeatedField { "first", "second" }; - Assert.Throws(() => list.Insert(-1, "foo")); - Assert.Throws(() => list.Insert(3, "foo")); - Assert.Throws(() => list.Insert(0, null)); - } - - [Test] - public void Equals_RepeatedField() - { - var list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.Equals((RepeatedField) null)); - Assert.IsTrue(list.Equals(list)); - Assert.IsFalse(list.Equals(new RepeatedField { "first", "third" })); - Assert.IsFalse(list.Equals(new RepeatedField { "first" })); - Assert.IsTrue(list.Equals(new RepeatedField { "first", "second" })); - } - - [Test] - public void Equals_Object() - { - var list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.Equals((object) null)); - Assert.IsTrue(list.Equals((object) list)); - Assert.IsFalse(list.Equals((object) new RepeatedField { "first", "third" })); - Assert.IsFalse(list.Equals((object) new RepeatedField { "first" })); - Assert.IsTrue(list.Equals((object) new RepeatedField { "first", "second" })); - Assert.IsFalse(list.Equals(new object())); - } - - [Test] - public void GetEnumerator_GenericInterface() - { - IEnumerable list = new RepeatedField { "first", "second" }; - // Select gets rid of the optimizations in ToList... - CollectionAssert.AreEqual(new[] { "first", "second" }, list.Select(x => x).ToList()); - } - - [Test] - public void GetEnumerator_NonGenericInterface() - { - IEnumerable list = new RepeatedField { "first", "second" }; - CollectionAssert.AreEqual(new[] { "first", "second" }, list.Cast().ToList()); - } - - [Test] - public void CopyTo() - { - var list = new RepeatedField { "first", "second" }; - string[] stringArray = new string[4]; - list.CopyTo(stringArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, stringArray); - } - - [Test] - public void Indexer_Get() - { - var list = new RepeatedField { "first", "second" }; - Assert.AreEqual("first", list[0]); - Assert.AreEqual("second", list[1]); - Assert.Throws(() => list[-1].GetHashCode()); - Assert.Throws(() => list[2].GetHashCode()); - } - - [Test] - public void Indexer_Set() - { - var list = new RepeatedField { "first", "second" }; - list[0] = "changed"; - Assert.AreEqual("changed", list[0]); - Assert.Throws(() => list[0] = null); - Assert.Throws(() => list[-1] = "bad"); - Assert.Throws(() => list[2] = "bad"); - } - - [Test] - public void Clone_ReturnsMutable() - { - var list = new RepeatedField { 0 }; - var clone = list.Clone(); - clone[0] = 1; - } - - [Test] - public void Enumerator() - { - var list = new RepeatedField { "first", "second" }; - using (var enumerator = list.GetEnumerator()) - { - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("first", enumerator.Current); - Assert.IsTrue(enumerator.MoveNext()); - Assert.AreEqual("second", enumerator.Current); - Assert.IsFalse(enumerator.MoveNext()); - Assert.IsFalse(enumerator.MoveNext()); - } - } - - [Test] - public void AddEntriesFrom_PackedInt32() - { - uint packedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var length = CodedOutputStream.ComputeInt32Size(10) - + CodedOutputStream.ComputeInt32Size(999) - + CodedOutputStream.ComputeInt32Size(-1000); - output.WriteTag(packedTag); - output.WriteRawVarint32((uint) length); - output.WriteInt32(10); - output.WriteInt32(999); - output.WriteInt32(-1000); - output.Flush(); - stream.Position = 0; - - // Deliberately "expecting" a non-packed tag, but we detect that the data is - // actually packed. - uint nonPackedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(packedTag); - field.AddEntriesFrom(input, FieldCodec.ForInt32(nonPackedTag)); - CollectionAssert.AreEqual(new[] { 10, 999, -1000 }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_NonPackedInt32() - { - uint nonPackedTag = WireFormat.MakeTag(10, WireFormat.WireType.Varint); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(nonPackedTag); - output.WriteInt32(10); - output.WriteTag(nonPackedTag); - output.WriteInt32(999); - output.WriteTag(nonPackedTag); - output.WriteInt32(-1000); // Just for variety... - output.Flush(); - stream.Position = 0; - - // Deliberately "expecting" a packed tag, but we detect that the data is - // actually not packed. - uint packedTag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(nonPackedTag); - field.AddEntriesFrom(input, FieldCodec.ForInt32(packedTag)); - CollectionAssert.AreEqual(new[] { 10, 999, -1000 }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_String() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(tag); - output.WriteString("Foo"); - output.WriteTag(tag); - output.WriteString(""); - output.WriteTag(tag); - output.WriteString("Bar"); - output.Flush(); - stream.Position = 0; - - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - field.AddEntriesFrom(input, FieldCodec.ForString(tag)); - CollectionAssert.AreEqual(new[] { "Foo", "", "Bar" }, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void AddEntriesFrom_Message() - { - var message1 = new ForeignMessage { C = 2000 }; - var message2 = new ForeignMessage { C = -250 }; - - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - output.WriteTag(tag); - output.WriteMessage(message1); - output.WriteTag(tag); - output.WriteMessage(message2); - output.Flush(); - stream.Position = 0; - - var field = new RepeatedField(); - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - field.AddEntriesFrom(input, FieldCodec.ForMessage(tag, ForeignMessage.Parser)); - CollectionAssert.AreEqual(new[] { message1, message2}, field); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_PackedInt32() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { 10, 1000, 1000000 }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForInt32(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - var length = input.ReadLength(); - Assert.AreEqual(10, input.ReadInt32()); - Assert.AreEqual(1000, input.ReadInt32()); - Assert.AreEqual(1000000, input.ReadInt32()); - Assert.IsTrue(input.IsAtEnd); - Assert.AreEqual(1 + CodedOutputStream.ComputeLengthSize(length) + length, stream.Length); - } - - [Test] - public void WriteTo_NonPackedInt32() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.Varint); - var field = new RepeatedField { 10, 1000, 1000000}; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForInt32(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual(10, input.ReadInt32()); - input.AssertNextTag(tag); - Assert.AreEqual(1000, input.ReadInt32()); - input.AssertNextTag(tag); - Assert.AreEqual(1000000, input.ReadInt32()); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_String() - { - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { "Foo", "", "Bar" }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForString(tag)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual("Foo", input.ReadString()); - input.AssertNextTag(tag); - Assert.AreEqual("", input.ReadString()); - input.AssertNextTag(tag); - Assert.AreEqual("Bar", input.ReadString()); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void WriteTo_Message() - { - var message1 = new ForeignMessage { C = 20 }; - var message2 = new ForeignMessage { C = 25 }; - uint tag = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited); - var field = new RepeatedField { message1, message2 }; - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - field.WriteTo(output, FieldCodec.ForMessage(tag, ForeignMessage.Parser)); - output.Flush(); - stream.Position = 0; - - var input = new CodedInputStream(stream); - input.AssertNextTag(tag); - Assert.AreEqual(message1, input.ReadMessage(ForeignMessage.Parser)); - input.AssertNextTag(tag); - Assert.AreEqual(message2, input.ReadMessage(ForeignMessage.Parser)); - Assert.IsTrue(input.IsAtEnd); - } - - [Test] - public void CalculateSize_VariableSizeNonPacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.Varint); - // 2 bytes for the first entry, 3 bytes for the second, 2 bytes for the third - Assert.AreEqual(7, list.CalculateSize(FieldCodec.ForInt32(tag))); - } - - [Test] - public void CalculateSize_FixedSizeNonPacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.Fixed32); - // 5 bytes for the each entry - Assert.AreEqual(15, list.CalculateSize(FieldCodec.ForSFixed32(tag))); - } - - [Test] - public void CalculateSize_VariableSizePacked() - { - var list = new RepeatedField { 1, 500, 1}; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - // 1 byte for the tag, 1 byte for the length, - // 1 byte for the first entry, 2 bytes for the second, 1 byte for the third - Assert.AreEqual(6, list.CalculateSize(FieldCodec.ForInt32(tag))); - } - - [Test] - public void CalculateSize_FixedSizePacked() - { - var list = new RepeatedField { 1, 500, 1 }; - var tag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited); - // 1 byte for the tag, 1 byte for the length, 4 bytes per entry - Assert.AreEqual(14, list.CalculateSize(FieldCodec.ForSFixed32(tag))); - } - - [Test] - public void TestNegativeEnumArray() - { - int arraySize = 1 + 1 + (11 * 5); - int msgSize = arraySize; - byte[] bytes = new byte[msgSize]; - CodedOutputStream output = new CodedOutputStream(bytes); - uint tag = WireFormat.MakeTag(8, WireFormat.WireType.Varint); - for (int i = 0; i >= -5; i--) - { - output.WriteTag(tag); - output.WriteEnum(i); - } - - Assert.AreEqual(0, output.SpaceLeft); - - CodedInputStream input = new CodedInputStream(bytes); - tag = input.ReadTag(); - - RepeatedField values = new RepeatedField(); - values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x)); - - Assert.AreEqual(6, values.Count); - Assert.AreEqual(SampleEnum.None, values[0]); - Assert.AreEqual(((SampleEnum)(-1)), values[1]); - Assert.AreEqual(SampleEnum.NegativeValue, values[2]); - Assert.AreEqual(((SampleEnum)(-3)), values[3]); - Assert.AreEqual(((SampleEnum)(-4)), values[4]); - Assert.AreEqual(((SampleEnum)(-5)), values[5]); - } - - - [Test] - public void TestNegativeEnumPackedArray() - { - int arraySize = 1 + (10 * 5); - int msgSize = 1 + 1 + arraySize; - byte[] bytes = new byte[msgSize]; - CodedOutputStream output = new CodedOutputStream(bytes); - // Length-delimited to show we want the packed representation - uint tag = WireFormat.MakeTag(8, WireFormat.WireType.LengthDelimited); - output.WriteTag(tag); - int size = 0; - for (int i = 0; i >= -5; i--) - { - size += CodedOutputStream.ComputeEnumSize(i); - } - output.WriteRawVarint32((uint)size); - for (int i = 0; i >= -5; i--) - { - output.WriteEnum(i); - } - Assert.AreEqual(0, output.SpaceLeft); - - CodedInputStream input = new CodedInputStream(bytes); - tag = input.ReadTag(); - - RepeatedField values = new RepeatedField(); - values.AddEntriesFrom(input, FieldCodec.ForEnum(tag, x => (int)x, x => (SampleEnum)x)); - - Assert.AreEqual(6, values.Count); - Assert.AreEqual(SampleEnum.None, values[0]); - Assert.AreEqual(((SampleEnum)(-1)), values[1]); - Assert.AreEqual(SampleEnum.NegativeValue, values[2]); - Assert.AreEqual(((SampleEnum)(-3)), values[3]); - Assert.AreEqual(((SampleEnum)(-4)), values[4]); - Assert.AreEqual(((SampleEnum)(-5)), values[5]); - } - - // Fairly perfunctory tests for the non-generic IList implementation - [Test] - public void IList_Indexer() - { - var field = new RepeatedField { "first", "second" }; - IList list = field; - Assert.AreEqual("first", list[0]); - list[1] = "changed"; - Assert.AreEqual("changed", field[1]); - } - - [Test] - public void IList_Contains() - { - IList list = new RepeatedField { "first", "second" }; - Assert.IsTrue(list.Contains("second")); - Assert.IsFalse(list.Contains("third")); - Assert.IsFalse(list.Contains(new object())); - } - - [Test] - public void IList_Add() - { - IList list = new RepeatedField { "first", "second" }; - list.Add("third"); - CollectionAssert.AreEqual(new[] { "first", "second", "third" }, list); - } - - [Test] - public void IList_Remove() - { - IList list = new RepeatedField { "first", "second" }; - list.Remove("third"); // No-op, no exception - list.Remove(new object()); // No-op, no exception - list.Remove("first"); - CollectionAssert.AreEqual(new[] { "second" }, list); - } - - [Test] - public void IList_IsFixedSize() - { - var field = new RepeatedField { "first", "second" }; - IList list = field; - Assert.IsFalse(list.IsFixedSize); - } - - [Test] - public void IList_IndexOf() - { - IList list = new RepeatedField { "first", "second" }; - Assert.AreEqual(1, list.IndexOf("second")); - Assert.AreEqual(-1, list.IndexOf("third")); - Assert.AreEqual(-1, list.IndexOf(new object())); - } - - [Test] - public void IList_SyncRoot() - { - IList list = new RepeatedField { "first", "second" }; - Assert.AreSame(list, list.SyncRoot); - } - - [Test] - public void IList_CopyTo() - { - IList list = new RepeatedField { "first", "second" }; - string[] stringArray = new string[4]; - list.CopyTo(stringArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, stringArray); - - object[] objectArray = new object[4]; - list.CopyTo(objectArray, 1); - CollectionAssert.AreEqual(new[] { null, "first", "second", null }, objectArray); - - Assert.Throws(() => list.CopyTo(new StringBuilder[4], 1)); - Assert.Throws(() => list.CopyTo(new int[4], 1)); - } - - [Test] - public void IList_IsSynchronized() - { - IList list = new RepeatedField { "first", "second" }; - Assert.IsFalse(list.IsSynchronized); - } - - [Test] - public void IList_Insert() - { - IList list = new RepeatedField { "first", "second" }; - list.Insert(1, "middle"); - CollectionAssert.AreEqual(new[] { "first", "middle", "second" }, list); - } - - [Test] - public void ToString_Integers() - { - var list = new RepeatedField { 5, 10, 20 }; - var text = list.ToString(); - Assert.AreEqual("[ 5, 10, 20 ]", text); - } - - [Test] - public void ToString_Strings() - { - var list = new RepeatedField { "x", "y", "z" }; - var text = list.ToString(); - Assert.AreEqual("[ \"x\", \"y\", \"z\" ]", text); - } - - [Test] - public void ToString_Messages() - { - var list = new RepeatedField { new TestAllTypes { SingleDouble = 1.5 }, new TestAllTypes { SingleInt32 = 10 } }; - var text = list.ToString(); - Assert.AreEqual("[ { \"singleDouble\": 1.5 }, { \"singleInt32\": 10 } ]", text); - } - - [Test] - public void ToString_Empty() - { - var list = new RepeatedField { }; - var text = list.ToString(); - Assert.AreEqual("[ ]", text); - } - - [Test] - public void ToString_InvalidElementType() - { - var list = new RepeatedField { 15m }; - Assert.Throws(() => list.ToString()); - } - - [Test] - public void ToString_Timestamp() - { - var list = new RepeatedField { Timestamp.FromDateTime(new DateTime(2015, 10, 1, 12, 34, 56, DateTimeKind.Utc)) }; - var text = list.ToString(); - Assert.AreEqual("[ \"2015-10-01T12:34:56Z\" ]", text); - } - - [Test] - public void ToString_Struct() - { - var message = new Struct { Fields = { { "foo", new Value { NumberValue = 20 } } } }; - var list = new RepeatedField { message }; - var text = list.ToString(); - Assert.AreEqual(text, "[ { \"foo\": 20 } ]", message.ToString()); - } - - [Test] - public void NaNValuesComparedBitwise() - { - var list1 = new RepeatedField { SampleNaNs.Regular, SampleNaNs.SignallingFlipped }; - var list2 = new RepeatedField { SampleNaNs.Regular, SampleNaNs.PayloadFlipped }; - var list3 = new RepeatedField { SampleNaNs.Regular, SampleNaNs.SignallingFlipped }; - - // All SampleNaNs have the same hashcode under certain targets (e.g. netcoreapp2.1) - EqualityTester.AssertInequality(list1, list2, checkHashcode: false); - EqualityTester.AssertEquality(list1, list3); - Assert.True(list1.Contains(SampleNaNs.SignallingFlipped)); - Assert.False(list2.Contains(SampleNaNs.SignallingFlipped)); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs deleted file mode 100644 index df23a09..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/PropertyInfoExtensionsTest.cs +++ /dev/null @@ -1,98 +0,0 @@ -#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 NUnit.Framework; -using System.Reflection; - -namespace Google.Protobuf.Compatibility -{ - public class PropertyInfoExtensionsTest - { - public string PublicReadWrite { get; set; } - private string PrivateReadWrite { get; set; } - public string PublicReadPrivateWrite { get; private set; } - public string PrivateReadPublicWrite { private get; set; } - public string PublicReadOnly { get { return null; } } - private string PrivateReadOnly { get { return null; } } - public string PublicWriteOnly { set { } } - private string PrivateWriteOnly { set { } } - - [Test] - [TestCase("PublicReadWrite")] - [TestCase("PublicReadPrivateWrite")] - [TestCase("PublicReadOnly")] - public void GetGetMethod_Success(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNotNull(PropertyInfoExtensions.GetGetMethod(propertyInfo)); - } - - [Test] - [TestCase("PrivateReadWrite")] - [TestCase("PrivateReadPublicWrite")] - [TestCase("PrivateReadOnly")] - [TestCase("PublicWriteOnly")] - [TestCase("PrivateWriteOnly")] - public void GetGetMethod_NoAccessibleGetter(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNull(PropertyInfoExtensions.GetGetMethod(propertyInfo)); - } - - [Test] - [TestCase("PublicReadWrite")] - [TestCase("PrivateReadPublicWrite")] - [TestCase("PublicWriteOnly")] - public void GetSetMethod_Success(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNotNull(PropertyInfoExtensions.GetSetMethod(propertyInfo)); - } - - [Test] - [TestCase("PublicReadPrivateWrite")] - [TestCase("PrivateReadWrite")] - [TestCase("PrivateReadOnly")] - [TestCase("PublicReadOnly")] - [TestCase("PrivateWriteOnly")] - public void GetSetMethod_NoAccessibleGetter(string name) - { - var propertyInfo = typeof(PropertyInfoExtensionsTest) - .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); - Assert.IsNull(PropertyInfoExtensions.GetSetMethod(propertyInfo)); - } - } - -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/StreamExtensionsTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/StreamExtensionsTest.cs deleted file mode 100644 index 48c0725..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/StreamExtensionsTest.cs +++ /dev/null @@ -1,67 +0,0 @@ -#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 - -#if NET35 -using System; -using System.IO; -using NUnit.Framework; -using Google.Protobuf.Compatibility; - -namespace Google.Protobuf.Test.Compatibility -{ - public class StreamExtensionsTest - { - [Test] - public void CopyToNullArgument() - { - var memoryStream = new MemoryStream(); - Assert.Throws(() => memoryStream.CopyTo(null)); - } - - [Test] - public void CopyToTest() - { - byte[] bytesToStream = new byte[] { 0x31, 0x08, 0xFF, 0x00 }; - Stream source = new MemoryStream(bytesToStream); - Stream destination = new MemoryStream((int)source.Length); - source.CopyTo(destination); - destination.Seek(0, SeekOrigin.Begin); - - Assert.AreEqual(0x31, destination.ReadByte()); - Assert.AreEqual(0x08, destination.ReadByte()); - Assert.AreEqual(0xFF, destination.ReadByte()); - Assert.AreEqual(0x00, destination.ReadByte()); - Assert.AreEqual(-1, destination.ReadByte()); - } - } -} -#endif diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs deleted file mode 100644 index 5d86c20..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Compatibility/TypeExtensionsTest.cs +++ /dev/null @@ -1,117 +0,0 @@ -#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 NUnit.Framework; -using System; -using System.Collections.Generic; -using System.Reflection; - -#if !NET35 -namespace Google.Protobuf.Compatibility -{ - public class TypeExtensionsTest - { - public class DerivedList : List { } - public string PublicProperty { get; set; } - private string PrivateProperty { get; set; } - - public void PublicMethod() - { - } - - private void PrivateMethod() - { - } - - [Test] - [TestCase(typeof(object), typeof(string), true)] - [TestCase(typeof(object), typeof(int), true)] - [TestCase(typeof(string), typeof(string), true)] - [TestCase(typeof(string), typeof(object), false)] - [TestCase(typeof(string), typeof(int), false)] - [TestCase(typeof(int), typeof(int), true)] - [TestCase(typeof(ValueType), typeof(int), true)] - [TestCase(typeof(long), typeof(int), false)] // - public void IsAssignableFrom(Type target, Type argument, bool expected) - { - Assert.AreEqual(expected, TypeExtensions.IsAssignableFrom(target, argument)); - } - - [Test] - [TestCase(typeof(DerivedList), "Count")] // Go up the type hierarchy - [TestCase(typeof(List), "Count")] - [TestCase(typeof(List<>), "Count")] - [TestCase(typeof(TypeExtensionsTest), "PublicProperty")] - public void GetProperty_Success(Type type, string name) - { - var property = TypeExtensions.GetProperty(type, name); - Assert.IsNotNull(property); - Assert.AreEqual(name, property.Name); - } - - [Test] - [TestCase(typeof(TypeExtensionsTest), "PrivateProperty")] - [TestCase(typeof(TypeExtensionsTest), "Garbage")] - public void GetProperty_NoSuchProperty(Type type, string name) - { - var property = TypeExtensions.GetProperty(type, name); - Assert.IsNull(property); - } - - [Test] - [TestCase(typeof(DerivedList), "RemoveAt")] // Go up the type hierarchy - [TestCase(typeof(List<>), "RemoveAt")] - [TestCase(typeof(TypeExtensionsTest), "PublicMethod")] - public void GetMethod_Success(Type type, string name) - { - var method = TypeExtensions.GetMethod(type, name); - Assert.IsNotNull(method); - Assert.AreEqual(name, method.Name); - } - - [Test] - [TestCase(typeof(TypeExtensionsTest), "PrivateMethod")] - [TestCase(typeof(TypeExtensionsTest), "GarbageMethod")] - public void GetMethod_NoSuchMethod(Type type, string name) - { - var method = TypeExtensions.GetMethod(type, name); - Assert.IsNull(method); - } - - [Test] - [TestCase(typeof(List), "IndexOf")] - public void GetMethod_Ambiguous(Type type, string name) - { - Assert.Throws(() => TypeExtensions.GetMethod(type, name)); - } - } -} -#endif diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/DeprecatedMemberTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/DeprecatedMemberTest.cs deleted file mode 100644 index 34d5b9f..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/DeprecatedMemberTest.cs +++ /dev/null @@ -1,55 +0,0 @@ -#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; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class DeprecatedMemberTest - { - private static void AssertIsDeprecated(MemberInfo member) - { - Assert.NotNull(member); - Assert.IsTrue(member.IsDefined(typeof(ObsoleteAttribute), false), "Member not obsolete: " + member); - } - - [Test] - public void TestDepreatedPrimitiveValue() - { - AssertIsDeprecated(typeof(TestDeprecatedFields).GetProperty("DeprecatedInt32")); - } - - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/EqualityTester.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/EqualityTester.cs deleted file mode 100644 index d4b3c13..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/EqualityTester.cs +++ /dev/null @@ -1,65 +0,0 @@ -#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 NUnit.Framework; - -namespace Google.Protobuf -{ - /// - /// Helper methods when testing equality. NUnit's Assert.AreEqual and - /// Assert.AreNotEqual methods try to be clever with collections, which can - /// be annoying... - /// - internal static class EqualityTester - { - public static void AssertEquality(T first, T second) where T : IEquatable - { - Assert.IsTrue(first.Equals(second)); - Assert.IsTrue(first.Equals((object) second)); - Assert.AreEqual(first.GetHashCode(), second.GetHashCode()); - } - - public static void AssertInequality(T first, T second, bool checkHashcode = true) where T : IEquatable - { - Assert.IsFalse(first.Equals(second)); - Assert.IsFalse(first.Equals((object) second)); - // While this isn't a requirement, the chances of this test failing due to - // coincidence rather than a bug are very small. - // For such rare cases, an argument can be used to disable the check. - if (checkHashcode && first != null && second != null) - { - Assert.AreNotEqual(first.GetHashCode(), second.GetHashCode()); - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldCodecTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldCodecTest.cs deleted file mode 100644 index b20eccc..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldCodecTest.cs +++ /dev/null @@ -1,199 +0,0 @@ -#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.IO; -using System.Reflection; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class FieldCodecTest - { -#pragma warning disable 0414 // Used by tests via reflection - do not remove! - private static readonly List Codecs = new List - { - new FieldCodecTestData(FieldCodec.ForBool(100), true, "FixedBool"), - new FieldCodecTestData(FieldCodec.ForString(100), "sample", "String"), - new FieldCodecTestData(FieldCodec.ForBytes(100), ByteString.CopyFrom(1, 2, 3), "Bytes"), - new FieldCodecTestData(FieldCodec.ForInt32(100), -1000, "Int32"), - new FieldCodecTestData(FieldCodec.ForSInt32(100), -1000, "SInt32"), - new FieldCodecTestData(FieldCodec.ForSFixed32(100), -1000, "SFixed32"), - new FieldCodecTestData(FieldCodec.ForUInt32(100), 1234, "UInt32"), - new FieldCodecTestData(FieldCodec.ForFixed32(100), 1234, "Fixed32"), - new FieldCodecTestData(FieldCodec.ForInt64(100), -1000, "Int64"), - new FieldCodecTestData(FieldCodec.ForSInt64(100), -1000, "SInt64"), - new FieldCodecTestData(FieldCodec.ForSFixed64(100), -1000, "SFixed64"), - new FieldCodecTestData(FieldCodec.ForUInt64(100), 1234, "UInt64"), - new FieldCodecTestData(FieldCodec.ForFixed64(100), 1234, "Fixed64"), - new FieldCodecTestData(FieldCodec.ForFloat(100), 1234.5f, "FixedFloat"), - new FieldCodecTestData(FieldCodec.ForDouble(100), 1234567890.5d, "FixedDouble"), - new FieldCodecTestData( - FieldCodec.ForEnum(100, t => (int) t, t => (ForeignEnum) t), ForeignEnum.ForeignBaz, "Enum"), - new FieldCodecTestData( - FieldCodec.ForMessage(100, ForeignMessage.Parser), new ForeignMessage { C = 10 }, "Message"), - }; -#pragma warning restore 0414 - - [Test, TestCaseSource("Codecs")] - public void RoundTripWithTag(ICodecTestData codec) - { - codec.TestRoundTripWithTag(); - } - - [Test, TestCaseSource("Codecs")] - public void RoundTripRaw(ICodecTestData codec) - { - codec.TestRoundTripRaw(); - } - - [Test, TestCaseSource("Codecs")] - public void CalculateSize(ICodecTestData codec) - { - codec.TestCalculateSizeWithTag(); - } - - [Test, TestCaseSource("Codecs")] - public void DefaultValue(ICodecTestData codec) - { - codec.TestDefaultValue(); - } - - [Test, TestCaseSource("Codecs")] - public void FixedSize(ICodecTestData codec) - { - codec.TestFixedSize(); - } - - // This is ugly, but it means we can have a non-generic interface. - // It feels like NUnit should support this better, but I don't know - // of any better ways right now. - public interface ICodecTestData - { - void TestRoundTripRaw(); - void TestRoundTripWithTag(); - void TestCalculateSizeWithTag(); - void TestDefaultValue(); - void TestFixedSize(); - } - - public class FieldCodecTestData : ICodecTestData - { - private readonly FieldCodec codec; - private readonly T sampleValue; - private readonly string name; - - public FieldCodecTestData(FieldCodec codec, T sampleValue, string name) - { - this.codec = codec; - this.sampleValue = sampleValue; - this.name = name; - } - - public void TestRoundTripRaw() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.ValueWriter(codedOutput, sampleValue); - codedOutput.Flush(); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - Assert.AreEqual(sampleValue, codec.ValueReader(codedInput)); - Assert.IsTrue(codedInput.IsAtEnd); - } - - public void TestRoundTripWithTag() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, sampleValue); - codedOutput.Flush(); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - codedInput.AssertNextTag(codec.Tag); - Assert.AreEqual(sampleValue, codec.Read(codedInput)); - Assert.IsTrue(codedInput.IsAtEnd); - } - - public void TestCalculateSizeWithTag() - { - var stream = new MemoryStream(); - var codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, sampleValue); - codedOutput.Flush(); - Assert.AreEqual(stream.Position, codec.CalculateSizeWithTag(sampleValue)); - } - - public void TestDefaultValue() - { - // WriteTagAndValue ignores default values - var stream = new MemoryStream(); - CodedOutputStream codedOutput; -#if !NET35 - codedOutput = new CodedOutputStream(stream); - codec.WriteTagAndValue(codedOutput, codec.DefaultValue); - codedOutput.Flush(); - Assert.AreEqual(0, stream.Position); - Assert.AreEqual(0, codec.CalculateSizeWithTag(codec.DefaultValue)); - if (typeof(T).GetTypeInfo().IsValueType) - { - Assert.AreEqual(default(T), codec.DefaultValue); - } -#endif - - // The plain ValueWriter/ValueReader delegates don't. - if (codec.DefaultValue != null) // This part isn't appropriate for message types. - { - codedOutput = new CodedOutputStream(stream); - codec.ValueWriter(codedOutput, codec.DefaultValue); - codedOutput.Flush(); - Assert.AreNotEqual(0, stream.Position); - Assert.AreEqual(stream.Position, codec.ValueSizeCalculator(codec.DefaultValue)); - stream.Position = 0; - var codedInput = new CodedInputStream(stream); - Assert.AreEqual(codec.DefaultValue, codec.ValueReader(codedInput)); - } - } - - public void TestFixedSize() - { - Assert.AreEqual(name.Contains("Fixed"), codec.FixedSize != 0); - } - - public override string ToString() - { - return name; - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldMaskTreeTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldMaskTreeTest.cs deleted file mode 100644 index f71744a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/FieldMaskTreeTest.cs +++ /dev/null @@ -1,436 +0,0 @@ -#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 Google.Protobuf.Collections; -using Google.Protobuf.TestProtos; -using NUnit.Framework; -using Google.Protobuf.WellKnownTypes; - -namespace Google.Protobuf -{ - public class FieldMaskTreeTest - { - [Test] - public void AddFieldPath() - { - FieldMaskTree tree = new FieldMaskTree(); - RepeatedField paths = tree.ToFieldMask().Paths; - Assert.AreEqual(0, paths.Count); - - tree.AddFieldPath(""); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(1, paths.Count); - Assert.Contains("", paths); - - // New branch. - tree.AddFieldPath("foo"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(2, paths.Count); - Assert.Contains("foo", paths); - - // Redundant path. - tree.AddFieldPath("foo"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(2, paths.Count); - - // New branch. - tree.AddFieldPath("bar.baz"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(3, paths.Count); - Assert.Contains("bar.baz", paths); - - // Redundant sub-path. - tree.AddFieldPath("foo.bar"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(3, paths.Count); - - // New branch from a non-root node. - tree.AddFieldPath("bar.quz"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(4, paths.Count); - Assert.Contains("bar.quz", paths); - - // A path that matches several existing sub-paths. - tree.AddFieldPath("bar"); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(3, paths.Count); - Assert.Contains("foo", paths); - Assert.Contains("bar", paths); - } - - [Test] - public void MergeFromFieldMask() - { - FieldMaskTree tree = new FieldMaskTree(); - tree.MergeFromFieldMask(new FieldMask - { - Paths = {"foo", "bar.baz", "bar.quz"} - }); - RepeatedField paths = tree.ToFieldMask().Paths; - Assert.AreEqual(3, paths.Count); - Assert.Contains("foo", paths); - Assert.Contains("bar.baz", paths); - Assert.Contains("bar.quz", paths); - - tree.MergeFromFieldMask(new FieldMask - { - Paths = {"foo.bar", "bar"} - }); - paths = tree.ToFieldMask().Paths; - Assert.AreEqual(2, paths.Count); - Assert.Contains("foo", paths); - Assert.Contains("bar", paths); - } - - [Test] - public void IntersectFieldPath() - { - FieldMaskTree tree = new FieldMaskTree(); - FieldMaskTree result = new FieldMaskTree(); - tree.MergeFromFieldMask(new FieldMask - { - Paths = {"foo", "bar.baz", "bar.quz"} - }); - - // Empty path. - tree.IntersectFieldPath("", result); - RepeatedField paths = result.ToFieldMask().Paths; - Assert.AreEqual(0, paths.Count); - - // Non-exist path. - tree.IntersectFieldPath("quz", result); - paths = result.ToFieldMask().Paths; - Assert.AreEqual(0, paths.Count); - - // Sub-path of an existing leaf. - tree.IntersectFieldPath("foo.bar", result); - paths = result.ToFieldMask().Paths; - Assert.AreEqual(1, paths.Count); - Assert.Contains("foo.bar", paths); - - // Match an existing leaf node. - tree.IntersectFieldPath("foo", result); - paths = result.ToFieldMask().Paths; - Assert.AreEqual(1, paths.Count); - Assert.Contains("foo", paths); - - // Non-exist path. - tree.IntersectFieldPath("bar.foo", result); - paths = result.ToFieldMask().Paths; - Assert.AreEqual(1, paths.Count); - Assert.Contains("foo", paths); - - // Match a non-leaf node. - tree.IntersectFieldPath("bar", result); - paths = result.ToFieldMask().Paths; - Assert.AreEqual(3, paths.Count); - Assert.Contains("foo", paths); - Assert.Contains("bar.baz", paths); - Assert.Contains("bar.quz", paths); - } - - private void Merge(FieldMaskTree tree, IMessage source, IMessage destination, FieldMask.MergeOptions options, bool useDynamicMessage) - { - if (useDynamicMessage) - { - var newSource = source.Descriptor.Parser.CreateTemplate(); - newSource.MergeFrom(source.ToByteString()); - - var newDestination = source.Descriptor.Parser.CreateTemplate(); - newDestination.MergeFrom(destination.ToByteString()); - - tree.Merge(newSource, newDestination, options); - - // Clear before merging: - foreach (var fieldDescriptor in destination.Descriptor.Fields.InFieldNumberOrder()) - { - fieldDescriptor.Accessor.Clear(destination); - } - destination.MergeFrom(newDestination.ToByteString()); - } - else - { - tree.Merge(source, destination, options); - } - } - - [Test] - [TestCase(true)] - [TestCase(false)] - public void Merge(bool useDynamicMessage) - { - TestAllTypes value = new TestAllTypes - { - SingleInt32 = 1234, - SingleNestedMessage = new TestAllTypes.Types.NestedMessage {Bb = 5678}, - RepeatedInt32 = {4321}, - RepeatedNestedMessage = {new TestAllTypes.Types.NestedMessage {Bb = 8765}} - }; - - NestedTestAllTypes source = new NestedTestAllTypes - { - Payload = value, - Child = new NestedTestAllTypes {Payload = value} - }; - // Now we have a message source with the following structure: - // [root] -+- payload -+- single_int32 - // | +- single_nested_message - // | +- repeated_int32 - // | +- repeated_nested_message - // | - // +- child --- payload -+- single_int32 - // +- single_nested_message - // +- repeated_int32 - // +- repeated_nested_message - - FieldMask.MergeOptions options = new FieldMask.MergeOptions(); - - // Test merging each individual field. - NestedTestAllTypes destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload.single_int32"), - source, destination, options, useDynamicMessage); - NestedTestAllTypes expected = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1234 - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload.single_nested_message"), - source, destination, options, useDynamicMessage); - expected = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleNestedMessage = new TestAllTypes.Types.NestedMessage {Bb = 5678} - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload.repeated_int32"), - source, destination, options, useDynamicMessage); - expected = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - RepeatedInt32 = {4321} - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload.repeated_nested_message"), - source, destination, options, useDynamicMessage); - expected = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - RepeatedNestedMessage = {new TestAllTypes.Types.NestedMessage {Bb = 8765}} - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge( - new FieldMaskTree().AddFieldPath("child.payload.single_int32"), - source, - destination, - options, - useDynamicMessage); - expected = new NestedTestAllTypes - { - Child = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1234 - } - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge( - new FieldMaskTree().AddFieldPath("child.payload.single_nested_message"), - source, - destination, - options, - useDynamicMessage); - expected = new NestedTestAllTypes - { - Child = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleNestedMessage = new TestAllTypes.Types.NestedMessage {Bb = 5678} - } - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("child.payload.repeated_int32"), - source, destination, options, useDynamicMessage); - expected = new NestedTestAllTypes - { - Child = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - RepeatedInt32 = {4321} - } - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("child.payload.repeated_nested_message"), - source, destination, options, useDynamicMessage); - expected = new NestedTestAllTypes - { - Child = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - RepeatedNestedMessage = {new TestAllTypes.Types.NestedMessage {Bb = 8765}} - } - } - }; - Assert.AreEqual(expected, destination); - - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("child").AddFieldPath("payload"), - source, destination, options, useDynamicMessage); - Assert.AreEqual(source, destination); - - // Test repeated options. - destination = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - RepeatedInt32 = { 1000 } - } - }; - Merge(new FieldMaskTree().AddFieldPath("payload.repeated_int32"), - source, destination, options, useDynamicMessage); - // Default behavior is to append repeated fields. - Assert.AreEqual(2, destination.Payload.RepeatedInt32.Count); - Assert.AreEqual(1000, destination.Payload.RepeatedInt32[0]); - Assert.AreEqual(4321, destination.Payload.RepeatedInt32[1]); - // Change to replace repeated fields. - options.ReplaceRepeatedFields = true; - Merge(new FieldMaskTree().AddFieldPath("payload.repeated_int32"), - source, destination, options, useDynamicMessage); - Assert.AreEqual(1, destination.Payload.RepeatedInt32.Count); - Assert.AreEqual(4321, destination.Payload.RepeatedInt32[0]); - - // Test message options. - destination = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1000, - SingleUint32 = 2000 - } - }; - Merge(new FieldMaskTree().AddFieldPath("payload"), - source, destination, options, useDynamicMessage); - // Default behavior is to merge message fields. - Assert.AreEqual(1234, destination.Payload.SingleInt32); - Assert.AreEqual(2000, destination.Payload.SingleUint32); - - // Test merging unset message fields. - NestedTestAllTypes clearedSource = source.Clone(); - clearedSource.Payload = null; - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload"), - clearedSource, destination, options, useDynamicMessage); - Assert.IsNull(destination.Payload); - - // Skip a message field if they are unset in both source and target. - destination = new NestedTestAllTypes(); - Merge(new FieldMaskTree().AddFieldPath("payload.single_int32"), - clearedSource, destination, options, useDynamicMessage); - Assert.IsNull(destination.Payload); - - // Change to replace message fields. - options.ReplaceMessageFields = true; - destination = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1000, - SingleUint32 = 2000 - } - }; - Merge(new FieldMaskTree().AddFieldPath("payload"), - source, destination, options, useDynamicMessage); - Assert.AreEqual(1234, destination.Payload.SingleInt32); - Assert.AreEqual(0, destination.Payload.SingleUint32); - - // Test merging unset message fields. - destination = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1000, - SingleUint32 = 2000 - } - }; - Merge(new FieldMaskTree().AddFieldPath("payload"), - clearedSource, destination, options, useDynamicMessage); - Assert.IsNull(destination.Payload); - - // Test merging unset primitive fields. - destination = source.Clone(); - destination.Payload.SingleInt32 = 0; - NestedTestAllTypes sourceWithPayloadInt32Unset = destination; - destination = source.Clone(); - Merge(new FieldMaskTree().AddFieldPath("payload.single_int32"), - sourceWithPayloadInt32Unset, destination, options, useDynamicMessage); - Assert.AreEqual(0, destination.Payload.SingleInt32); - - // Change to clear unset primitive fields. - options.ReplacePrimitiveFields = true; - destination = source.Clone(); - Merge(new FieldMaskTree().AddFieldPath("payload.single_int32"), - sourceWithPayloadInt32Unset, destination, options, useDynamicMessage); - Assert.IsNotNull(destination.Payload); - } - - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs deleted file mode 100644 index 5694754..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/GeneratedMessageTest.cs +++ /dev/null @@ -1,736 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using Google.Protobuf.WellKnownTypes; - -namespace Google.Protobuf -{ - /// - /// Tests around the generated TestAllTypes message. - /// - public class GeneratedMessageTest - { - [Test] - public void EmptyMessageFieldDistinctFromMissingMessageField() - { - // This demonstrates what we're really interested in... - var message1 = new TestAllTypes { SingleForeignMessage = new ForeignMessage() }; - var message2 = new TestAllTypes(); // SingleForeignMessage is null - EqualityTester.AssertInequality(message1, message2); - } - - [Test] - public void DefaultValues() - { - // Single fields - var message = new TestAllTypes(); - Assert.AreEqual(false, message.SingleBool); - Assert.AreEqual(ByteString.Empty, message.SingleBytes); - Assert.AreEqual(0.0, message.SingleDouble); - Assert.AreEqual(0, message.SingleFixed32); - Assert.AreEqual(0L, message.SingleFixed64); - Assert.AreEqual(0.0f, message.SingleFloat); - Assert.AreEqual(ForeignEnum.ForeignUnspecified, message.SingleForeignEnum); - Assert.IsNull(message.SingleForeignMessage); - Assert.AreEqual(ImportEnum.Unspecified, message.SingleImportEnum); - Assert.IsNull(message.SingleImportMessage); - Assert.AreEqual(0, message.SingleInt32); - Assert.AreEqual(0L, message.SingleInt64); - Assert.AreEqual(TestAllTypes.Types.NestedEnum.Unspecified, message.SingleNestedEnum); - Assert.IsNull(message.SingleNestedMessage); - Assert.IsNull(message.SinglePublicImportMessage); - Assert.AreEqual(0, message.SingleSfixed32); - Assert.AreEqual(0L, message.SingleSfixed64); - Assert.AreEqual(0, message.SingleSint32); - Assert.AreEqual(0L, message.SingleSint64); - Assert.AreEqual("", message.SingleString); - Assert.AreEqual(0U, message.SingleUint32); - Assert.AreEqual(0UL, message.SingleUint64); - - // Repeated fields - Assert.AreEqual(0, message.RepeatedBool.Count); - Assert.AreEqual(0, message.RepeatedBytes.Count); - Assert.AreEqual(0, message.RepeatedDouble.Count); - Assert.AreEqual(0, message.RepeatedFixed32.Count); - Assert.AreEqual(0, message.RepeatedFixed64.Count); - Assert.AreEqual(0, message.RepeatedFloat.Count); - Assert.AreEqual(0, message.RepeatedForeignEnum.Count); - Assert.AreEqual(0, message.RepeatedForeignMessage.Count); - Assert.AreEqual(0, message.RepeatedImportEnum.Count); - Assert.AreEqual(0, message.RepeatedImportMessage.Count); - Assert.AreEqual(0, message.RepeatedNestedEnum.Count); - Assert.AreEqual(0, message.RepeatedNestedMessage.Count); - Assert.AreEqual(0, message.RepeatedPublicImportMessage.Count); - Assert.AreEqual(0, message.RepeatedSfixed32.Count); - Assert.AreEqual(0, message.RepeatedSfixed64.Count); - Assert.AreEqual(0, message.RepeatedSint32.Count); - Assert.AreEqual(0, message.RepeatedSint64.Count); - Assert.AreEqual(0, message.RepeatedString.Count); - Assert.AreEqual(0, message.RepeatedUint32.Count); - Assert.AreEqual(0, message.RepeatedUint64.Count); - - // Oneof fields - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - } - - [Test] - public void NullStringAndBytesRejected() - { - var message = new TestAllTypes(); - Assert.Throws(() => message.SingleString = null); - Assert.Throws(() => message.OneofString = null); - Assert.Throws(() => message.SingleBytes = null); - Assert.Throws(() => message.OneofBytes = null); - } - - [Test] - public void RoundTrip_Empty() - { - var message = new TestAllTypes(); - // Without setting any values, there's nothing to write. - byte[] bytes = message.ToByteArray(); - Assert.AreEqual(0, bytes.Length); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void RoundTrip_SingleValues() - { - 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.ForeignBar, - SingleForeignMessage = new ForeignMessage { C = 10 }, - SingleImportEnum = ImportEnum.ImportBaz, - 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", - SingleUint32 = uint.MaxValue, - SingleUint64 = ulong.MaxValue - }; - - byte[] bytes = message.ToByteArray(); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void RoundTrip_RepeatedValues() - { - var message = new TestAllTypes - { - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { uint.MaxValue, 23 }, - RepeatedFixed64 = { ulong.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar }, - RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } }, - RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified }, - RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, long.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } }, - RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { uint.MaxValue, uint.MinValue }, - RepeatedUint64 = { ulong.MaxValue, uint.MinValue } - }; - - byte[] bytes = message.ToByteArray(); - TestAllTypes parsed = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - // Note that not every map within map_unittest_proto3 is used. They all go through very - // similar code paths. The fact that all maps are present is validation that we have codecs - // for every type. - [Test] - public void RoundTrip_Maps() - { - var message = new TestMap - { - MapBoolBool = { - { false, true }, - { true, false } - }, - MapInt32Bytes = { - { 5, ByteString.CopyFrom(6, 7, 8) }, - { 25, ByteString.CopyFrom(1, 2, 3, 4, 5) }, - { 10, ByteString.Empty } - }, - MapInt32ForeignMessage = { - { 0, new ForeignMessage { C = 10 } }, - { 5, new ForeignMessage() }, - }, - MapInt32Enum = { - { 1, MapEnum.Bar }, - { 2000, MapEnum.Foo } - } - }; - - byte[] bytes = message.ToByteArray(); - TestMap parsed = TestMap.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - } - - [Test] - public void MapWithEmptyEntry() - { - var message = new TestMap - { - MapInt32Bytes = { { 0, ByteString.Empty } } - }; - - byte[] bytes = message.ToByteArray(); - Assert.AreEqual(2, bytes.Length); // Tag for field entry (1 byte), length of entry (0; 1 byte) - - var parsed = TestMap.Parser.ParseFrom(bytes); - Assert.AreEqual(1, parsed.MapInt32Bytes.Count); - Assert.AreEqual(ByteString.Empty, parsed.MapInt32Bytes[0]); - } - - [Test] - public void MapWithOnlyValue() - { - // Hand-craft the stream to contain a single entry with just a value. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited); - var nestedMessage = new ForeignMessage { C = 20 }; - // Size of the entry (tag, size written by WriteMessage, data written by WriteMessage) - output.WriteLength(2 + nestedMessage.CalculateSize()); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteMessage(nestedMessage); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]); - } - - [Test] - public void MapWithOnlyKey_PrimitiveValue() - { - // Hand-craft the stream to contain a single entry with just a key. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32DoubleFieldNumber, WireFormat.WireType.LengthDelimited); - int key = 10; - output.WriteLength(1 + CodedOutputStream.ComputeInt32Size(key)); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(0.0, parsed.MapInt32Double[key]); - } - - [Test] - public void MapWithOnlyKey_MessageValue() - { - // Hand-craft the stream to contain a single entry with just a key. - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited); - int key = 10; - output.WriteLength(1 + CodedOutputStream.ComputeInt32Size(key)); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(new ForeignMessage(), parsed.MapInt32ForeignMessage[key]); - } - - [Test] - public void MapIgnoresExtraFieldsWithinEntryMessages() - { - // Hand-craft the stream to contain a single entry with three fields - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - - var key = 10; // Field 1 - var value = 20; // Field 2 - var extra = 30; // Field 3 - - // Each field can be represented in a single byte, with a single byte tag. - // Total message size: 6 bytes. - output.WriteLength(6); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value); - output.WriteTag(3, WireFormat.WireType.Varint); - output.WriteInt32(extra); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value, parsed.MapInt32Int32[key]); - } - - [Test] - public void MapFieldOrderIsIrrelevant() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - - var key = 10; - var value = 20; - - // Each field can be represented in a single byte, with a single byte tag. - // Total message size: 4 bytes. - output.WriteLength(4); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value, parsed.MapInt32Int32[key]); - } - - [Test] - public void MapNonContiguousEntries() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - // Message structure: - // Entry for MapInt32Int32 - // Entry for MapStringString - // Entry for MapInt32Int32 - - // First entry - var key1 = 10; - var value1 = 20; - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key1); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value1); - - // Second entry - var key2 = "a"; - var value2 = "b"; - output.WriteTag(TestMap.MapStringStringFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(6); // 3 bytes per entry: tag, size, character - output.WriteTag(1, WireFormat.WireType.LengthDelimited); - output.WriteString(key2); - output.WriteTag(2, WireFormat.WireType.LengthDelimited); - output.WriteString(value2); - - // Third entry - var key3 = 15; - var value3 = 25; - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key3); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value3); - - output.Flush(); - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - var expected = new TestMap - { - MapInt32Int32 = { { key1, value1 }, { key3, value3 } }, - MapStringString = { { key2, value2 } } - }; - Assert.AreEqual(expected, parsed); - } - - [Test] - public void DuplicateKeys_LastEntryWins() - { - var memoryStream = new MemoryStream(); - var output = new CodedOutputStream(memoryStream); - - var key = 10; - var value1 = 20; - var value2 = 30; - - // First entry - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value1); - - // Second entry - same key, different value - output.WriteTag(TestMap.MapInt32Int32FieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(4); - output.WriteTag(1, WireFormat.WireType.Varint); - output.WriteInt32(key); - output.WriteTag(2, WireFormat.WireType.Varint); - output.WriteInt32(value2); - output.Flush(); - - var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray()); - Assert.AreEqual(value2, parsed.MapInt32Int32[key]); - } - - [Test] - public void CloneSingleNonMessageValues() - { - var original = new TestAllTypes - { - SingleBool = true, - SingleBytes = ByteString.CopyFrom(1, 2, 3, 4), - SingleDouble = 23.5, - SingleFixed32 = 23, - SingleFixed64 = 1234567890123, - SingleFloat = 12.25f, - SingleInt32 = 100, - SingleInt64 = 3210987654321, - SingleNestedEnum = TestAllTypes.Types.NestedEnum.Foo, - SingleSfixed32 = -123, - SingleSfixed64 = -12345678901234, - SingleSint32 = -456, - SingleSint64 = -12345678901235, - SingleString = "test", - SingleUint32 = uint.MaxValue, - SingleUint64 = ulong.MaxValue - }; - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - // Just as a single example - clone.SingleInt32 = 150; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneRepeatedNonMessageValues() - { - var original = new TestAllTypes - { - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { uint.MaxValue, 23 }, - RepeatedFixed64 = { ulong.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, long.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { uint.MaxValue, uint.MinValue }, - RepeatedUint64 = { ulong.MaxValue, uint.MinValue } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - // Just as a single example - clone.RepeatedDouble.Add(25.5); - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneSingleMessageField() - { - var original = new TestAllTypes - { - SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreNotSame(original.SingleNestedMessage, clone.SingleNestedMessage); - Assert.AreEqual(original, clone); - - clone.SingleNestedMessage.Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneRepeatedMessageField() - { - var original = new TestAllTypes - { - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 20 } } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreNotSame(original.RepeatedNestedMessage, clone.RepeatedNestedMessage); - Assert.AreNotSame(original.RepeatedNestedMessage[0], clone.RepeatedNestedMessage[0]); - Assert.AreEqual(original, clone); - - clone.RepeatedNestedMessage[0].Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void CloneOneofField() - { - var original = new TestAllTypes - { - OneofNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } - }; - - var clone = original.Clone(); - Assert.AreNotSame(original, clone); - Assert.AreEqual(original, clone); - - // We should have cloned the message - original.OneofNestedMessage.Bb = 30; - Assert.AreNotEqual(original, clone); - } - - [Test] - public void OneofProperties() - { - // Switch the oneof case between each of the different options, and check everything behaves - // as expected in each case. - var message = new TestAllTypes(); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - - message.OneofString = "sample"; - Assert.AreEqual("sample", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message.OneofFieldCase); - - var bytes = ByteString.CopyFrom(1, 2, 3); - message.OneofBytes = bytes; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(bytes, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofBytes, message.OneofFieldCase); - - message.OneofUint32 = 20; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(20, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message.OneofFieldCase); - - var nestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 25 }; - message.OneofNestedMessage = nestedMessage; - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.AreEqual(nestedMessage, message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofNestedMessage, message.OneofFieldCase); - - message.ClearOneofField(); - Assert.AreEqual("", message.OneofString); - Assert.AreEqual(0, message.OneofUint32); - Assert.AreEqual(ByteString.Empty, message.OneofBytes); - Assert.IsNull(message.OneofNestedMessage); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - } - - [Test] - public void Oneof_DefaultValuesNotEqual() - { - var message1 = new TestAllTypes { OneofString = "" }; - var message2 = new TestAllTypes { OneofUint32 = 0 }; - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofString, message1.OneofFieldCase); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - Assert.AreNotEqual(message1, message2); - } - - [Test] - public void OneofSerialization_NonDefaultValue() - { - var message = new TestAllTypes(); - message.OneofString = "this would take a bit of space"; - message.OneofUint32 = 10; - var bytes = message.ToByteArray(); - Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - no string! - - var message2 = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, message2); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - } - - [Test] - public void OneofSerialization_DefaultValue() - { - var message = new TestAllTypes(); - message.OneofString = "this would take a bit of space"; - message.OneofUint32 = 0; // This is the default value for UInt32; normally wouldn't be serialized - var bytes = message.ToByteArray(); - Assert.AreEqual(3, bytes.Length); // 2 bytes for the tag + 1 for the value - it's still serialized - - var message2 = TestAllTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, message2); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message2.OneofFieldCase); - } - - [Test] - public void DiscardUnknownFields_RealDataStillRead() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var unusedFieldNumber = 23456; - Assert.IsFalse(TestAllTypes.Descriptor.Fields.InDeclarationOrder().Select(x => x.FieldNumber).Contains(unusedFieldNumber)); - output.WriteTag(unusedFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteString("ignore me"); - message.WriteTo(output); - output.Flush(); - - stream.Position = 0; - var parsed = TestAllTypes.Parser.ParseFrom(stream); - // TODO(jieluo): Add test back when DiscardUnknownFields API is supported. - // Assert.AreEqual(message, parsed); - } - - [Test] - public void DiscardUnknownFields_AllTypes() - { - // Simple way of ensuring we can skip all kinds of fields. - var data = SampleMessages.CreateFullTestAllTypes().ToByteArray(); - var empty = Empty.Parser.ParseFrom(data); - // TODO(jieluo): Add test back when DiscardUnknownFields API is supported. - // Assert.AreNotEqual(new Empty(), empty); - } - - // This was originally seen as a conformance test failure. - [Test] - public void TruncatedMessageFieldThrows() - { - // 130, 3 is the message tag - // 1 is the data length - but there's no data. - var data = new byte[] { 130, 3, 1 }; - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(data)); - } - - /// - /// Demonstrates current behaviour with an extraneous end group tag - see issue 688 - /// for details; we may want to change this. - /// - [Test] - public void ExtraEndGroupThrows() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - - output.WriteTag(TestAllTypes.SingleFixed32FieldNumber, WireFormat.WireType.Fixed32); - output.WriteFixed32(123); - output.WriteTag(100, WireFormat.WireType.EndGroup); - - output.Flush(); - - stream.Position = 0; - Assert.Throws(() => TestAllTypes.Parser.ParseFrom(stream)); - } - - [Test] - public void CustomDiagnosticMessage_DirectToStringCall() - { - var message = new ForeignMessage { C = 31 }; - Assert.AreEqual("{ \"c\": 31, \"@cInHex\": \"1f\" }", message.ToString()); - Assert.AreEqual("{ \"c\": 31 }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void CustomDiagnosticMessage_Nested() - { - var message = new TestAllTypes { SingleForeignMessage = new ForeignMessage { C = 16 } }; - Assert.AreEqual("{ \"singleForeignMessage\": { \"c\": 16, \"@cInHex\": \"10\" } }", message.ToString()); - Assert.AreEqual("{ \"singleForeignMessage\": { \"c\": 16 } }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void CustomDiagnosticMessage_DirectToTextWriterCall() - { - var message = new ForeignMessage { C = 31 }; - var writer = new StringWriter(); - JsonFormatter.Default.Format(message, writer); - Assert.AreEqual("{ \"c\": 31 }", writer.ToString()); - } - - [Test] - public void NaNComparisons() - { - var message1 = new TestAllTypes { SingleDouble = SampleNaNs.Regular }; - var message2 = new TestAllTypes { SingleDouble = SampleNaNs.PayloadFlipped }; - var message3 = new TestAllTypes { SingleDouble = SampleNaNs.Regular }; - - EqualityTester.AssertInequality(message1, message2); - EqualityTester.AssertEquality(message1, message3); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj b/lib/protobuf/csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj deleted file mode 100644 index 32bb26c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Google.Protobuf.Test.csproj +++ /dev/null @@ -1,34 +0,0 @@ - - - - net451;netcoreapp2.1 - ../../keys/Google.Protobuf.snk - true - true - False - - - - - - - - - - - - - - - netcoreapp2.1 - - - - - - - diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/IssuesTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/IssuesTest.cs deleted file mode 100644 index 2caf80a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/IssuesTest.cs +++ /dev/null @@ -1,94 +0,0 @@ -#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.Reflection; -using UnitTest.Issues.TestProtos; -using NUnit.Framework; -using static UnitTest.Issues.TestProtos.OneofMerging.Types; - -namespace Google.Protobuf -{ - /// - /// Tests for issues which aren't easily compartmentalized into other unit tests. - /// - public class IssuesTest - { - // Issue 45 - [Test] - public void FieldCalledItem() - { - ItemField message = new ItemField { Item = 3 }; - FieldDescriptor field = ItemField.Descriptor.FindFieldByName("item"); - Assert.NotNull(field); - Assert.AreEqual(3, (int)field.Accessor.GetValue(message)); - } - - [Test] - public void ReservedNames() - { - var message = new ReservedNames { Types_ = 10, Descriptor_ = 20 }; - // Underscores aren't reflected in the JSON. - Assert.AreEqual("{ \"types\": 10, \"descriptor\": 20 }", message.ToString()); - } - - [Test] - public void JsonNameParseTest() - { - var settings = new JsonParser.Settings(10, TypeRegistry.FromFiles(UnittestIssuesReflection.Descriptor)); - var parser = new JsonParser(settings); - - // It is safe to use either original field name or explicitly specified json_name - Assert.AreEqual(new TestJsonName { Name = "test", Description = "test2", Guid = "test3" }, - parser.Parse("{ \"name\": \"test\", \"desc\": \"test2\", \"guid\": \"test3\" }")); - } - - [Test] - public void JsonNameFormatTest() - { - var message = new TestJsonName { Name = "test", Description = "test2", Guid = "test3" }; - Assert.AreEqual("{ \"name\": \"test\", \"desc\": \"test2\", \"exid\": \"test3\" }", - JsonFormatter.Default.Format(message)); - } - - [Test] - public void OneofMerging() - { - var message1 = new OneofMerging { Nested = new Nested { X = 10 } }; - var message2 = new OneofMerging { Nested = new Nested { Y = 20 } }; - var expected = new OneofMerging { Nested = new Nested { X = 10, Y = 20 } }; - - var merged = message1.Clone(); - merged.MergeFrom(message2); - Assert.AreEqual(expected, merged); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs deleted file mode 100644 index b07a841..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs +++ /dev/null @@ -1,624 +0,0 @@ -#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.TestProtos; -using NUnit.Framework; -using UnitTest.Issues.TestProtos; -using Google.Protobuf.WellKnownTypes; -using Google.Protobuf.Reflection; - -using static Google.Protobuf.JsonParserTest; // For WrapInQuotes -using System.IO; -using Google.Protobuf.Collections; - -namespace Google.Protobuf -{ - /// - /// Tests for the JSON formatter. Note that in these tests, double quotes are replaced with apostrophes - /// for the sake of readability (embedding \" everywhere is painful). See the AssertJson method for details. - /// - public class JsonFormatterTest - { - [Test] - public void DefaultValues_WhenOmitted() - { - var formatter = JsonFormatter.Default; - - AssertJson("{ }", formatter.Format(new ForeignMessage())); - AssertJson("{ }", formatter.Format(new TestAllTypes())); - AssertJson("{ }", formatter.Format(new TestMap())); - } - - [Test] - public void DefaultValues_WhenIncluded() - { - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithFormatDefaultValues(true)); - AssertJson("{ 'c': 0 }", formatter.Format(new ForeignMessage())); - } - - [Test] - public void EnumAllowAlias() - { - var message = new TestEnumAllowAlias - { - Value = TestEnumWithDupValue.Foo2, - }; - var actualText = JsonFormatter.Default.Format(message); - var expectedText = "{ 'value': 'FOO1' }"; - AssertJson(expectedText, actualText); - } - - [Test] - public void EnumAsInt() - { - var message = new TestAllTypes - { - SingleForeignEnum = ForeignEnum.ForeignBar, - RepeatedForeignEnum = { ForeignEnum.ForeignBaz, (ForeignEnum) 100, ForeignEnum.ForeignFoo } - }; - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithFormatEnumsAsIntegers(true)); - var actualText = formatter.Format(message); - var expectedText = "{ " + - "'singleForeignEnum': 5, " + - "'repeatedForeignEnum': [ 6, 100, 4 ]" + - " }"; - AssertJson(expectedText, actualText); - } - - [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.ForeignBar, - SingleForeignMessage = new ForeignMessage { C = 10 }, - SingleImportEnum = ImportEnum.ImportBaz, - 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 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 }" + - " }"; - AssertJson(expectedText, actualText); - } - - [Test] - public void RepeatedField() - { - AssertJson("{ 'repeatedInt32': [ 1, 2, 3, 4, 5 ] }", - JsonFormatter.Default.Format(new TestAllTypes { RepeatedInt32 = { 1, 2, 3, 4, 5 } })); - } - - [Test] - public void MapField_StringString() - { - AssertJson("{ '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. - AssertJson("{ '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. - AssertJson("{ '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 + " }"; - AssertJson(expectedText, actualText); - } - - [Test] - public void UnknownEnumValueNumeric_SingleField() - { - var message = new TestAllTypes { SingleForeignEnum = (ForeignEnum) 100 }; - AssertJson("{ 'singleForeignEnum': 100 }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void UnknownEnumValueNumeric_RepeatedField() - { - var message = new TestAllTypes { RepeatedForeignEnum = { ForeignEnum.ForeignBaz, (ForeignEnum) 100, ForeignEnum.ForeignFoo } }; - AssertJson("{ 'repeatedForeignEnum': [ 'FOREIGN_BAZ', 100, 'FOREIGN_FOO' ] }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void UnknownEnumValueNumeric_MapField() - { - var message = new TestMap { MapInt32Enum = { { 1, MapEnum.Foo }, { 2, (MapEnum) 100 }, { 3, MapEnum.Bar } } }; - AssertJson("{ 'mapInt32Enum': { '1': 'MAP_ENUM_FOO', '2': 100, '3': 'MAP_ENUM_BAR' } }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void UnknownEnumValue_RepeatedField_AllEntriesUnknown() - { - var message = new TestAllTypes { RepeatedForeignEnum = { (ForeignEnum) 200, (ForeignEnum) 100 } }; - AssertJson("{ 'repeatedForeignEnum': [ 200, 100 ] }", 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 }; - AssertJson("{ 'singleString': '" + encoded + "' }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void SurrogatePairEscaping() - { - var message = new TestAllTypes { SingleString = "a\uD801\uDC01b" }; - AssertJson("{ '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(() => JsonFormatter.Default.Format(message)); - - // Lone high surrogate - message = new TestAllTypes { SingleString = "a\uD801b" }; - Assert.Throws(() => JsonFormatter.Default.Format(message)); - } - - [Test] - [TestCase("foo_bar", "fooBar")] - [TestCase("bananaBanana", "bananaBanana")] - [TestCase("BANANABanana", "BANANABanana")] - [TestCase("simple", "simple")] - [TestCase("ACTION_AND_ADVENTURE", "ACTIONANDADVENTURE")] - [TestCase("action_and_adventure", "actionAndAdventure")] - [TestCase("kFoo", "kFoo")] - [TestCase("HTTPServer", "HTTPServer")] - [TestCase("CLIENT", "CLIENT")] - public void ToJsonName(string original, string expected) - { - Assert.AreEqual(expected, JsonFormatter.ToJsonName(original)); - } - - [Test] - [TestCase(null, "{ }")] - [TestCase("x", "{ 'fooString': 'x' }")] - [TestCase("", "{ 'fooString': '' }")] - 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 = JsonFormatter.Default; - AssertJson(expectedJson, formatter.Format(message)); - formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithFormatDefaultValues(true)); - AssertJson(expectedJson, formatter.Format(message)); - } - - [Test] - public void WrapperFormatting_Single() - { - // Just a few examples, handling both classes and value types, and - // default vs non-default values - var message = new TestWellKnownTypes - { - Int64Field = 10, - Int32Field = 0, - BytesField = ByteString.FromBase64("ABCD"), - StringField = "" - }; - var expectedJson = "{ 'int64Field': '10', 'int32Field': 0, 'stringField': '', 'bytesField': 'ABCD' }"; - AssertJson(expectedJson, JsonFormatter.Default.Format(message)); - } - - [Test] - public void WrapperFormatting_Message() - { - Assert.AreEqual("\"\"", JsonFormatter.Default.Format(new StringValue())); - Assert.AreEqual("0", JsonFormatter.Default.Format(new Int32Value())); - } - - [Test] - public void WrapperFormatting_IncludeNull() - { - // The actual JSON here is very large because there are lots of fields. Just test a couple of them. - var message = new TestWellKnownTypes { Int32Field = 10 }; - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithFormatDefaultValues(true)); - var actualJson = formatter.Format(message); - Assert.IsTrue(actualJson.Contains("\"int64Field\": null")); - Assert.IsFalse(actualJson.Contains("\"int32Field\": null")); - } - - [Test] - public void OutputIsInNumericFieldOrder_NoDefaults() - { - var formatter = JsonFormatter.Default; - var message = new TestJsonFieldOrdering { PlainString = "p1", PlainInt32 = 2 }; - AssertJson("{ 'plainString': 'p1', 'plainInt32': 2 }", formatter.Format(message)); - message = new TestJsonFieldOrdering { O1Int32 = 5, O2String = "o2", PlainInt32 = 10, PlainString = "plain" }; - AssertJson("{ 'plainString': 'plain', 'o2String': 'o2', 'plainInt32': 10, 'o1Int32': 5 }", formatter.Format(message)); - message = new TestJsonFieldOrdering { O1String = "", O2Int32 = 0, PlainInt32 = 10, PlainString = "plain" }; - AssertJson("{ 'plainString': 'plain', 'o1String': '', 'plainInt32': 10, 'o2Int32': 0 }", formatter.Format(message)); - } - - [Test] - public void OutputIsInNumericFieldOrder_WithDefaults() - { - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithFormatDefaultValues(true)); - var message = new TestJsonFieldOrdering(); - AssertJson("{ 'plainString': '', 'plainInt32': 0 }", formatter.Format(message)); - message = new TestJsonFieldOrdering { O1Int32 = 5, O2String = "o2", PlainInt32 = 10, PlainString = "plain" }; - AssertJson("{ 'plainString': 'plain', 'o2String': 'o2', 'plainInt32': 10, 'o1Int32': 5 }", formatter.Format(message)); - message = new TestJsonFieldOrdering { O1String = "", O2Int32 = 0, PlainInt32 = 10, PlainString = "plain" }; - AssertJson("{ 'plainString': 'plain', 'o1String': '', 'plainInt32': 10, 'o2Int32': 0 }", formatter.Format(message)); - } - - [Test] - [TestCase("1970-01-01T00:00:00Z", 0)] - [TestCase("1970-01-01T00:00:00.000000001Z", 1)] - [TestCase("1970-01-01T00:00:00.000000010Z", 10)] - [TestCase("1970-01-01T00:00:00.000000100Z", 100)] - [TestCase("1970-01-01T00:00:00.000001Z", 1000)] - [TestCase("1970-01-01T00:00:00.000010Z", 10000)] - [TestCase("1970-01-01T00:00:00.000100Z", 100000)] - [TestCase("1970-01-01T00:00:00.001Z", 1000000)] - [TestCase("1970-01-01T00:00:00.010Z", 10000000)] - [TestCase("1970-01-01T00:00:00.100Z", 100000000)] - [TestCase("1970-01-01T00:00:00.120Z", 120000000)] - [TestCase("1970-01-01T00:00:00.123Z", 123000000)] - [TestCase("1970-01-01T00:00:00.123400Z", 123400000)] - [TestCase("1970-01-01T00:00:00.123450Z", 123450000)] - [TestCase("1970-01-01T00:00:00.123456Z", 123456000)] - [TestCase("1970-01-01T00:00:00.123456700Z", 123456700)] - [TestCase("1970-01-01T00:00:00.123456780Z", 123456780)] - [TestCase("1970-01-01T00:00:00.123456789Z", 123456789)] - public void TimestampStandalone(string expected, int nanos) - { - Assert.AreEqual(WrapInQuotes(expected), new Timestamp { Nanos = nanos }.ToString()); - } - - [Test] - public void TimestampStandalone_FromDateTime() - { - // One before and one after the Unix epoch, more easily represented via DateTime. - Assert.AreEqual("\"1673-06-19T12:34:56Z\"", - new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp().ToString()); - Assert.AreEqual("\"2015-07-31T10:29:34Z\"", - new DateTime(2015, 7, 31, 10, 29, 34, DateTimeKind.Utc).ToTimestamp().ToString()); - } - - [Test] - [TestCase(-1, -1)] // Would be valid as duration - [TestCase(1, Timestamp.MaxNanos + 1)] - [TestCase(Timestamp.UnixSecondsAtBclMaxValue + 1, 0)] - [TestCase(Timestamp.UnixSecondsAtBclMinValue - 1, 0)] - public void TimestampStandalone_NonNormalized(long seconds, int nanoseconds) - { - var timestamp = new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => JsonFormatter.Default.Format(timestamp)); - } - - [Test] - public void TimestampField() - { - var message = new TestWellKnownTypes { TimestampField = new Timestamp() }; - AssertJson("{ 'timestampField': '1970-01-01T00:00:00Z' }", JsonFormatter.Default.Format(message)); - } - - [Test] - [TestCase(0, 0, "0s")] - [TestCase(1, 0, "1s")] - [TestCase(-1, 0, "-1s")] - [TestCase(0, 1, "0.000000001s")] - [TestCase(0, 10, "0.000000010s")] - [TestCase(0, 100, "0.000000100s")] - [TestCase(0, 1000, "0.000001s")] - [TestCase(0, 10000, "0.000010s")] - [TestCase(0, 100000, "0.000100s")] - [TestCase(0, 1000000, "0.001s")] - [TestCase(0, 10000000, "0.010s")] - [TestCase(0, 100000000, "0.100s")] - [TestCase(0, 120000000, "0.120s")] - [TestCase(0, 123000000, "0.123s")] - [TestCase(0, 123400000, "0.123400s")] - [TestCase(0, 123450000, "0.123450s")] - [TestCase(0, 123456000, "0.123456s")] - [TestCase(0, 123456700, "0.123456700s")] - [TestCase(0, 123456780, "0.123456780s")] - [TestCase(0, 123456789, "0.123456789s")] - [TestCase(0, -100000000, "-0.100s")] - [TestCase(1, 100000000, "1.100s")] - [TestCase(-1, -100000000, "-1.100s")] - public void DurationStandalone(long seconds, int nanoseconds, string expected) - { - var json = JsonFormatter.Default.Format(new Duration { Seconds = seconds, Nanos = nanoseconds }); - Assert.AreEqual(WrapInQuotes(expected), json); - } - - [Test] - [TestCase(1, 2123456789)] - [TestCase(1, -100000000)] - public void DurationStandalone_NonNormalized(long seconds, int nanoseconds) - { - var duration = new Duration { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => JsonFormatter.Default.Format(duration)); - } - - [Test] - public void DurationField() - { - var message = new TestWellKnownTypes { DurationField = new Duration() }; - AssertJson("{ 'durationField': '0s' }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void StructSample() - { - var message = new Struct - { - Fields = - { - { "a", Value.ForNull() }, - { "b", Value.ForBool(false) }, - { "c", Value.ForNumber(10.5) }, - { "d", Value.ForString("text") }, - { "e", Value.ForList(Value.ForString("t1"), Value.ForNumber(5)) }, - { "f", Value.ForStruct(new Struct { Fields = { { "nested", Value.ForString("value") } } }) } - } - }; - AssertJson("{ 'a': null, 'b': false, 'c': 10.5, 'd': 'text', 'e': [ 't1', 5 ], 'f': { 'nested': 'value' } }", message.ToString()); - } - - [Test] - [TestCase("foo__bar")] - [TestCase("foo_3_ar")] - [TestCase("fooBar")] - public void FieldMaskInvalid(string input) - { - var mask = new FieldMask { Paths = { input } }; - Assert.Throws(() => JsonFormatter.Default.Format(mask)); - } - - [Test] - public void FieldMaskStandalone() - { - var fieldMask = new FieldMask { Paths = { "", "single", "with_underscore", "nested.field.name", "nested..double_dot" } }; - Assert.AreEqual("\",single,withUnderscore,nested.field.name,nested..doubleDot\"", fieldMask.ToString()); - - // Invalid, but we shouldn't create broken JSON... - fieldMask = new FieldMask { Paths = { "x\\y" } }; - Assert.AreEqual(@"""x\\y""", fieldMask.ToString()); - } - - [Test] - public void FieldMaskField() - { - var message = new TestWellKnownTypes { FieldMaskField = new FieldMask { Paths = { "user.display_name", "photo" } } }; - AssertJson("{ 'fieldMaskField': 'user.displayName,photo' }", JsonFormatter.Default.Format(message)); - } - - // SourceContext is an example of a well-known type with no special JSON handling - [Test] - public void SourceContextStandalone() - { - var message = new SourceContext { FileName = "foo.proto" }; - AssertJson("{ 'fileName': 'foo.proto' }", JsonFormatter.Default.Format(message)); - } - - [Test] - public void AnyWellKnownType() - { - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithTypeRegistry(TypeRegistry.FromMessages(Timestamp.Descriptor))); - var timestamp = new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp(); - var any = Any.Pack(timestamp); - AssertJson("{ '@type': 'type.googleapis.com/google.protobuf.Timestamp', 'value': '1673-06-19T12:34:56Z' }", formatter.Format(any)); - } - - [Test] - public void AnyMessageType() - { - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithTypeRegistry(TypeRegistry.FromMessages(TestAllTypes.Descriptor))); - var message = new TestAllTypes { SingleInt32 = 10, SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } }; - var any = Any.Pack(message); - AssertJson("{ '@type': 'type.googleapis.com/protobuf_unittest3.TestAllTypes', 'singleInt32': 10, 'singleNestedMessage': { 'bb': 20 } }", formatter.Format(any)); - } - - [Test] - public void AnyMessageType_CustomPrefix() - { - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithTypeRegistry(TypeRegistry.FromMessages(TestAllTypes.Descriptor))); - var message = new TestAllTypes { SingleInt32 = 10 }; - var any = Any.Pack(message, "foo.bar/baz"); - AssertJson("{ '@type': 'foo.bar/baz/protobuf_unittest3.TestAllTypes', 'singleInt32': 10 }", formatter.Format(any)); - } - - [Test] - public void AnyNested() - { - var registry = TypeRegistry.FromMessages(TestWellKnownTypes.Descriptor, TestAllTypes.Descriptor); - var formatter = new JsonFormatter(JsonFormatter.Settings.Default.WithTypeRegistry(registry)); - - // Nest an Any as the value of an Any. - var doubleNestedMessage = new TestAllTypes { SingleInt32 = 20 }; - var nestedMessage = Any.Pack(doubleNestedMessage); - var message = new TestWellKnownTypes { AnyField = Any.Pack(nestedMessage) }; - AssertJson("{ 'anyField': { '@type': 'type.googleapis.com/google.protobuf.Any', 'value': { '@type': 'type.googleapis.com/protobuf_unittest3.TestAllTypes', 'singleInt32': 20 } } }", - formatter.Format(message)); - } - - [Test] - public void AnyUnknownType() - { - // The default type registry doesn't have any types in it. - var message = new TestAllTypes(); - var any = Any.Pack(message); - Assert.Throws(() => JsonFormatter.Default.Format(any)); - } - - [Test] - [TestCase(typeof(BoolValue), true, "true")] - [TestCase(typeof(Int32Value), 32, "32")] - [TestCase(typeof(Int64Value), 32L, "\"32\"")] - [TestCase(typeof(UInt32Value), 32U, "32")] - [TestCase(typeof(UInt64Value), 32UL, "\"32\"")] - [TestCase(typeof(StringValue), "foo", "\"foo\"")] - [TestCase(typeof(FloatValue), 1.5f, "1.5")] - [TestCase(typeof(DoubleValue), 1.5d, "1.5")] - public void Wrappers_Standalone(System.Type wrapperType, object value, string expectedJson) - { - IMessage populated = (IMessage)Activator.CreateInstance(wrapperType); - populated.Descriptor.Fields[WrappersReflection.WrapperValueFieldNumber].Accessor.SetValue(populated, value); - Assert.AreEqual(expectedJson, JsonFormatter.Default.Format(populated)); - } - - // Sanity tests for WriteValue. Not particularly comprehensive, as it's all covered above already, - // as FormatMessage uses WriteValue. - - [TestCase(null, "null")] - [TestCase(1, "1")] - [TestCase(1L, "'1'")] - [TestCase(0.5f, "0.5")] - [TestCase(0.5d, "0.5")] - [TestCase("text", "'text'")] - [TestCase("x\ny", @"'x\ny'")] - [TestCase(ForeignEnum.ForeignBar, "'FOREIGN_BAR'")] - public void WriteValue_Constant(object value, string expectedJson) - { - AssertWriteValue(value, expectedJson); - } - - [Test] - public void WriteValue_Timestamp() - { - var value = new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp(); - AssertWriteValue(value, "'1673-06-19T12:34:56Z'"); - } - - [Test] - public void WriteValue_Message() - { - var value = new TestAllTypes { SingleInt32 = 100, SingleInt64 = 3210987654321L }; - AssertWriteValue(value, "{ 'singleInt32': 100, 'singleInt64': '3210987654321' }"); - } - - [Test] - public void WriteValue_List() - { - var value = new RepeatedField { 1, 2, 3 }; - AssertWriteValue(value, "[ 1, 2, 3 ]"); - } - - private static void AssertWriteValue(object value, string expectedJson) - { - var writer = new StringWriter(); - JsonFormatter.Default.WriteValue(writer, value); - string actual = writer.ToString(); - AssertJson(expectedJson, actual); - } - - /// - /// Checks that the actual JSON is the same as the expected JSON - but after replacing - /// all apostrophes in the expected JSON with double quotes. This basically makes the tests easier - /// to read. - /// - private static void AssertJson(string expectedJsonWithApostrophes, string actualJson) - { - var expectedJson = expectedJsonWithApostrophes.Replace("'", "\""); - Assert.AreEqual(expectedJson, actualJson); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonParserTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonParserTest.cs deleted file mode 100644 index a6cf04a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonParserTest.cs +++ /dev/null @@ -1,976 +0,0 @@ -#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.Reflection; -using Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; -using System; - -namespace Google.Protobuf -{ - /// - /// Unit tests for JSON parsing. - /// - public class JsonParserTest - { - // Sanity smoke test - [Test] - public void AllTypesRoundtrip() - { - AssertRoundtrip(SampleMessages.CreateFullTestAllTypes()); - } - - [Test] - public void Maps() - { - AssertRoundtrip(new TestMap { MapStringString = { { "with spaces", "bar" }, { "a", "b" } } }); - AssertRoundtrip(new TestMap { MapInt32Int32 = { { 0, 1 }, { 2, 3 } } }); - AssertRoundtrip(new TestMap { MapBoolBool = { { false, true }, { true, false } } }); - } - - [Test] - [TestCase(" 1 ")] - [TestCase("+1")] - [TestCase("1,000")] - [TestCase("1.5")] - public void IntegerMapKeysAreStrict(string keyText) - { - // Test that integer parsing is strict. We assume that if this is correct for int32, - // it's correct for other numeric key types. - var json = "{ \"mapInt32Int32\": { \"" + keyText + "\" : \"1\" } }"; - Assert.Throws(() => JsonParser.Default.Parse(json)); - } - - [Test] - public void OriginalFieldNameAccepted() - { - var json = "{ \"single_int32\": 10 }"; - var expected = new TestAllTypes { SingleInt32 = 10 }; - Assert.AreEqual(expected, TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void SourceContextRoundtrip() - { - AssertRoundtrip(new SourceContext { FileName = "foo.proto" }); - } - - [Test] - public void SingularWrappers_DefaultNonNullValues() - { - var message = new TestWellKnownTypes - { - StringField = "", - BytesField = ByteString.Empty, - BoolField = false, - FloatField = 0f, - DoubleField = 0d, - Int32Field = 0, - Int64Field = 0, - Uint32Field = 0, - Uint64Field = 0 - }; - AssertRoundtrip(message); - } - - [Test] - public void SingularWrappers_NonDefaultValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - AssertRoundtrip(message); - } - - [Test] - public void SingularWrappers_ExplicitNulls() - { - // When we parse the "valueField": null part, we remember it... basically, it's one case - // where explicit default values don't fully roundtrip. - var message = new TestWellKnownTypes { ValueField = Value.ForNull() }; - var json = new JsonFormatter(new JsonFormatter.Settings(true)).Format(message); - var parsed = JsonParser.Default.Parse(json); - Assert.AreEqual(message, parsed); - } - - [Test] - [TestCase(typeof(BoolValue), "true", true)] - [TestCase(typeof(Int32Value), "32", 32)] - [TestCase(typeof(Int64Value), "32", 32L)] - [TestCase(typeof(Int64Value), "\"32\"", 32L)] - [TestCase(typeof(UInt32Value), "32", 32U)] - [TestCase(typeof(UInt64Value), "\"32\"", 32UL)] - [TestCase(typeof(UInt64Value), "32", 32UL)] - [TestCase(typeof(StringValue), "\"foo\"", "foo")] - [TestCase(typeof(FloatValue), "1.5", 1.5f)] - [TestCase(typeof(DoubleValue), "1.5", 1.5d)] - public void Wrappers_Standalone(System.Type wrapperType, string json, object expectedValue) - { - IMessage parsed = (IMessage)Activator.CreateInstance(wrapperType); - IMessage expected = (IMessage)Activator.CreateInstance(wrapperType); - JsonParser.Default.Merge(parsed, "null"); - Assert.AreEqual(expected, parsed); - - JsonParser.Default.Merge(parsed, json); - expected.Descriptor.Fields[WrappersReflection.WrapperValueFieldNumber].Accessor.SetValue(expected, expectedValue); - Assert.AreEqual(expected, parsed); - } - - [Test] - public void ExplicitNullValue() - { - string json = "{\"valueField\": null}"; - var message = JsonParser.Default.Parse(json); - Assert.AreEqual(new TestWellKnownTypes { ValueField = Value.ForNull() }, message); - } - - [Test] - public void BytesWrapper_Standalone() - { - ByteString data = ByteString.CopyFrom(1, 2, 3); - // Can't do this with attributes... - var parsed = JsonParser.Default.Parse(WrapInQuotes(data.ToBase64())); - var expected = new BytesValue { Value = data }; - Assert.AreEqual(expected, parsed); - } - - [Test] - public void RepeatedWrappers() - { - var message = new RepeatedWellKnownTypes - { - BoolField = { true, false }, - BytesField = { ByteString.CopyFrom(1, 2, 3), ByteString.CopyFrom(4, 5, 6), ByteString.Empty }, - DoubleField = { 12.5, -1.5, 0d }, - FloatField = { 123.25f, -20f, 0f }, - Int32Field = { int.MaxValue, int.MinValue, 0 }, - Int64Field = { long.MaxValue, long.MinValue, 0L }, - StringField = { "First", "Second", "" }, - Uint32Field = { uint.MaxValue, uint.MinValue, 0U }, - Uint64Field = { ulong.MaxValue, ulong.MinValue, 0UL }, - }; - AssertRoundtrip(message); - } - - [Test] - public void RepeatedField_NullElementProhibited() - { - string json = "{ \"repeated_foreign_message\": [null] }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void RepeatedField_NullOverallValueAllowed() - { - string json = "{ \"repeated_foreign_message\": null }"; - Assert.AreEqual(new TestAllTypes(), TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("{ \"mapInt32Int32\": { \"10\": null }")] - [TestCase("{ \"mapStringString\": { \"abc\": null }")] - [TestCase("{ \"mapInt32ForeignMessage\": { \"10\": null }")] - public void MapField_NullValueProhibited(string json) - { - Assert.Throws(() => TestMap.Parser.ParseJson(json)); - } - - [Test] - public void MapField_NullOverallValueAllowed() - { - string json = "{ \"mapInt32Int32\": null }"; - Assert.AreEqual(new TestMap(), TestMap.Parser.ParseJson(json)); - } - - [Test] - public void IndividualWrapperTypes() - { - Assert.AreEqual(new StringValue { Value = "foo" }, StringValue.Parser.ParseJson("\"foo\"")); - Assert.AreEqual(new Int32Value { Value = 1 }, Int32Value.Parser.ParseJson("1")); - // Can parse strings directly too - Assert.AreEqual(new Int32Value { Value = 1 }, Int32Value.Parser.ParseJson("\"1\"")); - } - - private static void AssertRoundtrip(T message) where T : IMessage, new() - { - var clone = message.Clone(); - var json = JsonFormatter.Default.Format(message); - var parsed = JsonParser.Default.Parse(json); - Assert.AreEqual(clone, parsed); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // Not entirely clear whether we intend to allow this... - [TestCase("1", 1)] - [TestCase("-1", -1)] - [TestCase("2147483647", 2147483647)] - [TestCase("-2147483648", -2147483648)] - public void StringToInt32_Valid(string jsonValue, int expectedParsedValue) - { - string json = "{ \"singleInt32\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt32); - } - - [Test] - [TestCase("+0")] - [TestCase(" 1")] - [TestCase("1 ")] - [TestCase("00")] - [TestCase("-00")] - [TestCase("--1")] - [TestCase("+1")] - [TestCase("1.5")] - [TestCase("1e10")] - [TestCase("2147483648")] - [TestCase("-2147483649")] - public void StringToInt32_Invalid(string jsonValue) - { - string json = "{ \"singleInt32\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0U)] - [TestCase("1", 1U)] - [TestCase("4294967295", 4294967295U)] - public void StringToUInt32_Valid(string jsonValue, uint expectedParsedValue) - { - string json = "{ \"singleUint32\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint32); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("4294967296")] - public void StringToUInt32_Invalid(string jsonValue) - { - string json = "{ \"singleUint32\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0L)] - [TestCase("1", 1L)] - [TestCase("-1", -1L)] - [TestCase("9223372036854775807", 9223372036854775807)] - [TestCase("-9223372036854775808", -9223372036854775808)] - public void StringToInt64_Valid(string jsonValue, long expectedParsedValue) - { - string json = "{ \"singleInt64\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-9223372036854775809")] - [TestCase("9223372036854775808")] - public void StringToInt64_Invalid(string jsonValue) - { - string json = "{ \"singleInt64\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0UL)] - [TestCase("1", 1UL)] - [TestCase("18446744073709551615", 18446744073709551615)] - public void StringToUInt64_Valid(string jsonValue, ulong expectedParsedValue) - { - string json = "{ \"singleUint64\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("18446744073709551616")] - public void StringToUInt64_Invalid(string jsonValue) - { - string json = "{ \"singleUint64\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0d)] - [TestCase("1", 1d)] - [TestCase("1.000000", 1d)] - [TestCase("1.0000000000000000000000001", 1d)] // We don't notice that we haven't preserved the exact value - [TestCase("-1", -1d)] - [TestCase("1e1", 10d)] - [TestCase("1e01", 10d)] // Leading decimals are allowed in exponents - [TestCase("1E1", 10d)] // Either case is fine - [TestCase("-1e1", -10d)] - [TestCase("1.5e1", 15d)] - [TestCase("-1.5e1", -15d)] - [TestCase("15e-1", 1.5d)] - [TestCase("-15e-1", -1.5d)] - [TestCase("1.79769e308", 1.79769e308)] - [TestCase("-1.79769e308", -1.79769e308)] - [TestCase("Infinity", double.PositiveInfinity)] - [TestCase("-Infinity", double.NegativeInfinity)] - [TestCase("NaN", double.NaN)] - public void StringToDouble_Valid(string jsonValue, double expectedParsedValue) - { - string json = "{ \"singleDouble\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleDouble); - } - - [Test] - [TestCase("1.7977e308")] - [TestCase("-1.7977e308")] - [TestCase("1e309")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("01")] - [TestCase("-00")] - [TestCase("-01")] - [TestCase("--1")] - [TestCase(" Infinity")] - [TestCase(" -Infinity")] - [TestCase("NaN ")] - [TestCase("Infinity ")] - [TestCase("-Infinity ")] - [TestCase(" NaN")] - [TestCase("INFINITY")] - [TestCase("nan")] - [TestCase("\u00BD")] // 1/2 as a single Unicode character. Just sanity checking... - public void StringToDouble_Invalid(string jsonValue) - { - string json = "{ \"singleDouble\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0f)] - [TestCase("1", 1f)] - [TestCase("1.000000", 1f)] - [TestCase("-1", -1f)] - [TestCase("3.402823e38", 3.402823e38f)] - [TestCase("-3.402823e38", -3.402823e38f)] - [TestCase("1.5e1", 15f)] - [TestCase("15e-1", 1.5f)] - public void StringToFloat_Valid(string jsonValue, float expectedParsedValue) - { - string json = "{ \"singleFloat\": \"" + jsonValue + "\"}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleFloat); - } - - [Test] - [TestCase("3.402824e38")] - [TestCase("-3.402824e38")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("--1")] - public void StringToFloat_Invalid(string jsonValue) - { - string json = "{ \"singleFloat\": \"" + jsonValue + "\"}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // Not entirely clear whether we intend to allow this... - [TestCase("1", 1)] - [TestCase("-1", -1)] - [TestCase("2147483647", 2147483647)] - [TestCase("-2147483648", -2147483648)] - [TestCase("1e1", 10)] - [TestCase("-1e1", -10)] - [TestCase("10.00", 10)] - [TestCase("-10.00", -10)] - public void NumberToInt32_Valid(string jsonValue, int expectedParsedValue) - { - string json = "{ \"singleInt32\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt32); - } - - [Test] - [TestCase("+0", typeof(InvalidJsonException))] - [TestCase("00", typeof(InvalidJsonException))] - [TestCase("-00", typeof(InvalidJsonException))] - [TestCase("--1", typeof(InvalidJsonException))] - [TestCase("+1", typeof(InvalidJsonException))] - [TestCase("1.5", typeof(InvalidProtocolBufferException))] - // Value is out of range - [TestCase("1e10", typeof(InvalidProtocolBufferException))] - [TestCase("2147483648", typeof(InvalidProtocolBufferException))] - [TestCase("-2147483649", typeof(InvalidProtocolBufferException))] - public void NumberToInt32_Invalid(string jsonValue, System.Type expectedExceptionType) - { - string json = "{ \"singleInt32\": " + jsonValue + "}"; - Assert.Throws(expectedExceptionType, () => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0U)] - [TestCase("1", 1U)] - [TestCase("4294967295", 4294967295U)] - public void NumberToUInt32_Valid(string jsonValue, uint expectedParsedValue) - { - string json = "{ \"singleUint32\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint32); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("4294967296")] - public void NumberToUInt32_Invalid(string jsonValue) - { - string json = "{ \"singleUint32\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0L)] - [TestCase("1", 1L)] - [TestCase("-1", -1L)] - // long.MaxValue isn't actually representable as a double. This string value is the highest - // representable value which isn't greater than long.MaxValue. - [TestCase("9223372036854774784", 9223372036854774784)] - [TestCase("-9223372036854775808", -9223372036854775808)] - public void NumberToInt64_Valid(string jsonValue, long expectedParsedValue) - { - string json = "{ \"singleInt64\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleInt64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("9223372036854775808")] - // Theoretical bound would be -9223372036854775809, but when that is parsed to a double - // we end up with the exact value of long.MinValue due to lack of precision. The value here - // is the "next double down". - [TestCase("-9223372036854780000")] - public void NumberToInt64_Invalid(string jsonValue) - { - string json = "{ \"singleInt64\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0UL)] - [TestCase("1", 1UL)] - // ulong.MaxValue isn't representable as a double. This value is the largest double within - // the range of ulong. - [TestCase("18446744073709549568", 18446744073709549568UL)] - public void NumberToUInt64_Valid(string jsonValue, ulong expectedParsedValue) - { - string json = "{ \"singleUint64\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleUint64); - } - - // Assume that anything non-bounds-related is covered in the Int32 case - [Test] - [TestCase("-1")] - [TestCase("18446744073709551616")] - public void NumberToUInt64_Invalid(string jsonValue) - { - string json = "{ \"singleUint64\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0d)] - [TestCase("1", 1d)] - [TestCase("1.000000", 1d)] - [TestCase("1.0000000000000000000000001", 1d)] // We don't notice that we haven't preserved the exact value - [TestCase("-1", -1d)] - [TestCase("1e1", 10d)] - [TestCase("1e01", 10d)] // Leading decimals are allowed in exponents - [TestCase("1E1", 10d)] // Either case is fine - [TestCase("-1e1", -10d)] - [TestCase("1.5e1", 15d)] - [TestCase("-1.5e1", -15d)] - [TestCase("15e-1", 1.5d)] - [TestCase("-15e-1", -1.5d)] - [TestCase("1.79769e308", 1.79769e308)] - [TestCase("-1.79769e308", -1.79769e308)] - public void NumberToDouble_Valid(string jsonValue, double expectedParsedValue) - { - string json = "{ \"singleDouble\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleDouble); - } - - [Test] - [TestCase("1.7977e308")] - [TestCase("-1.7977e308")] - [TestCase("1e309")] - [TestCase("1,0")] - [TestCase("1.0.0")] - [TestCase("+1")] - [TestCase("00")] - [TestCase("--1")] - [TestCase("\u00BD")] // 1/2 as a single Unicode character. Just sanity checking... - public void NumberToDouble_Invalid(string jsonValue) - { - string json = "{ \"singleDouble\": " + jsonValue + "}"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("0", 0f)] - [TestCase("1", 1f)] - [TestCase("1.000000", 1f)] - [TestCase("-1", -1f)] - [TestCase("3.402823e38", 3.402823e38f)] - [TestCase("-3.402823e38", -3.402823e38f)] - [TestCase("1.5e1", 15f)] - [TestCase("15e-1", 1.5f)] - public void NumberToFloat_Valid(string jsonValue, float expectedParsedValue) - { - string json = "{ \"singleFloat\": " + jsonValue + "}"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(expectedParsedValue, parsed.SingleFloat); - } - - [Test] - [TestCase("3.402824e38", typeof(InvalidProtocolBufferException))] - [TestCase("-3.402824e38", typeof(InvalidProtocolBufferException))] - [TestCase("1,0", typeof(InvalidJsonException))] - [TestCase("1.0.0", typeof(InvalidJsonException))] - [TestCase("+1", typeof(InvalidJsonException))] - [TestCase("00", typeof(InvalidJsonException))] - [TestCase("--1", typeof(InvalidJsonException))] - public void NumberToFloat_Invalid(string jsonValue, System.Type expectedExceptionType) - { - string json = "{ \"singleFloat\": " + jsonValue + "}"; - Assert.Throws(expectedExceptionType, () => TestAllTypes.Parser.ParseJson(json)); - } - - // The simplest way of testing that the value has parsed correctly is to reformat it, - // as we trust the formatting. In many cases that will give the same result as the input, - // so in those cases we accept an expectedFormatted value of null. Sometimes the results - // will be different though, due to a different number of digits being provided. - [Test] - // Z offset - [TestCase("2015-10-09T14:46:23.123456789Z", null)] - [TestCase("2015-10-09T14:46:23.123456Z", null)] - [TestCase("2015-10-09T14:46:23.123Z", null)] - [TestCase("2015-10-09T14:46:23Z", null)] - [TestCase("2015-10-09T14:46:23.123456000Z", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.1234560Z", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123000000Z", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.1230Z", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.00Z", "2015-10-09T14:46:23Z")] - - // +00:00 offset - [TestCase("2015-10-09T14:46:23.123456789+00:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T14:46:23.123456+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23+00:00", "2015-10-09T14:46:23Z")] - [TestCase("2015-10-09T14:46:23.123456000+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.1234560+00:00", "2015-10-09T14:46:23.123456Z")] - [TestCase("2015-10-09T14:46:23.123000000+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.1230+00:00", "2015-10-09T14:46:23.123Z")] - [TestCase("2015-10-09T14:46:23.00+00:00", "2015-10-09T14:46:23Z")] - - // Other offsets (assume by now that the subsecond handling is okay) - [TestCase("2015-10-09T15:46:23.123456789+01:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T13:46:23.123456789-01:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T15:16:23.123456789+00:30", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T14:16:23.123456789-00:30", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T16:31:23.123456789+01:45", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-09T13:01:23.123456789-01:45", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-10T08:46:23.123456789+18:00", "2015-10-09T14:46:23.123456789Z")] - [TestCase("2015-10-08T20:46:23.123456789-18:00", "2015-10-09T14:46:23.123456789Z")] - - // Leap years and min/max - [TestCase("2016-02-29T14:46:23.123456789Z", null)] - [TestCase("2000-02-29T14:46:23.123456789Z", null)] - [TestCase("0001-01-01T00:00:00Z", null)] - [TestCase("9999-12-31T23:59:59.999999999Z", null)] - public void Timestamp_Valid(string jsonValue, string expectedFormatted) - { - expectedFormatted = expectedFormatted ?? jsonValue; - string json = WrapInQuotes(jsonValue); - var parsed = Timestamp.Parser.ParseJson(json); - Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString()); - } - - [Test] - [TestCase("2015-10-09 14:46:23.123456789Z", Description = "No T between date and time")] - [TestCase("2015/10/09T14:46:23.123456789Z", Description = "Wrong date separators")] - [TestCase("2015-10-09T14.46.23.123456789Z", Description = "Wrong time separators")] - [TestCase("2015-10-09T14:46:23,123456789Z", Description = "Wrong fractional second separators (valid ISO-8601 though)")] - [TestCase(" 2015-10-09T14:46:23.123456789Z", Description = "Whitespace at start")] - [TestCase("2015-10-09T14:46:23.123456789Z ", Description = "Whitespace at end")] - [TestCase("2015-10-09T14:46:23.1234567890", Description = "Too many digits")] - [TestCase("2015-10-09T14:46:23.123456789", Description = "No offset")] - [TestCase("2015-13-09T14:46:23.123456789Z", Description = "Invalid month")] - [TestCase("2015-10-32T14:46:23.123456789Z", Description = "Invalid day")] - [TestCase("2015-10-09T24:00:00.000000000Z", Description = "Invalid hour (valid ISO-8601 though)")] - [TestCase("2015-10-09T14:60:23.123456789Z", Description = "Invalid minutes")] - [TestCase("2015-10-09T14:46:60.123456789Z", Description = "Invalid seconds")] - [TestCase("2015-10-09T14:46:23.123456789+18:01", Description = "Offset too large (positive)")] - [TestCase("2015-10-09T14:46:23.123456789-18:01", Description = "Offset too large (negative)")] - [TestCase("2015-10-09T14:46:23.123456789-00:00", Description = "Local offset (-00:00) makes no sense here")] - [TestCase("0001-01-01T00:00:00+00:01", Description = "Value before earliest when offset applied")] - [TestCase("9999-12-31T23:59:59.999999999-00:01", Description = "Value after latest when offset applied")] - [TestCase("2100-02-29T14:46:23.123456789Z", Description = "Feb 29th on a non-leap-year")] - public void Timestamp_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => Timestamp.Parser.ParseJson(json)); - } - - [Test] - public void StructValue_Null() - { - Assert.AreEqual(new Value { NullValue = 0 }, Value.Parser.ParseJson("null")); - } - - [Test] - public void StructValue_String() - { - Assert.AreEqual(new Value { StringValue = "hi" }, Value.Parser.ParseJson("\"hi\"")); - } - - [Test] - public void StructValue_Bool() - { - Assert.AreEqual(new Value { BoolValue = true }, Value.Parser.ParseJson("true")); - Assert.AreEqual(new Value { BoolValue = false }, Value.Parser.ParseJson("false")); - } - - [Test] - public void StructValue_List() - { - Assert.AreEqual(Value.ForList(Value.ForNumber(1), Value.ForString("x")), Value.Parser.ParseJson("[1, \"x\"]")); - } - - [Test] - public void Value_List_WithNullElement() - { - var expected = Value.ForList(Value.ForString("x"), Value.ForNull(), Value.ForString("y")); - var actual = Value.Parser.ParseJson("[\"x\", null, \"y\"]"); - Assert.AreEqual(expected, actual); - } - - [Test] - public void StructValue_NullElement() - { - var expected = Value.ForStruct(new Struct { Fields = { { "x", Value.ForNull() } } }); - var actual = Value.Parser.ParseJson("{ \"x\": null }"); - Assert.AreEqual(expected, actual); - } - - [Test] - public void ParseListValue() - { - Assert.AreEqual(new ListValue { Values = { Value.ForNumber(1), Value.ForString("x") } }, ListValue.Parser.ParseJson("[1, \"x\"]")); - } - - [Test] - public void StructValue_Struct() - { - Assert.AreEqual( - Value.ForStruct(new Struct { Fields = { { "x", Value.ForNumber(1) }, { "y", Value.ForString("z") } } }), - Value.Parser.ParseJson("{ \"x\": 1, \"y\": \"z\" }")); - } - - [Test] - public void ParseStruct() - { - Assert.AreEqual(new Struct { Fields = { { "x", Value.ForNumber(1) }, { "y", Value.ForString("z") } } }, - Struct.Parser.ParseJson("{ \"x\": 1, \"y\": \"z\" }")); - } - - // TODO for duration parsing: upper and lower bounds. - // +/- 315576000000 seconds - - [Test] - [TestCase("1.123456789s", null)] - [TestCase("1.123456s", null)] - [TestCase("1.123s", null)] - [TestCase("1.12300s", "1.123s")] - [TestCase("1.12345s", "1.123450s")] - [TestCase("1s", null)] - [TestCase("-1.123456789s", null)] - [TestCase("-1.123456s", null)] - [TestCase("-1.123s", null)] - [TestCase("-1s", null)] - [TestCase("0.123s", null)] - [TestCase("-0.123s", null)] - [TestCase("123456.123s", null)] - [TestCase("-123456.123s", null)] - // Upper and lower bounds - [TestCase("315576000000s", null)] - [TestCase("-315576000000s", null)] - public void Duration_Valid(string jsonValue, string expectedFormatted) - { - expectedFormatted = expectedFormatted ?? jsonValue; - string json = WrapInQuotes(jsonValue); - var parsed = Duration.Parser.ParseJson(json); - Assert.AreEqual(WrapInQuotes(expectedFormatted), parsed.ToString()); - } - - // The simplest way of testing that the value has parsed correctly is to reformat it, - // as we trust the formatting. In many cases that will give the same result as the input, - // so in those cases we accept an expectedFormatted value of null. Sometimes the results - // will be different though, due to a different number of digits being provided. - [Test] - [TestCase("1.1234567890s", Description = "Too many digits")] - [TestCase("1.123456789", Description = "No suffix")] - [TestCase("1.123456789ss", Description = "Too much suffix")] - [TestCase("1.123456789S", Description = "Upper case suffix")] - [TestCase("+1.123456789s", Description = "Leading +")] - [TestCase(".123456789s", Description = "No integer before the fraction")] - [TestCase("1,123456789s", Description = "Comma as decimal separator")] - [TestCase("1x1.123456789s", Description = "Non-digit in integer part")] - [TestCase("1.1x3456789s", Description = "Non-digit in fractional part")] - [TestCase(" 1.123456789s", Description = "Whitespace before fraction")] - [TestCase("1.123456789s ", Description = "Whitespace after value")] - [TestCase("01.123456789s", Description = "Leading zero (positive)")] - [TestCase("-01.123456789s", Description = "Leading zero (negative)")] - [TestCase("--0.123456789s", Description = "Double minus sign")] - // Violate upper/lower bounds in various ways - [TestCase("315576000001s", Description = "Integer part too large")] - [TestCase("3155760000000s", Description = "Integer part too long (positive)")] - [TestCase("-3155760000000s", Description = "Integer part too long (negative)")] - public void Duration_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => Duration.Parser.ParseJson(json)); - } - - // Not as many tests for field masks as I'd like; more to be added when we have more - // detailed specifications. - - [Test] - [TestCase("")] - [TestCase("foo", "foo")] - [TestCase("foo,bar", "foo", "bar")] - [TestCase("foo.bar", "foo.bar")] - [TestCase("fooBar", "foo_bar")] - [TestCase("fooBar.bazQux", "foo_bar.baz_qux")] - public void FieldMask_Valid(string jsonValue, params string[] expectedPaths) - { - string json = WrapInQuotes(jsonValue); - var parsed = FieldMask.Parser.ParseJson(json); - CollectionAssert.AreEqual(expectedPaths, parsed.Paths); - } - - [Test] - [TestCase("foo_bar")] - public void FieldMask_Invalid(string jsonValue) - { - string json = WrapInQuotes(jsonValue); - Assert.Throws(() => FieldMask.Parser.ParseJson(json)); - } - - [Test] - public void Any_RegularMessage() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, TypeRegistry.FromMessages(TestAllTypes.Descriptor))); - var message = new TestAllTypes { SingleInt32 = 10, SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 20 } }; - var original = Any.Pack(message); - var json = formatter.Format(original); // This is tested in JsonFormatterTest - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - Assert.AreEqual(original, parser.Parse(json)); - string valueFirstJson = "{ \"singleInt32\": 10, \"singleNestedMessage\": { \"bb\": 20 }, \"@type\": \"type.googleapis.com/protobuf_unittest3.TestAllTypes\" }"; - Assert.AreEqual(original, parser.Parse(valueFirstJson)); - } - - [Test] - public void Any_CustomPrefix() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - var message = new TestAllTypes { SingleInt32 = 10 }; - var original = Any.Pack(message, "custom.prefix/middle-part"); - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - string json = "{ \"@type\": \"custom.prefix/middle-part/protobuf_unittest3.TestAllTypes\", \"singleInt32\": 10 }"; - Assert.AreEqual(original, parser.Parse(json)); - } - - [Test] - public void Any_UnknownType() - { - string json = "{ \"@type\": \"type.googleapis.com/bogus\" }"; - Assert.Throws(() => Any.Parser.ParseJson(json)); - } - - [Test] - public void Any_NoTypeUrl() - { - string json = "{ \"foo\": \"bar\" }"; - Assert.Throws(() => Any.Parser.ParseJson(json)); - } - - [Test] - public void Any_WellKnownType() - { - var registry = TypeRegistry.FromMessages(Timestamp.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, registry)); - var timestamp = new DateTime(1673, 6, 19, 12, 34, 56, DateTimeKind.Utc).ToTimestamp(); - var original = Any.Pack(timestamp); - var json = formatter.Format(original); // This is tested in JsonFormatterTest - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - Assert.AreEqual(original, parser.Parse(json)); - string valueFirstJson = "{ \"value\": \"1673-06-19T12:34:56Z\", \"@type\": \"type.googleapis.com/google.protobuf.Timestamp\" }"; - Assert.AreEqual(original, parser.Parse(valueFirstJson)); - } - - [Test] - public void Any_Nested() - { - var registry = TypeRegistry.FromMessages(TestWellKnownTypes.Descriptor, TestAllTypes.Descriptor); - var formatter = new JsonFormatter(new JsonFormatter.Settings(false, registry)); - var parser = new JsonParser(new JsonParser.Settings(10, registry)); - var doubleNestedMessage = new TestAllTypes { SingleInt32 = 20 }; - var nestedMessage = Any.Pack(doubleNestedMessage); - var message = new TestWellKnownTypes { AnyField = Any.Pack(nestedMessage) }; - var json = formatter.Format(message); - // Use the descriptor-based parser just for a change. - Assert.AreEqual(message, parser.Parse(json, TestWellKnownTypes.Descriptor)); - } - - [Test] - public void DataAfterObject() - { - string json = "{} 10"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - /// - /// JSON equivalent to - /// - [Test] - public void MaliciousRecursion() - { - string data64 = CodedInputStreamTest.MakeRecursiveMessage(64).ToString(); - string data65 = CodedInputStreamTest.MakeRecursiveMessage(65).ToString(); - - var parser64 = new JsonParser(new JsonParser.Settings(64)); - CodedInputStreamTest.AssertMessageDepth(parser64.Parse(data64), 64); - Assert.Throws(() => parser64.Parse(data65)); - - var parser63 = new JsonParser(new JsonParser.Settings(63)); - Assert.Throws(() => parser63.Parse(data64)); - } - - [Test] - [TestCase("AQI")] - [TestCase("_-==")] - public void Bytes_InvalidBase64(string badBase64) - { - string json = "{ \"singleBytes\": \"" + badBase64 + "\" }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("\"FOREIGN_BAR\"", ForeignEnum.ForeignBar)] - [TestCase("5", ForeignEnum.ForeignBar)] - [TestCase("100", (ForeignEnum)100)] - public void EnumValid(string value, ForeignEnum expectedValue) - { - string json = "{ \"singleForeignEnum\": " + value + " }"; - var parsed = TestAllTypes.Parser.ParseJson(json); - Assert.AreEqual(new TestAllTypes { SingleForeignEnum = expectedValue }, parsed); - } - - [Test] - [TestCase("\"NOT_A_VALID_VALUE\"")] - [TestCase("5.5")] - public void Enum_Invalid(string value) - { - string json = "{ \"singleForeignEnum\": " + value + " }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void OneofDuplicate_Invalid() - { - string json = "{ \"oneofString\": \"x\", \"oneofUint32\": 10 }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - public void UnknownField_NotIgnored() - { - string json = "{ \"unknownField\": 10, \"singleString\": \"x\" }"; - Assert.Throws(() => TestAllTypes.Parser.ParseJson(json)); - } - - [Test] - [TestCase("5")] - [TestCase("\"text\"")] - [TestCase("[0, 1, 2]")] - [TestCase("{ \"a\": { \"b\": 10 } }")] - public void UnknownField_Ignored(string value) - { - var parser = new JsonParser(JsonParser.Settings.Default.WithIgnoreUnknownFields(true)); - string json = "{ \"unknownField\": " + value + ", \"singleString\": \"x\" }"; - var actual = parser.Parse(json); - var expected = new TestAllTypes { SingleString = "x" }; - Assert.AreEqual(expected, actual); - } - - /// - /// Various tests use strings which have quotes round them for parsing or as the result - /// of formatting, but without those quotes being specified in the tests (for the sake of readability). - /// This method simply returns the input, wrapped in double quotes. - /// - internal static string WrapInQuotes(string text) - { - return '"' + text + '"'; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonTokenizerTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonTokenizerTest.cs deleted file mode 100644 index df43eff..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/JsonTokenizerTest.cs +++ /dev/null @@ -1,424 +0,0 @@ -#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 NUnit.Framework; -using System; -using System.IO; - -namespace Google.Protobuf -{ - public class JsonTokenizerTest - { - [Test] - public void EmptyObjectValue() - { - AssertTokens("{}", JsonToken.StartObject, JsonToken.EndObject); - } - - [Test] - public void EmptyArrayValue() - { - AssertTokens("[]", JsonToken.StartArray, JsonToken.EndArray); - } - - [Test] - [TestCase("foo", "foo")] - [TestCase("tab\\t", "tab\t")] - [TestCase("line\\nfeed", "line\nfeed")] - [TestCase("carriage\\rreturn", "carriage\rreturn")] - [TestCase("back\\bspace", "back\bspace")] - [TestCase("form\\ffeed", "form\ffeed")] - [TestCase("escaped\\/slash", "escaped/slash")] - [TestCase("escaped\\\\backslash", "escaped\\backslash")] - [TestCase("escaped\\\"quote", "escaped\"quote")] - [TestCase("foo {}[] bar", "foo {}[] bar")] - [TestCase("foo\\u09aFbar", "foo\u09afbar")] // Digits, upper hex, lower hex - [TestCase("ab\ud800\udc00cd", "ab\ud800\udc00cd")] - [TestCase("ab\\ud800\\udc00cd", "ab\ud800\udc00cd")] - public void StringValue(string json, string expectedValue) - { - AssertTokensNoReplacement("\"" + json + "\"", JsonToken.Value(expectedValue)); - } - - // Valid surrogate pairs, with mixed escaping. These test cases can't be expressed - // using TestCase as they have no valid UTF-8 representation. - // It's unclear exactly how we should handle a mixture of escaped or not: that can't - // come from UTF-8 text, but could come from a .NET string. For the moment, - // treat it as valid in the obvious way. - [Test] - public void MixedSurrogatePairs() - { - string expected = "\ud800\udc00"; - AssertTokens("'\\ud800\udc00'", JsonToken.Value(expected)); - AssertTokens("'\ud800\\udc00'", JsonToken.Value(expected)); - } - - [Test] - public void ObjectDepth() - { - string json = "{ \"foo\": { \"x\": 1, \"y\": [ 0 ] } }"; - var tokenizer = JsonTokenizer.FromTextReader(new StringReader(json)); - // If we had more tests like this, I'd introduce a helper method... but for one test, it's not worth it. - Assert.AreEqual(0, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartObject, tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("foo"), tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartObject, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("x"), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Value(1), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.Name("y"), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.StartArray, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); // Depth hasn't changed in array - Assert.AreEqual(JsonToken.Value(0), tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndArray, tokenizer.Next()); - Assert.AreEqual(2, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndObject, tokenizer.Next()); - Assert.AreEqual(1, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndObject, tokenizer.Next()); - Assert.AreEqual(0, tokenizer.ObjectDepth); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.AreEqual(0, tokenizer.ObjectDepth); - } - - [Test] - public void ObjectDepth_WithPushBack() - { - string json = "{}"; - var tokenizer = JsonTokenizer.FromTextReader(new StringReader(json)); - Assert.AreEqual(0, tokenizer.ObjectDepth); - var token = tokenizer.Next(); - Assert.AreEqual(1, tokenizer.ObjectDepth); - // When we push back a "start object", we should effectively be back to the previous depth. - tokenizer.PushBack(token); - Assert.AreEqual(0, tokenizer.ObjectDepth); - // Read the same token again, and get back to depth 1 - token = tokenizer.Next(); - Assert.AreEqual(1, tokenizer.ObjectDepth); - - // Now the same in reverse, with EndObject - token = tokenizer.Next(); - Assert.AreEqual(0, tokenizer.ObjectDepth); - tokenizer.PushBack(token); - Assert.AreEqual(1, tokenizer.ObjectDepth); - tokenizer.Next(); - Assert.AreEqual(0, tokenizer.ObjectDepth); - } - - [Test] - [TestCase("embedded tab\t")] - [TestCase("embedded CR\r")] - [TestCase("embedded LF\n")] - [TestCase("embedded bell\u0007")] - [TestCase("bad escape\\a")] - [TestCase("incomplete escape\\")] - [TestCase("incomplete Unicode escape\\u000")] - [TestCase("invalid Unicode escape\\u000H")] - // Surrogate pair handling, both in raw .NET strings and escaped. We only need - // to detect this in strings, as non-ASCII characters anywhere other than in strings - // will already lead to parsing errors. - [TestCase("\\ud800")] - [TestCase("\\udc00")] - [TestCase("\\ud800x")] - [TestCase("\\udc00x")] - [TestCase("\\udc00\\ud800y")] - public void InvalidStringValue(string json) - { - AssertThrowsAfter("\"" + json + "\""); - } - - // Tests for invalid strings that can't be expressed in attributes, - // as the constants can't be expressed as UTF-8 strings. - [Test] - public void InvalidSurrogatePairs() - { - AssertThrowsAfter("\"\ud800x\""); - AssertThrowsAfter("\"\udc00y\""); - AssertThrowsAfter("\"\udc00\ud800y\""); - } - - [Test] - [TestCase("0", 0)] - [TestCase("-0", 0)] // We don't distinguish between positive and negative 0 - [TestCase("1", 1)] - [TestCase("-1", -1)] - // From here on, assume leading sign is okay... - [TestCase("1.125", 1.125)] - [TestCase("1.0", 1)] - [TestCase("1e5", 100000)] - [TestCase("1e000000", 1)] // Weird, but not prohibited by the spec - [TestCase("1E5", 100000)] - [TestCase("1e+5", 100000)] - [TestCase("1E-5", 0.00001)] - [TestCase("123E-2", 1.23)] - [TestCase("123.45E3", 123450)] - [TestCase(" 1 ", 1)] - public void NumberValue(string json, double expectedValue) - { - AssertTokens(json, JsonToken.Value(expectedValue)); - } - - [Test] - [TestCase("00")] - [TestCase(".5")] - [TestCase("1.")] - [TestCase("1e")] - [TestCase("1e-")] - [TestCase("--")] - [TestCase("--1")] - [TestCase("-1.7977e308")] - [TestCase("1.7977e308")] - public void InvalidNumberValue(string json) - { - AssertThrowsAfter(json); - } - - [Test] - [TestCase("nul")] - [TestCase("nothing")] - [TestCase("truth")] - [TestCase("fALSEhood")] - public void InvalidLiterals(string json) - { - AssertThrowsAfter(json); - } - - [Test] - public void NullValue() - { - AssertTokens("null", JsonToken.Null); - } - - [Test] - public void TrueValue() - { - AssertTokens("true", JsonToken.True); - } - - [Test] - public void FalseValue() - { - AssertTokens("false", JsonToken.False); - } - - [Test] - public void SimpleObject() - { - AssertTokens("{'x': 'y'}", - JsonToken.StartObject, JsonToken.Name("x"), JsonToken.Value("y"), JsonToken.EndObject); - } - - [Test] - [TestCase("[10, 20", 3)] - [TestCase("[10,", 2)] - [TestCase("[10:20]", 2)] - [TestCase("[", 1)] - [TestCase("[,", 1)] - [TestCase("{", 1)] - [TestCase("{,", 1)] - [TestCase("{[", 1)] - [TestCase("{{", 1)] - [TestCase("{0", 1)] - [TestCase("{null", 1)] - [TestCase("{false", 1)] - [TestCase("{true", 1)] - [TestCase("}", 0)] - [TestCase("]", 0)] - [TestCase(",", 0)] - [TestCase("'foo' 'bar'", 1)] - [TestCase(":", 0)] - [TestCase("'foo", 0)] // Incomplete string - [TestCase("{ 'foo' }", 2)] - [TestCase("{ x:1", 1)] // Property names must be quoted - [TestCase("{]", 1)] - [TestCase("[}", 1)] - [TestCase("[1,", 2)] - [TestCase("{'x':0]", 3)] - [TestCase("{ 'foo': }", 2)] - [TestCase("{ 'foo':'bar', }", 3)] - public void InvalidStructure(string json, int expectedValidTokens) - { - // Note: we don't test that the earlier tokens are exactly as expected, - // partly because that's hard to parameterize. - var reader = new StringReader(json.Replace('\'', '"')); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedValidTokens; i++) - { - Assert.IsNotNull(tokenizer.Next()); - } - Assert.Throws(() => tokenizer.Next()); - } - - [Test] - public void ArrayMixedType() - { - AssertTokens("[1, 'foo', null, false, true, [2], {'x':'y' }]", - JsonToken.StartArray, - JsonToken.Value(1), - JsonToken.Value("foo"), - JsonToken.Null, - JsonToken.False, - JsonToken.True, - JsonToken.StartArray, - JsonToken.Value(2), - JsonToken.EndArray, - JsonToken.StartObject, - JsonToken.Name("x"), - JsonToken.Value("y"), - JsonToken.EndObject, - JsonToken.EndArray); - } - - [Test] - public void ObjectMixedType() - { - AssertTokens(@"{'a': 1, 'b': 'bar', 'c': null, 'd': false, 'e': true, - 'f': [2], 'g': {'x':'y' }}", - JsonToken.StartObject, - JsonToken.Name("a"), - JsonToken.Value(1), - JsonToken.Name("b"), - JsonToken.Value("bar"), - JsonToken.Name("c"), - JsonToken.Null, - JsonToken.Name("d"), - JsonToken.False, - JsonToken.Name("e"), - JsonToken.True, - JsonToken.Name("f"), - JsonToken.StartArray, - JsonToken.Value(2), - JsonToken.EndArray, - JsonToken.Name("g"), - JsonToken.StartObject, - JsonToken.Name("x"), - JsonToken.Value("y"), - JsonToken.EndObject, - JsonToken.EndObject); - } - - [Test] - public void NextAfterEndDocumentThrows() - { - var tokenizer = JsonTokenizer.FromTextReader(new StringReader("null")); - Assert.AreEqual(JsonToken.Null, tokenizer.Next()); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.Throws(() => tokenizer.Next()); - } - - [Test] - public void CanPushBackEndDocument() - { - var tokenizer = JsonTokenizer.FromTextReader(new StringReader("null")); - Assert.AreEqual(JsonToken.Null, tokenizer.Next()); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - tokenizer.PushBack(JsonToken.EndDocument); - Assert.AreEqual(JsonToken.EndDocument, tokenizer.Next()); - Assert.Throws(() => tokenizer.Next()); - } - - [Test] - [TestCase("{ 'skip': 0, 'next': 1")] - [TestCase("{ 'skip': [0, 1, 2], 'next': 1")] - [TestCase("{ 'skip': 'x', 'next': 1")] - [TestCase("{ 'skip': ['x', 'y'], 'next': 1")] - [TestCase("{ 'skip': {'a': 0}, 'next': 1")] - [TestCase("{ 'skip': {'a': [0, {'b':[]}]}, 'next': 1")] - public void SkipValue(string json) - { - var tokenizer = JsonTokenizer.FromTextReader(new StringReader(json.Replace('\'', '"'))); - Assert.AreEqual(JsonToken.StartObject, tokenizer.Next()); - Assert.AreEqual("skip", tokenizer.Next().StringValue); - tokenizer.SkipValue(); - Assert.AreEqual("next", tokenizer.Next().StringValue); - } - - /// - /// Asserts that the specified JSON is tokenized into the given sequence of tokens. - /// All apostrophes are first converted to double quotes, allowing any tests - /// that don't need to check actual apostrophe handling to use apostrophes in the JSON, avoiding - /// messy string literal escaping. The "end document" token is not specified in the list of - /// expected tokens, but is implicit. - /// - private static void AssertTokens(string json, params JsonToken[] expectedTokens) - { - AssertTokensNoReplacement(json.Replace('\'', '"'), expectedTokens); - } - - /// - /// Asserts that the specified JSON is tokenized into the given sequence of tokens. - /// Unlike , this does not perform any character - /// replacement on the specified JSON, and should be used when the text contains apostrophes which - /// are expected to be used *as* apostrophes. The "end document" token is not specified in the list of - /// expected tokens, but is implicit. - /// - private static void AssertTokensNoReplacement(string json, params JsonToken[] expectedTokens) - { - var reader = new StringReader(json); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedTokens.Length; i++) - { - var actualToken = tokenizer.Next(); - if (actualToken == JsonToken.EndDocument) - { - Assert.Fail("Expected {0} but reached end of token stream", expectedTokens[i]); - } - Assert.AreEqual(expectedTokens[i], actualToken); - } - var finalToken = tokenizer.Next(); - if (finalToken != JsonToken.EndDocument) - { - Assert.Fail("Expected token stream to be exhausted; received {0}", finalToken); - } - } - - private static void AssertThrowsAfter(string json, params JsonToken[] expectedTokens) - { - var reader = new StringReader(json); - var tokenizer = JsonTokenizer.FromTextReader(reader); - for (int i = 0; i < expectedTokens.Length; i++) - { - var actualToken = tokenizer.Next(); - if (actualToken == JsonToken.EndDocument) - { - Assert.Fail("Expected {0} but reached end of document", expectedTokens[i]); - } - Assert.AreEqual(expectedTokens[i], actualToken); - } - Assert.Throws(() => tokenizer.Next()); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/CustomOptionsTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/CustomOptionsTest.cs deleted file mode 100644 index ff4e9a7..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/CustomOptionsTest.cs +++ /dev/null @@ -1,212 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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.Reflection; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; -using System.IO; -using System.Linq; -using UnitTest.Issues.TestProtos; -using static Google.Protobuf.WireFormat; -using static UnitTest.Issues.TestProtos.ComplexOptionType2.Types; -using static UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types; -using static Google.Protobuf.Test.Reflection.CustomOptionNumber; - -namespace Google.Protobuf.Test.Reflection -{ - // Internal enum to allow us to use "using static" for convenience. - // These are the options defined in unittest_custom_options_proto3.proto - internal enum CustomOptionNumber - { - FileOpt1 = 7736974, - MessageOpt1 = 7739036, - FieldOpt1 = 7740936, - OneofOpt1 = 7740111, - EnumOpt1 = 7753576, - EnumValueOpt1 = 1560678, - ServiceOpt1 = 7887650, - MethodOpt1 = 7890860, - - // All message options... - BoolOpt = 7706090, - Int32Opt = 7705709, - Int64Opt = 7705542, - UInt32Opt = 7704880, - UInt64Opt = 7702367, - SInt32Opt = 7701568, - SInt64Opt = 7700863, - Fixed32Opt = 7700307, - Fixed64Opt = 7700194, - SFixed32Opt = 7698645, - SFixed64Opt = 7685475, - FloatOpt = 7675390, - DoubleOpt = 7673293, - StringOpt = 7673285, - BytesOpt = 7673238, - EnumOpt = 7673233, - MessageTypeOpt = 7665967, - - // Miscellaneous - ComplexOpt4 = 7633546, - ComplexOpt1 = 7646756, - ComplexOpt2 = 7636949, - ComplexOpt3 = 7636463, - - // Aggregates - AggregateFileOpt = 15478479, - AggregateMsgOpt = 15480088, - AggregateFieldOpt = 15481374, - AggregateEnumOpt = 15483218, - AggregateEnumValueOpt = 15486921, - AggregateServiceOpt = 15497145, - AggregateMethodOpt = 15512713, - } - - /// - /// The majority of the testing here is done via parsed descriptors. That's simpler to - /// achieve (and more important) than constructing a CodedInputStream manually. - /// - public class CustomOptionsTest - { - delegate bool OptionFetcher(int field, out T value); - - [Test] - public void ScalarOptions() - { - var options = CustomOptionOtherValues.Descriptor.CustomOptions; - AssertOption(-100, options.TryGetInt32, Int32Opt); - AssertOption(12.3456789f, options.TryGetFloat, FloatOpt); - AssertOption(1.234567890123456789d, options.TryGetDouble, DoubleOpt); - AssertOption("Hello, \"World\"", options.TryGetString, StringOpt); - AssertOption(ByteString.CopyFromUtf8("Hello\0World"), options.TryGetBytes, BytesOpt); - AssertOption((int)TestEnumType.TestOptionEnumType2, options.TryGetInt32, EnumOpt); - } - - [Test] - public void MessageOptions() - { - var options = VariousComplexOptions.Descriptor.CustomOptions; - AssertOption(new ComplexOptionType1 { Foo = 42, Foo4 = { 99, 88 } }, options.TryGetMessage, ComplexOpt1); - AssertOption(new ComplexOptionType2 - { - Baz = 987, - Bar = new ComplexOptionType1 { Foo = 743 }, - Fred = new ComplexOptionType4 { Waldo = 321 }, - Barney = { new ComplexOptionType4 { Waldo = 101 }, new ComplexOptionType4 { Waldo = 212 } } - }, - options.TryGetMessage, ComplexOpt2); - AssertOption(new ComplexOptionType3 { Qux = 9 }, options.TryGetMessage, ComplexOpt3); - } - - [Test] - public void OptionLocations() - { - var fileOptions = UnittestCustomOptionsProto3Reflection.Descriptor.CustomOptions; - AssertOption(9876543210UL, fileOptions.TryGetUInt64, FileOpt1); - - var messageOptions = TestMessageWithCustomOptions.Descriptor.CustomOptions; - AssertOption(-56, messageOptions.TryGetInt32, MessageOpt1); - - var fieldOptions = TestMessageWithCustomOptions.Descriptor.Fields["field1"].CustomOptions; - AssertOption(8765432109UL, fieldOptions.TryGetFixed64, FieldOpt1); - - var oneofOptions = TestMessageWithCustomOptions.Descriptor.Oneofs[0].CustomOptions; - AssertOption(-99, oneofOptions.TryGetInt32, OneofOpt1); - - var enumOptions = TestMessageWithCustomOptions.Descriptor.EnumTypes[0].CustomOptions; - AssertOption(-789, enumOptions.TryGetSFixed32, EnumOpt1); - - var enumValueOptions = TestMessageWithCustomOptions.Descriptor.EnumTypes[0].FindValueByNumber(2).CustomOptions; - AssertOption(123, enumValueOptions.TryGetInt32, EnumValueOpt1); - - var service = UnittestCustomOptionsProto3Reflection.Descriptor.Services - .Single(s => s.Name == "TestServiceWithCustomOptions"); - var serviceOptions = service.CustomOptions; - AssertOption(-9876543210, serviceOptions.TryGetSInt64, ServiceOpt1); - - var methodOptions = service.Methods[0].CustomOptions; - AssertOption((int)UnitTest.Issues.TestProtos.MethodOpt1.Val2, methodOptions.TryGetInt32, CustomOptionNumber.MethodOpt1); - } - - [Test] - public void MinValues() - { - var options = CustomOptionMinIntegerValues.Descriptor.CustomOptions; - AssertOption(false, options.TryGetBool, BoolOpt); - AssertOption(int.MinValue, options.TryGetInt32, Int32Opt); - AssertOption(long.MinValue, options.TryGetInt64, Int64Opt); - AssertOption(uint.MinValue, options.TryGetUInt32, UInt32Opt); - AssertOption(ulong.MinValue, options.TryGetUInt64, UInt64Opt); - AssertOption(int.MinValue, options.TryGetSInt32, SInt32Opt); - AssertOption(long.MinValue, options.TryGetSInt64, SInt64Opt); - AssertOption(uint.MinValue, options.TryGetUInt32, Fixed32Opt); - AssertOption(ulong.MinValue, options.TryGetUInt64, Fixed64Opt); - AssertOption(int.MinValue, options.TryGetInt32, SFixed32Opt); - AssertOption(long.MinValue, options.TryGetInt64, SFixed64Opt); - } - - [Test] - public void MaxValues() - { - var options = CustomOptionMaxIntegerValues.Descriptor.CustomOptions; - AssertOption(true, options.TryGetBool, BoolOpt); - AssertOption(int.MaxValue, options.TryGetInt32, Int32Opt); - AssertOption(long.MaxValue, options.TryGetInt64, Int64Opt); - AssertOption(uint.MaxValue, options.TryGetUInt32, UInt32Opt); - AssertOption(ulong.MaxValue, options.TryGetUInt64, UInt64Opt); - AssertOption(int.MaxValue, options.TryGetSInt32, SInt32Opt); - AssertOption(long.MaxValue, options.TryGetSInt64, SInt64Opt); - AssertOption(uint.MaxValue, options.TryGetFixed32, Fixed32Opt); - AssertOption(ulong.MaxValue, options.TryGetFixed64, Fixed64Opt); - AssertOption(int.MaxValue, options.TryGetSFixed32, SFixed32Opt); - AssertOption(long.MaxValue, options.TryGetSFixed64, SFixed64Opt); - } - - [Test] - public void AggregateOptions() - { - // Just two examples - var messageOptions = AggregateMessage.Descriptor.CustomOptions; - AssertOption(new Aggregate { I = 101, S = "MessageAnnotation" }, messageOptions.TryGetMessage, AggregateMsgOpt); - - var fieldOptions = AggregateMessage.Descriptor.Fields["fieldname"].CustomOptions; - AssertOption(new Aggregate { S = "FieldAnnotation" }, fieldOptions.TryGetMessage, AggregateFieldOpt); - } - - private void AssertOption(T expected, OptionFetcher fetcher, CustomOptionNumber field) - { - T actual; - Assert.IsTrue(fetcher((int)field, out actual)); - Assert.AreEqual(expected, actual); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorDeclarationTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorDeclarationTest.cs deleted file mode 100644 index d9d5667..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorDeclarationTest.cs +++ /dev/null @@ -1,175 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2018 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.Reflection; -using NUnit.Framework; -using System.Linq; -using System.Reflection; - -namespace Google.Protobuf.Test.Reflection -{ - // In reality this isn't a test for DescriptorDeclaration so much as the way they're loaded. - public class DescriptorDeclarationTest - { - static readonly FileDescriptor unitTestProto3Descriptor = LoadProtos(); - - // Note: we don't expose a declaration for FileDescriptor as it doesn't have comments - // at the moment and the locations aren't terribly useful. - - // The tests for most elements are quite basic: we don't test every aspect of every element. - // The code within the library falls into two categories: - // - Exposing the properties for *any* declaration - // - Finding the right declaration for an element from the descriptor data - // We have a per-element check to make sure we *are* finding the right declaration, and we - // check every property of declarations in at least one test, but we don't have a cross-product. - // That would effectively be testing protoc, which seems redundant here. - - [Test] - public void ServiceComments() - { - var service = unitTestProto3Descriptor.FindTypeByName("TestService"); - Assert.NotNull(service.Declaration); - Assert.AreEqual(" This is a test service\n", service.Declaration.LeadingComments); - } - - [Test] - public void MethodComments() - { - var service = unitTestProto3Descriptor.FindTypeByName("TestService"); - var method = service.FindMethodByName("Foo"); - Assert.NotNull(method.Declaration); - Assert.AreEqual(" This is a test method\n", method.Declaration.LeadingComments); - } - - [Test] - public void MessageComments() - { - var message = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - Assert.NotNull(message.Declaration); - Assert.AreEqual(" This is a leading comment\n", message.Declaration.LeadingComments); - Assert.AreEqual(new[] { " This is leading detached comment 1\n", " This is leading detached comment 2\n" }, - message.Declaration.LeadingDetachedComments); - } - - // Note: this test is somewhat brittle; a change earlier in the proto will break it. - [Test] - public void MessageLocations() - { - var message = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - Assert.NotNull(message.Declaration); - Assert.AreEqual(389, message.Declaration.StartLine); - Assert.AreEqual(1, message.Declaration.StartColumn); - - Assert.AreEqual(404, message.Declaration.EndLine); - Assert.AreEqual(2, message.Declaration.EndColumn); - } - - [Test] - public void EnumComments() - { - var descriptor = unitTestProto3Descriptor.FindTypeByName("CommentEnum"); - Assert.NotNull(descriptor.Declaration); - Assert.AreEqual(" Leading enum comment\n", descriptor.Declaration.LeadingComments); - } - - [Test] - public void NestedMessageComments() - { - var outer = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - var nested = outer.FindDescriptor("NestedCommentMessage"); - Assert.NotNull(nested.Declaration); - Assert.AreEqual(" Leading nested message comment\n", nested.Declaration.LeadingComments); - } - - [Test] - public void NestedEnumComments() - { - var outer = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - var nested = outer.FindDescriptor("NestedCommentEnum"); - Assert.NotNull(nested.Declaration); - Assert.AreEqual(" Leading nested enum comment\n", nested.Declaration.LeadingComments); - } - - [Test] - public void FieldComments() - { - var message = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - var field = message.FindFieldByName("text"); - Assert.NotNull(field.Declaration); - Assert.AreEqual(" Leading field comment\n", field.Declaration.LeadingComments); - Assert.AreEqual(" Trailing field comment\n", field.Declaration.TrailingComments); - } - - [Test] - public void NestedMessageFieldComments() - { - var outer = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - var nested = outer.FindDescriptor("NestedCommentMessage"); - var field = nested.FindFieldByName("nested_text"); - Assert.NotNull(field.Declaration); - Assert.AreEqual(" Leading nested message field comment\n", field.Declaration.LeadingComments); - } - - [Test] - public void EnumValueComments() - { - var enumDescriptor = unitTestProto3Descriptor.FindTypeByName("CommentEnum"); - var value = enumDescriptor.FindValueByName("ZERO_VALUE"); - Assert.NotNull(value.Declaration); - Assert.AreEqual(" Zero value comment\n", value.Declaration.LeadingComments); - } - - [Test] - public void NestedEnumValueComments() - { - var outer = unitTestProto3Descriptor.FindTypeByName("CommentMessage"); - var nested = outer.FindDescriptor("NestedCommentEnum"); - var value = nested.FindValueByName("ZERO_VALUE"); - Assert.NotNull(value.Declaration); - Assert.AreEqual(" Zero value comment\n", value.Declaration.LeadingComments); - } - - private static FileDescriptor LoadProtos() - { - var type = typeof(DescriptorDeclarationTest); - // TODO: Make this simpler :) - FileDescriptorSet descriptorSet; - using (var stream = type.GetTypeInfo().Assembly.GetManifestResourceStream($"Google.Protobuf.Test.testprotos.pb")) - { - descriptorSet = FileDescriptorSet.Parser.ParseFrom(stream); - } - var byteStrings = descriptorSet.File.Select(f => f.ToByteString()).ToList(); - var descriptors = FileDescriptor.BuildFromByteStrings(byteStrings); - return descriptors.Single(d => d.Name == "unittest_proto3.proto"); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs deleted file mode 100644 index 264cbbe..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/DescriptorsTest.cs +++ /dev/null @@ -1,369 +0,0 @@ -#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.TestProtos; -using NUnit.Framework; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Google.Protobuf.Reflection -{ - /// - /// 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...) - /// - public class DescriptorsTest - { - [Test] - public void FileDescriptor_GeneratedCode() - { - TestFileDescriptor( - UnittestProto3Reflection.Descriptor, - UnittestImportProto3Reflection.Descriptor, - UnittestImportPublicProto3Reflection.Descriptor); - } - - [Test] - public void FileDescriptor_BuildFromByteStrings() - { - // The descriptors have to be supplied in an order such that all the - // dependencies come before the descriptors depending on them. - var descriptorData = new List - { - UnittestImportPublicProto3Reflection.Descriptor.SerializedData, - UnittestImportProto3Reflection.Descriptor.SerializedData, - UnittestProto3Reflection.Descriptor.SerializedData - }; - var converted = FileDescriptor.BuildFromByteStrings(descriptorData); - Assert.AreEqual(3, converted.Count); - TestFileDescriptor(converted[2], converted[1], converted[0]); - } - - private void TestFileDescriptor(FileDescriptor file, FileDescriptor importedFile, FileDescriptor importedPublicFile) - { - Assert.AreEqual("unittest_proto3.proto", file.Name); - Assert.AreEqual("protobuf_unittest3", file.Package); - - Assert.AreEqual("UnittestProto", file.Proto.Options.JavaOuterClassname); - Assert.AreEqual("unittest_proto3.proto", file.Proto.Name); - - // unittest_proto3.proto doesn't have any public imports, but unittest_import_proto3.proto does. - Assert.AreEqual(0, file.PublicDependencies.Count); - Assert.AreEqual(1, importedFile.PublicDependencies.Count); - Assert.AreEqual(importedPublicFile, importedFile.PublicDependencies[0]); - - Assert.AreEqual(1, file.Dependencies.Count); - Assert.AreEqual(importedFile, file.Dependencies[0]); - - Assert.Null(file.FindTypeByName("NoSuchType")); - Assert.Null(file.FindTypeByName("protobuf_unittest3.TestAllTypes")); - for (int i = 0; i < file.MessageTypes.Count; i++) - { - Assert.AreEqual(i, file.MessageTypes[i].Index); - } - - Assert.AreEqual(file.EnumTypes[0], file.FindTypeByName("ForeignEnum")); - Assert.Null(file.FindTypeByName("NoSuchType")); - Assert.Null(file.FindTypeByName("protobuf_unittest3.ForeignEnum")); - Assert.AreEqual(1, importedFile.EnumTypes.Count); - Assert.AreEqual("ImportEnum", importedFile.EnumTypes[0].Name); - for (int i = 0; i < file.EnumTypes.Count; i++) - { - Assert.AreEqual(i, file.EnumTypes[i].Index); - } - - Assert.AreEqual(10, file.SerializedData[0]); - } - - [Test] - public void FileDescriptor_NonRootPath() - { - // unittest_proto3.proto used to be in google/protobuf. Now it's in the C#-specific location, - // let's test something that's still in a directory. - FileDescriptor file = UnittestWellKnownTypesReflection.Descriptor; - Assert.AreEqual("google/protobuf/unittest_well_known_types.proto", file.Name); - Assert.AreEqual("protobuf_unittest", file.Package); - } - - [Test] - public void FileDescriptor_BuildFromByteStrings_MissingDependency() - { - var descriptorData = new List - { - UnittestImportProto3Reflection.Descriptor.SerializedData, - UnittestProto3Reflection.Descriptor.SerializedData, - }; - // This will fail, because we're missing UnittestImportPublicProto3Reflection - Assert.Throws(() => FileDescriptor.BuildFromByteStrings(descriptorData)); - } - - [Test] - public void FileDescriptor_BuildFromByteStrings_DuplicateNames() - { - var descriptorData = new List - { - UnittestImportPublicProto3Reflection.Descriptor.SerializedData, - UnittestImportPublicProto3Reflection.Descriptor.SerializedData, - }; - // This will fail due to the same name being used twice - Assert.Throws(() => FileDescriptor.BuildFromByteStrings(descriptorData)); - } - - [Test] - public void FileDescriptor_BuildFromByteStrings_IncorrectOrder() - { - var descriptorData = new List - { - UnittestProto3Reflection.Descriptor.SerializedData, - UnittestImportPublicProto3Reflection.Descriptor.SerializedData, - UnittestImportProto3Reflection.Descriptor.SerializedData - }; - // This will fail, because the dependencies should come first - Assert.Throws(() => FileDescriptor.BuildFromByteStrings(descriptorData)); - - } - - [Test] - public void MessageDescriptorFromGeneratedCodeFileDescriptor() - { - var file = UnittestProto3Reflection.Descriptor; - - MessageDescriptor messageType = TestAllTypes.Descriptor; - Assert.AreSame(typeof(TestAllTypes), messageType.ClrType); - Assert.AreSame(TestAllTypes.Parser, messageType.Parser); - Assert.AreEqual(messageType, file.MessageTypes[0]); - Assert.AreEqual(messageType, file.FindTypeByName("TestAllTypes")); - } - - [Test] - public void MessageDescriptor() - { - MessageDescriptor messageType = TestAllTypes.Descriptor; - MessageDescriptor nestedType = TestAllTypes.Types.NestedMessage.Descriptor; - - Assert.AreEqual("TestAllTypes", messageType.Name); - Assert.AreEqual("protobuf_unittest3.TestAllTypes", messageType.FullName); - Assert.AreEqual(UnittestProto3Reflection.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_unittest3.TestAllTypes.NestedMessage", nestedType.FullName); - Assert.AreEqual(UnittestProto3Reflection.Descriptor, nestedType.File); - Assert.AreEqual(messageType, nestedType.ContainingType); - - FieldDescriptor field = messageType.Fields.InDeclarationOrder()[0]; - Assert.AreEqual("single_int32", field.Name); - Assert.AreEqual(field, messageType.FindDescriptor("single_int32")); - Assert.Null(messageType.FindDescriptor("no_such_field")); - Assert.AreEqual(field, messageType.FindFieldByNumber(1)); - Assert.Null(messageType.FindFieldByNumber(571283)); - var fieldsInDeclarationOrder = messageType.Fields.InDeclarationOrder(); - for (int i = 0; i < fieldsInDeclarationOrder.Count; i++) - { - Assert.AreEqual(i, fieldsInDeclarationOrder[i].Index); - } - - Assert.AreEqual(nestedType, messageType.NestedTypes[0]); - Assert.AreEqual(nestedType, messageType.FindDescriptor("NestedMessage")); - Assert.Null(messageType.FindDescriptor("NoSuchType")); - for (int i = 0; i < messageType.NestedTypes.Count; i++) - { - Assert.AreEqual(i, messageType.NestedTypes[i].Index); - } - - Assert.AreEqual(messageType.EnumTypes[0], messageType.FindDescriptor("NestedEnum")); - Assert.Null(messageType.FindDescriptor("NoSuchType")); - for (int i = 0; i < messageType.EnumTypes.Count; i++) - { - Assert.AreEqual(i, messageType.EnumTypes[i].Index); - } - } - - [Test] - public void FieldDescriptor_GeneratedCode() - { - TestFieldDescriptor(UnittestProto3Reflection.Descriptor, TestAllTypes.Descriptor, ForeignMessage.Descriptor, ImportMessage.Descriptor); - } - - [Test] - public void FieldDescriptor_BuildFromByteStrings() - { - // The descriptors have to be supplied in an order such that all the - // dependencies come before the descriptors depending on them. - var descriptorData = new List - { - UnittestImportPublicProto3Reflection.Descriptor.SerializedData, - UnittestImportProto3Reflection.Descriptor.SerializedData, - UnittestProto3Reflection.Descriptor.SerializedData - }; - var converted = FileDescriptor.BuildFromByteStrings(descriptorData); - TestFieldDescriptor( - converted[2], - converted[2].FindTypeByName("TestAllTypes"), - converted[2].FindTypeByName("ForeignMessage"), - converted[1].FindTypeByName("ImportMessage")); - } - - public void TestFieldDescriptor( - FileDescriptor unitTestProto3Descriptor, - MessageDescriptor testAllTypesDescriptor, - MessageDescriptor foreignMessageDescriptor, - MessageDescriptor importMessageDescriptor) - { - FieldDescriptor primitiveField = testAllTypesDescriptor.FindDescriptor("single_int32"); - FieldDescriptor enumField = testAllTypesDescriptor.FindDescriptor("single_nested_enum"); - FieldDescriptor foreignMessageField = testAllTypesDescriptor.FindDescriptor("single_foreign_message"); - FieldDescriptor importMessageField = testAllTypesDescriptor.FindDescriptor("single_import_message"); - - Assert.AreEqual("single_int32", primitiveField.Name); - Assert.AreEqual("protobuf_unittest3.TestAllTypes.single_int32", - primitiveField.FullName); - Assert.AreEqual(1, primitiveField.FieldNumber); - Assert.AreEqual(testAllTypesDescriptor, primitiveField.ContainingType); - Assert.AreEqual(unitTestProto3Descriptor, 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(testAllTypesDescriptor.EnumTypes[0], enumField.EnumType); - - Assert.AreEqual("single_foreign_message", foreignMessageField.Name); - Assert.AreEqual(FieldType.Message, foreignMessageField.FieldType); - Assert.AreEqual(foreignMessageDescriptor, foreignMessageField.MessageType); - - Assert.AreEqual("single_import_message", importMessageField.Name); - Assert.AreEqual(FieldType.Message, importMessageField.FieldType); - Assert.AreEqual(importMessageDescriptor, importMessageField.MessageType); - } - - [Test] - public void FieldDescriptorLabel() - { - FieldDescriptor singleField = - TestAllTypes.Descriptor.FindDescriptor("single_int32"); - FieldDescriptor repeatedField = - TestAllTypes.Descriptor.FindDescriptor("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 = UnittestProto3Reflection.Descriptor.FindTypeByName("ForeignEnum"); - EnumDescriptor nestedType = TestAllTypes.Descriptor.FindDescriptor("NestedEnum"); - - Assert.AreEqual("ForeignEnum", enumType.Name); - Assert.AreEqual("protobuf_unittest3.ForeignEnum", enumType.FullName); - Assert.AreEqual(UnittestProto3Reflection.Descriptor, enumType.File); - Assert.Null(enumType.ContainingType); - Assert.Null(enumType.Proto.Options); - - Assert.AreEqual("NestedEnum", nestedType.Name); - Assert.AreEqual("protobuf_unittest3.TestAllTypes.NestedEnum", - nestedType.FullName); - Assert.AreEqual(UnittestProto3Reflection.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.ForeignFoo, 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("oneof_field"); - Assert.AreEqual("oneof_field", descriptor.Name); - Assert.AreEqual("protobuf_unittest3.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); - } - - [Test] - public void MapEntryMessageDescriptor() - { - var descriptor = MapWellKnownTypes.Descriptor.NestedTypes[0]; - Assert.IsNull(descriptor.Parser); - Assert.IsNull(descriptor.ClrType); - Assert.IsNull(descriptor.Fields[1].Accessor); - } - - // From TestFieldOrdering: - // string my_string = 11; - // int64 my_int = 1; - // float my_float = 101; - // NestedMessage single_nested_message = 200; - [Test] - public void FieldListOrderings() - { - var fields = TestFieldOrderings.Descriptor.Fields; - Assert.AreEqual(new[] { 11, 1, 101, 200 }, fields.InDeclarationOrder().Select(x => x.FieldNumber)); - Assert.AreEqual(new[] { 1, 11, 101, 200 }, fields.InFieldNumberOrder().Select(x => x.FieldNumber)); - } - - - [Test] - public void DescriptorProtoFileDescriptor() - { - var descriptor = Google.Protobuf.Reflection.FileDescriptor.DescriptorProtoFileDescriptor; - Assert.AreEqual("google/protobuf/descriptor.proto", descriptor.Name); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs deleted file mode 100644 index 46cb1af..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/FieldAccessTest.cs +++ /dev/null @@ -1,218 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; -using System; -using System.Collections; -using System.Collections.Generic; - -namespace Google.Protobuf.Reflection -{ - public class FieldAccessTest - { - [Test] - public void GetValue() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - Assert.AreEqual(message.SingleBool, fields[TestAllTypes.SingleBoolFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleBytes, fields[TestAllTypes.SingleBytesFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleDouble, fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFixed32, fields[TestAllTypes.SingleFixed32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFixed64, fields[TestAllTypes.SingleFixed64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleFloat, fields[TestAllTypes.SingleFloatFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleForeignEnum, fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleForeignMessage, fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleImportEnum, fields[TestAllTypes.SingleImportEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleImportMessage, fields[TestAllTypes.SingleImportMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleInt32, fields[TestAllTypes.SingleInt32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleInt64, fields[TestAllTypes.SingleInt64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleNestedEnum, fields[TestAllTypes.SingleNestedEnumFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleNestedMessage, fields[TestAllTypes.SingleNestedMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SinglePublicImportMessage, fields[TestAllTypes.SinglePublicImportMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSint32, fields[TestAllTypes.SingleSint32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSint64, fields[TestAllTypes.SingleSint64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleString, fields[TestAllTypes.SingleStringFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSfixed32, fields[TestAllTypes.SingleSfixed32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleSfixed64, fields[TestAllTypes.SingleSfixed64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleUint32, fields[TestAllTypes.SingleUint32FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.SingleUint64, fields[TestAllTypes.SingleUint64FieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofBytes, fields[TestAllTypes.OneofBytesFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofString, fields[TestAllTypes.OneofStringFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofNestedMessage, fields[TestAllTypes.OneofNestedMessageFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(message.OneofUint32, fields[TestAllTypes.OneofUint32FieldNumber].Accessor.GetValue(message)); - - // Just one example for repeated fields - they're all just returning the list - var list = (IList) fields[TestAllTypes.RepeatedInt32FieldNumber].Accessor.GetValue(message); - Assert.AreEqual(message.RepeatedInt32, list); - Assert.AreEqual(message.RepeatedInt32[0], list[0]); // Just in case there was any doubt... - - // Just a single map field, for the same reason - var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } }; - fields = TestMap.Descriptor.Fields; - var dictionary = (IDictionary) fields[TestMap.MapStringStringFieldNumber].Accessor.GetValue(mapMessage); - Assert.AreEqual(mapMessage.MapStringString, dictionary); - Assert.AreEqual("value1", dictionary["key1"]); - } - - [Test] - public void Clear() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - fields[TestAllTypes.SingleBoolFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleInt32FieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleStringFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleBytesFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.Clear(message); - fields[TestAllTypes.RepeatedDoubleFieldNumber].Accessor.Clear(message); - - var expected = new TestAllTypes(SampleMessages.CreateFullTestAllTypes()) - { - SingleBool = false, - SingleInt32 = 0, - SingleString = "", - SingleBytes = ByteString.Empty, - SingleForeignEnum = 0, - SingleForeignMessage = null, - }; - expected.RepeatedDouble.Clear(); - - Assert.AreEqual(expected, message); - - // Separately, maps. - var mapMessage = new TestMap { MapStringString = { { "key1", "value1" }, { "key2", "value2" } } }; - fields = TestMap.Descriptor.Fields; - fields[TestMap.MapStringStringFieldNumber].Accessor.Clear(mapMessage); - Assert.AreEqual(0, mapMessage.MapStringString.Count); - } - - [Test] - public void SetValue_SingleFields() - { - // Just a sample (primitives, messages, enums, strings, byte strings) - var message = SampleMessages.CreateFullTestAllTypes(); - var fields = TestAllTypes.Descriptor.Fields; - fields[TestAllTypes.SingleBoolFieldNumber].Accessor.SetValue(message, false); - fields[TestAllTypes.SingleInt32FieldNumber].Accessor.SetValue(message, 500); - fields[TestAllTypes.SingleStringFieldNumber].Accessor.SetValue(message, "It's a string"); - fields[TestAllTypes.SingleBytesFieldNumber].Accessor.SetValue(message, ByteString.CopyFrom(99, 98, 97)); - fields[TestAllTypes.SingleForeignEnumFieldNumber].Accessor.SetValue(message, ForeignEnum.ForeignFoo); - fields[TestAllTypes.SingleForeignMessageFieldNumber].Accessor.SetValue(message, new ForeignMessage { C = 12345 }); - fields[TestAllTypes.SingleDoubleFieldNumber].Accessor.SetValue(message, 20150701.5); - - var expected = new TestAllTypes(SampleMessages.CreateFullTestAllTypes()) - { - SingleBool = false, - SingleInt32 = 500, - SingleString = "It's a string", - SingleBytes = ByteString.CopyFrom(99, 98, 97), - SingleForeignEnum = ForeignEnum.ForeignFoo, - SingleForeignMessage = new ForeignMessage { C = 12345 }, - SingleDouble = 20150701.5 - }; - - Assert.AreEqual(expected, message); - } - - [Test] - public void SetValue_SingleFields_WrongType() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.SingleBoolFieldNumber].Accessor.SetValue(message, "This isn't a bool")); - } - - [Test] - public void SetValue_MapFields() - { - IMessage message = new TestMap(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestMap.MapStringStringFieldNumber].Accessor.SetValue(message, new Dictionary())); - } - - [Test] - public void SetValue_RepeatedFields() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.RepeatedDoubleFieldNumber].Accessor.SetValue(message, new double[10])); - } - - [Test] - public void GetValue_IncorrectType() - { - IMessage message = SampleMessages.CreateFullTestAllTypes(); - var fields = message.Descriptor.Fields; - Assert.Throws(() => fields[TestAllTypes.SingleBoolFieldNumber].Accessor.GetValue(new TestMap())); - } - - [Test] - public void Oneof() - { - var message = new TestAllTypes(); - var descriptor = TestAllTypes.Descriptor; - Assert.AreEqual(1, descriptor.Oneofs.Count); - var oneof = descriptor.Oneofs[0]; - Assert.AreEqual("oneof_field", oneof.Name); - Assert.IsNull(oneof.Accessor.GetCaseFieldDescriptor(message)); - - message.OneofString = "foo"; - Assert.AreSame(descriptor.Fields[TestAllTypes.OneofStringFieldNumber], oneof.Accessor.GetCaseFieldDescriptor(message)); - - message.OneofUint32 = 10; - Assert.AreSame(descriptor.Fields[TestAllTypes.OneofUint32FieldNumber], oneof.Accessor.GetCaseFieldDescriptor(message)); - - oneof.Accessor.Clear(message); - Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - } - - [Test] - public void FieldDescriptor_ByName() - { - var descriptor = TestAllTypes.Descriptor; - Assert.AreSame( - descriptor.Fields[TestAllTypes.SingleBoolFieldNumber], - descriptor.Fields["single_bool"]); - } - - [Test] - public void FieldDescriptor_NotFound() - { - var descriptor = TestAllTypes.Descriptor; - Assert.Throws(() => descriptor.Fields[999999].ToString()); - Assert.Throws(() => descriptor.Fields["not found"].ToString()); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs deleted file mode 100644 index 5be7ca2..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/Reflection/TypeRegistryTest.cs +++ /dev/null @@ -1,94 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using Google.Protobuf.WellKnownTypes; -using NUnit.Framework; - -namespace Google.Protobuf.Reflection -{ - public class TypeRegistryTest - { - // Most of our tests use messages. Simple test that we really can use files... - [Test] - public void CreateWithFileDescriptor() - { - var registry = TypeRegistry.FromFiles(DurationReflection.Descriptor, StructReflection.Descriptor); - AssertDescriptorPresent(registry, Duration.Descriptor); - AssertDescriptorPresent(registry, ListValue.Descriptor); - AssertDescriptorAbsent(registry, Timestamp.Descriptor); - } - - [Test] - public void TypesFromSameFile() - { - // Just for kicks, let's start with a nested type - var registry = TypeRegistry.FromMessages(TestAllTypes.Types.NestedMessage.Descriptor); - // Top-level... - AssertDescriptorPresent(registry, TestFieldOrderings.Descriptor); - // ... and nested (not the same as the original NestedMessage!) - AssertDescriptorPresent(registry, TestFieldOrderings.Types.NestedMessage.Descriptor); - } - - [Test] - public void DependenciesAreIncluded() - { - var registry = TypeRegistry.FromMessages(TestAllTypes.Descriptor); - // Direct dependencies - AssertDescriptorPresent(registry, ImportMessage.Descriptor); - // Public dependencies - AssertDescriptorPresent(registry, PublicImportMessage.Descriptor); - } - - [Test] - public void DuplicateFiles() - { - // Duplicates via dependencies and simply via repetition - var registry = TypeRegistry.FromFiles( - UnittestProto3Reflection.Descriptor, UnittestImportProto3Reflection.Descriptor, - TimestampReflection.Descriptor, TimestampReflection.Descriptor); - AssertDescriptorPresent(registry, TestAllTypes.Descriptor); - AssertDescriptorPresent(registry, ImportMessage.Descriptor); - AssertDescriptorPresent(registry, Timestamp.Descriptor); - } - - private static void AssertDescriptorPresent(TypeRegistry registry, MessageDescriptor descriptor) - { - Assert.AreSame(descriptor, registry.Find(descriptor.FullName)); - } - - private static void AssertDescriptorAbsent(TypeRegistry registry, MessageDescriptor descriptor) - { - Assert.IsNull(registry.Find(descriptor.FullName)); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleEnum.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleEnum.cs deleted file mode 100644 index 44f232a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleEnum.cs +++ /dev/null @@ -1,42 +0,0 @@ -#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 -{ - // Just a sample enum with positive and negative values to be used in tests. - internal enum SampleEnum - { - NegativeValue = -2, - None = 0, - PositiveValue = 3 - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleMessages.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleMessages.cs deleted file mode 100644 index ffa4e2a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleMessages.cs +++ /dev/null @@ -1,99 +0,0 @@ -#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 Google.Protobuf.TestProtos; - -namespace Google.Protobuf -{ - /// - /// Helper methods to create sample instances of types generated from unit test messages. - /// - public class SampleMessages - { - /// - /// Creates a new sample TestAllTypes message with all fields populated. - /// The "oneof" field is populated with the string property (OneofString). - /// - public static TestAllTypes CreateFullTestAllTypes() - { - return new TestAllTypes - { - SingleBool = true, - SingleBytes = ByteString.CopyFrom(1, 2, 3, 4), - SingleDouble = 23.5, - SingleFixed32 = 23, - SingleFixed64 = 1234567890123, - SingleFloat = 12.25f, - SingleForeignEnum = ForeignEnum.ForeignBar, - SingleForeignMessage = new ForeignMessage { C = 10 }, - SingleImportEnum = ImportEnum.ImportBaz, - 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", - SingleUint32 = UInt32.MaxValue, - SingleUint64 = UInt64.MaxValue, - RepeatedBool = { true, false }, - RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) }, - RepeatedDouble = { -12.25, 23.5 }, - RepeatedFixed32 = { UInt32.MaxValue, 23 }, - RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 }, - RepeatedFloat = { 100f, 12.25f }, - RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar }, - RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } }, - RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified }, - RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } }, - RepeatedInt32 = { 100, 200 }, - RepeatedInt64 = { 3210987654321, Int64.MaxValue }, - RepeatedNestedEnum = { TestAllTypes.Types.NestedEnum.Foo, TestAllTypes.Types.NestedEnum.Neg }, - RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } }, - RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } }, - RepeatedSfixed32 = { -123, 123 }, - RepeatedSfixed64 = { -12345678901234, 12345678901234 }, - RepeatedSint32 = { -456, 100 }, - RepeatedSint64 = { -12345678901235, 123 }, - RepeatedString = { "foo", "bar" }, - RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue }, - RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue }, - OneofString = "Oneof string" - }; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleNaNs.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleNaNs.cs deleted file mode 100644 index 34019ac..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/SampleNaNs.cs +++ /dev/null @@ -1,53 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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 -{ - /// - /// Samples of different not-a-number values, for testing equality comparisons. - /// - public static class SampleNaNs - { - public static double Regular { get; } = double.NaN; - - // Signalling bit is inverted compared with double.NaN. Doesn't really matter - // whether that makes it quiet or signalling - it's different. - public static double SignallingFlipped { get; } = - BitConverter.Int64BitsToDouble(BitConverter.DoubleToInt64Bits(double.NaN) ^ -0x8000_0000_0000_0000L); - - // A bit in the middle of the mantissa is flipped; this difference is preserved when casting to float. - public static double PayloadFlipped { get; } = - BitConverter.Int64BitsToDouble(BitConverter.DoubleToInt64Bits(double.NaN) ^ 0x1_0000_0000L); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestCornerCases.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestCornerCases.cs deleted file mode 100644 index 248f5fa..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestCornerCases.cs +++ /dev/null @@ -1,62 +0,0 @@ -#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 UnitTest.Issues.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class TestCornerCases - { - [Test] - public void TestRoundTripNegativeEnums() - { - NegativeEnumMessage msg = new NegativeEnumMessage - { - Value = NegativeEnum.MinusOne, - Values = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow }, - PackedValues = { NegativeEnum.Zero, NegativeEnum.MinusOne, NegativeEnum.FiveBelow } - }; - - Assert.AreEqual(58, msg.CalculateSize()); - - byte[] bytes = new byte[58]; - CodedOutputStream output = new CodedOutputStream(bytes); - - msg.WriteTo(output); - Assert.AreEqual(0, output.SpaceLeft); - - NegativeEnumMessage copy = NegativeEnumMessage.Parser.ParseFrom(bytes); - Assert.AreEqual(msg, copy); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs deleted file mode 100644 index 5663a69..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/ForeignMessagePartial.cs +++ /dev/null @@ -1,45 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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.TestProtos -{ - /// - /// A message with custom diagnostics (to test that they work). - /// - public partial class ForeignMessage : ICustomDiagnosticMessage - { - public string ToDiagnosticString() - { - return $"{{ \"c\": {C}, \"@cInHex\": \"{C:x}\" }}"; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs deleted file mode 100644 index 197b197..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/MapUnittestProto3.cs +++ /dev/null @@ -1,1685 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: map_unittest_proto3.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.TestProtos { - - /// Holder for reflection information generated from map_unittest_proto3.proto - public static partial class MapUnittestProto3Reflection { - - #region Descriptor - /// File descriptor for map_unittest_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static MapUnittestProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChltYXBfdW5pdHRlc3RfcHJvdG8zLnByb3RvEhJwcm90b2J1Zl91bml0dGVz", - "dDMaFXVuaXR0ZXN0X3Byb3RvMy5wcm90byKpEgoHVGVzdE1hcBJHCg9tYXBf", - "aW50MzJfaW50MzIYASADKAsyLi5wcm90b2J1Zl91bml0dGVzdDMuVGVzdE1h", - "cC5NYXBJbnQzMkludDMyRW50cnkSRwoPbWFwX2ludDY0X2ludDY0GAIgAygL", - "Mi4ucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RNYXAuTWFwSW50NjRJbnQ2NEVu", - "dHJ5EksKEW1hcF91aW50MzJfdWludDMyGAMgAygLMjAucHJvdG9idWZfdW5p", - "dHRlc3QzLlRlc3RNYXAuTWFwVWludDMyVWludDMyRW50cnkSSwoRbWFwX3Vp", - "bnQ2NF91aW50NjQYBCADKAsyMC5wcm90b2J1Zl91bml0dGVzdDMuVGVzdE1h", - "cC5NYXBVaW50NjRVaW50NjRFbnRyeRJLChFtYXBfc2ludDMyX3NpbnQzMhgF", - "IAMoCzIwLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0TWFwLk1hcFNpbnQzMlNp", - "bnQzMkVudHJ5EksKEW1hcF9zaW50NjRfc2ludDY0GAYgAygLMjAucHJvdG9i", - "dWZfdW5pdHRlc3QzLlRlc3RNYXAuTWFwU2ludDY0U2ludDY0RW50cnkSTwoT", - "bWFwX2ZpeGVkMzJfZml4ZWQzMhgHIAMoCzIyLnByb3RvYnVmX3VuaXR0ZXN0", - "My5UZXN0TWFwLk1hcEZpeGVkMzJGaXhlZDMyRW50cnkSTwoTbWFwX2ZpeGVk", - "NjRfZml4ZWQ2NBgIIAMoCzIyLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0TWFw", - "Lk1hcEZpeGVkNjRGaXhlZDY0RW50cnkSUwoVbWFwX3NmaXhlZDMyX3NmaXhl", - "ZDMyGAkgAygLMjQucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RNYXAuTWFwU2Zp", - "eGVkMzJTZml4ZWQzMkVudHJ5ElMKFW1hcF9zZml4ZWQ2NF9zZml4ZWQ2NBgK", - "IAMoCzI0LnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0TWFwLk1hcFNmaXhlZDY0", - "U2ZpeGVkNjRFbnRyeRJHCg9tYXBfaW50MzJfZmxvYXQYCyADKAsyLi5wcm90", - "b2J1Zl91bml0dGVzdDMuVGVzdE1hcC5NYXBJbnQzMkZsb2F0RW50cnkSSQoQ", - "bWFwX2ludDMyX2RvdWJsZRgMIAMoCzIvLnByb3RvYnVmX3VuaXR0ZXN0My5U", - "ZXN0TWFwLk1hcEludDMyRG91YmxlRW50cnkSQwoNbWFwX2Jvb2xfYm9vbBgN", - "IAMoCzIsLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0TWFwLk1hcEJvb2xCb29s", - "RW50cnkSSwoRbWFwX3N0cmluZ19zdHJpbmcYDiADKAsyMC5wcm90b2J1Zl91", - "bml0dGVzdDMuVGVzdE1hcC5NYXBTdHJpbmdTdHJpbmdFbnRyeRJHCg9tYXBf", - "aW50MzJfYnl0ZXMYDyADKAsyLi5wcm90b2J1Zl91bml0dGVzdDMuVGVzdE1h", - "cC5NYXBJbnQzMkJ5dGVzRW50cnkSRQoObWFwX2ludDMyX2VudW0YECADKAsy", - "LS5wcm90b2J1Zl91bml0dGVzdDMuVGVzdE1hcC5NYXBJbnQzMkVudW1FbnRy", - "eRJaChltYXBfaW50MzJfZm9yZWlnbl9tZXNzYWdlGBEgAygLMjcucHJvdG9i", - "dWZfdW5pdHRlc3QzLlRlc3RNYXAuTWFwSW50MzJGb3JlaWduTWVzc2FnZUVu", - "dHJ5GjQKEk1hcEludDMySW50MzJFbnRyeRILCgNrZXkYASABKAUSDQoFdmFs", - "dWUYAiABKAU6AjgBGjQKEk1hcEludDY0SW50NjRFbnRyeRILCgNrZXkYASAB", - "KAMSDQoFdmFsdWUYAiABKAM6AjgBGjYKFE1hcFVpbnQzMlVpbnQzMkVudHJ5", - "EgsKA2tleRgBIAEoDRINCgV2YWx1ZRgCIAEoDToCOAEaNgoUTWFwVWludDY0", - "VWludDY0RW50cnkSCwoDa2V5GAEgASgEEg0KBXZhbHVlGAIgASgEOgI4ARo2", - "ChRNYXBTaW50MzJTaW50MzJFbnRyeRILCgNrZXkYASABKBESDQoFdmFsdWUY", - "AiABKBE6AjgBGjYKFE1hcFNpbnQ2NFNpbnQ2NEVudHJ5EgsKA2tleRgBIAEo", - "EhINCgV2YWx1ZRgCIAEoEjoCOAEaOAoWTWFwRml4ZWQzMkZpeGVkMzJFbnRy", - "eRILCgNrZXkYASABKAcSDQoFdmFsdWUYAiABKAc6AjgBGjgKFk1hcEZpeGVk", - "NjRGaXhlZDY0RW50cnkSCwoDa2V5GAEgASgGEg0KBXZhbHVlGAIgASgGOgI4", - "ARo6ChhNYXBTZml4ZWQzMlNmaXhlZDMyRW50cnkSCwoDa2V5GAEgASgPEg0K", - "BXZhbHVlGAIgASgPOgI4ARo6ChhNYXBTZml4ZWQ2NFNmaXhlZDY0RW50cnkS", - "CwoDa2V5GAEgASgQEg0KBXZhbHVlGAIgASgQOgI4ARo0ChJNYXBJbnQzMkZs", - "b2F0RW50cnkSCwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgCOgI4ARo1ChNN", - "YXBJbnQzMkRvdWJsZUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEo", - "AToCOAEaMgoQTWFwQm9vbEJvb2xFbnRyeRILCgNrZXkYASABKAgSDQoFdmFs", - "dWUYAiABKAg6AjgBGjYKFE1hcFN0cmluZ1N0cmluZ0VudHJ5EgsKA2tleRgB", - "IAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaNAoSTWFwSW50MzJCeXRlc0VudHJ5", - "EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoDDoCOAEaUAoRTWFwSW50MzJF", - "bnVtRW50cnkSCwoDa2V5GAEgASgFEioKBXZhbHVlGAIgASgOMhsucHJvdG9i", - "dWZfdW5pdHRlc3QzLk1hcEVudW06AjgBGmEKG01hcEludDMyRm9yZWlnbk1l", - "c3NhZ2VFbnRyeRILCgNrZXkYASABKAUSMQoFdmFsdWUYAiABKAsyIi5wcm90", - "b2J1Zl91bml0dGVzdDMuRm9yZWlnbk1lc3NhZ2U6AjgBIkIKEVRlc3RNYXBT", - "dWJtZXNzYWdlEi0KCHRlc3RfbWFwGAEgASgLMhsucHJvdG9idWZfdW5pdHRl", - "c3QzLlRlc3RNYXAivgEKDlRlc3RNZXNzYWdlTWFwElIKEW1hcF9pbnQzMl9t", - "ZXNzYWdlGAEgAygLMjcucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RNZXNzYWdl", - "TWFwLk1hcEludDMyTWVzc2FnZUVudHJ5GlgKFE1hcEludDMyTWVzc2FnZUVu", - "dHJ5EgsKA2tleRgBIAEoBRIvCgV2YWx1ZRgCIAEoCzIgLnByb3RvYnVmX3Vu", - "aXR0ZXN0My5UZXN0QWxsVHlwZXM6AjgBIuUBCg9UZXN0U2FtZVR5cGVNYXAS", - "OwoEbWFwMRgBIAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0U2FtZVR5", - "cGVNYXAuTWFwMUVudHJ5EjsKBG1hcDIYAiADKAsyLS5wcm90b2J1Zl91bml0", - "dGVzdDMuVGVzdFNhbWVUeXBlTWFwLk1hcDJFbnRyeRorCglNYXAxRW50cnkS", - "CwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARorCglNYXAyRW50cnkS", - "CwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASL1EAoMVGVzdEFyZW5h", - "TWFwEkwKD21hcF9pbnQzMl9pbnQzMhgBIAMoCzIzLnByb3RvYnVmX3VuaXR0", - "ZXN0My5UZXN0QXJlbmFNYXAuTWFwSW50MzJJbnQzMkVudHJ5EkwKD21hcF9p", - "bnQ2NF9pbnQ2NBgCIAMoCzIzLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QXJl", - "bmFNYXAuTWFwSW50NjRJbnQ2NEVudHJ5ElAKEW1hcF91aW50MzJfdWludDMy", - "GAMgAygLMjUucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVuYU1hcC5NYXBV", - "aW50MzJVaW50MzJFbnRyeRJQChFtYXBfdWludDY0X3VpbnQ2NBgEIAMoCzI1", - "LnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QXJlbmFNYXAuTWFwVWludDY0VWlu", - "dDY0RW50cnkSUAoRbWFwX3NpbnQzMl9zaW50MzIYBSADKAsyNS5wcm90b2J1", - "Zl91bml0dGVzdDMuVGVzdEFyZW5hTWFwLk1hcFNpbnQzMlNpbnQzMkVudHJ5", - "ElAKEW1hcF9zaW50NjRfc2ludDY0GAYgAygLMjUucHJvdG9idWZfdW5pdHRl", - "c3QzLlRlc3RBcmVuYU1hcC5NYXBTaW50NjRTaW50NjRFbnRyeRJUChNtYXBf", - "Zml4ZWQzMl9maXhlZDMyGAcgAygLMjcucHJvdG9idWZfdW5pdHRlc3QzLlRl", - "c3RBcmVuYU1hcC5NYXBGaXhlZDMyRml4ZWQzMkVudHJ5ElQKE21hcF9maXhl", - "ZDY0X2ZpeGVkNjQYCCADKAsyNy5wcm90b2J1Zl91bml0dGVzdDMuVGVzdEFy", - "ZW5hTWFwLk1hcEZpeGVkNjRGaXhlZDY0RW50cnkSWAoVbWFwX3NmaXhlZDMy", - "X3NmaXhlZDMyGAkgAygLMjkucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVu", - "YU1hcC5NYXBTZml4ZWQzMlNmaXhlZDMyRW50cnkSWAoVbWFwX3NmaXhlZDY0", - "X3NmaXhlZDY0GAogAygLMjkucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVu", - "YU1hcC5NYXBTZml4ZWQ2NFNmaXhlZDY0RW50cnkSTAoPbWFwX2ludDMyX2Zs", - "b2F0GAsgAygLMjMucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVuYU1hcC5N", - "YXBJbnQzMkZsb2F0RW50cnkSTgoQbWFwX2ludDMyX2RvdWJsZRgMIAMoCzI0", - "LnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QXJlbmFNYXAuTWFwSW50MzJEb3Vi", - "bGVFbnRyeRJICg1tYXBfYm9vbF9ib29sGA0gAygLMjEucHJvdG9idWZfdW5p", - "dHRlc3QzLlRlc3RBcmVuYU1hcC5NYXBCb29sQm9vbEVudHJ5EkoKDm1hcF9p", - "bnQzMl9lbnVtGA4gAygLMjIucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVu", - "YU1hcC5NYXBJbnQzMkVudW1FbnRyeRJfChltYXBfaW50MzJfZm9yZWlnbl9t", - "ZXNzYWdlGA8gAygLMjwucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBcmVuYU1h", - "cC5NYXBJbnQzMkZvcmVpZ25NZXNzYWdlRW50cnkaNAoSTWFwSW50MzJJbnQz", - "MkVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEaNAoSTWFw", - "SW50NjRJbnQ2NEVudHJ5EgsKA2tleRgBIAEoAxINCgV2YWx1ZRgCIAEoAzoC", - "OAEaNgoUTWFwVWludDMyVWludDMyRW50cnkSCwoDa2V5GAEgASgNEg0KBXZh", - "bHVlGAIgASgNOgI4ARo2ChRNYXBVaW50NjRVaW50NjRFbnRyeRILCgNrZXkY", - "ASABKAQSDQoFdmFsdWUYAiABKAQ6AjgBGjYKFE1hcFNpbnQzMlNpbnQzMkVu", - "dHJ5EgsKA2tleRgBIAEoERINCgV2YWx1ZRgCIAEoEToCOAEaNgoUTWFwU2lu", - "dDY0U2ludDY0RW50cnkSCwoDa2V5GAEgASgSEg0KBXZhbHVlGAIgASgSOgI4", - "ARo4ChZNYXBGaXhlZDMyRml4ZWQzMkVudHJ5EgsKA2tleRgBIAEoBxINCgV2", - "YWx1ZRgCIAEoBzoCOAEaOAoWTWFwRml4ZWQ2NEZpeGVkNjRFbnRyeRILCgNr", - "ZXkYASABKAYSDQoFdmFsdWUYAiABKAY6AjgBGjoKGE1hcFNmaXhlZDMyU2Zp", - "eGVkMzJFbnRyeRILCgNrZXkYASABKA8SDQoFdmFsdWUYAiABKA86AjgBGjoK", - "GE1hcFNmaXhlZDY0U2ZpeGVkNjRFbnRyeRILCgNrZXkYASABKBASDQoFdmFs", - "dWUYAiABKBA6AjgBGjQKEk1hcEludDMyRmxvYXRFbnRyeRILCgNrZXkYASAB", - "KAUSDQoFdmFsdWUYAiABKAI6AjgBGjUKE01hcEludDMyRG91YmxlRW50cnkS", - "CwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgBOgI4ARoyChBNYXBCb29sQm9v", - "bEVudHJ5EgsKA2tleRgBIAEoCBINCgV2YWx1ZRgCIAEoCDoCOAEaUAoRTWFw", - "SW50MzJFbnVtRW50cnkSCwoDa2V5GAEgASgFEioKBXZhbHVlGAIgASgOMhsu", - "cHJvdG9idWZfdW5pdHRlc3QzLk1hcEVudW06AjgBGmEKG01hcEludDMyRm9y", - "ZWlnbk1lc3NhZ2VFbnRyeRILCgNrZXkYASABKAUSMQoFdmFsdWUYAiABKAsy", - "Ii5wcm90b2J1Zl91bml0dGVzdDMuRm9yZWlnbk1lc3NhZ2U6AjgBIuYBCh9N", - "ZXNzYWdlQ29udGFpbmluZ0VudW1DYWxsZWRUeXBlEksKBHR5cGUYASADKAsy", - "PS5wcm90b2J1Zl91bml0dGVzdDMuTWVzc2FnZUNvbnRhaW5pbmdFbnVtQ2Fs", - "bGVkVHlwZS5UeXBlRW50cnkaYAoJVHlwZUVudHJ5EgsKA2tleRgBIAEoBRJC", - "CgV2YWx1ZRgCIAEoCzIzLnByb3RvYnVmX3VuaXR0ZXN0My5NZXNzYWdlQ29u", - "dGFpbmluZ0VudW1DYWxsZWRUeXBlOgI4ASIUCgRUeXBlEgwKCFRZUEVfRk9P", - "EAAingEKH01lc3NhZ2VDb250YWluaW5nTWFwQ2FsbGVkRW50cnkSTQoFZW50", - "cnkYASADKAsyPi5wcm90b2J1Zl91bml0dGVzdDMuTWVzc2FnZUNvbnRhaW5p", - "bmdNYXBDYWxsZWRFbnRyeS5FbnRyeUVudHJ5GiwKCkVudHJ5RW50cnkSCwoD", - "a2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ASo/CgdNYXBFbnVtEhAKDE1B", - "UF9FTlVNX0ZPTxAAEhAKDE1BUF9FTlVNX0JBUhABEhAKDE1BUF9FTlVNX0JB", - "WhACQh2qAhpHb29nbGUuUHJvdG9idWYuVGVzdFByb3Rvc2IGcHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.TestProtos.MapEnum), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMap), global::Google.Protobuf.TestProtos.TestMap.Parser, new[]{ "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapInt32Bytes", "MapInt32Enum", "MapInt32ForeignMessage" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMapSubmessage), global::Google.Protobuf.TestProtos.TestMapSubmessage.Parser, new[]{ "TestMap" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMessageMap), global::Google.Protobuf.TestProtos.TestMessageMap.Parser, new[]{ "MapInt32Message" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestSameTypeMap), global::Google.Protobuf.TestProtos.TestSameTypeMap.Parser, new[]{ "Map1", "Map2" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestArenaMap), global::Google.Protobuf.TestProtos.TestArenaMap.Parser, new[]{ "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapInt32Enum", "MapInt32ForeignMessage" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType), global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType.Parser, new[]{ "Type" }, null, new[]{ typeof(global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType.Types.Type) }, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry), global::Google.Protobuf.TestProtos.MessageContainingMapCalledEntry.Parser, new[]{ "Entry" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }) - })); - } - #endregion - - } - #region Enums - public enum MapEnum { - [pbr::OriginalName("MAP_ENUM_FOO")] Foo = 0, - [pbr::OriginalName("MAP_ENUM_BAR")] Bar = 1, - [pbr::OriginalName("MAP_ENUM_BAZ")] Baz = 2, - } - - #endregion - - #region Messages - /// - /// Tests maps. - /// - public sealed partial class TestMap : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMap()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMap() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMap(TestMap other) : this() { - mapInt32Int32_ = other.mapInt32Int32_.Clone(); - mapInt64Int64_ = other.mapInt64Int64_.Clone(); - mapUint32Uint32_ = other.mapUint32Uint32_.Clone(); - mapUint64Uint64_ = other.mapUint64Uint64_.Clone(); - mapSint32Sint32_ = other.mapSint32Sint32_.Clone(); - mapSint64Sint64_ = other.mapSint64Sint64_.Clone(); - mapFixed32Fixed32_ = other.mapFixed32Fixed32_.Clone(); - mapFixed64Fixed64_ = other.mapFixed64Fixed64_.Clone(); - mapSfixed32Sfixed32_ = other.mapSfixed32Sfixed32_.Clone(); - mapSfixed64Sfixed64_ = other.mapSfixed64Sfixed64_.Clone(); - mapInt32Float_ = other.mapInt32Float_.Clone(); - mapInt32Double_ = other.mapInt32Double_.Clone(); - mapBoolBool_ = other.mapBoolBool_.Clone(); - mapStringString_ = other.mapStringString_.Clone(); - mapInt32Bytes_ = other.mapInt32Bytes_.Clone(); - mapInt32Enum_ = other.mapInt32Enum_.Clone(); - mapInt32ForeignMessage_ = other.mapInt32ForeignMessage_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMap Clone() { - return new TestMap(this); - } - - /// Field number for the "map_int32_int32" field. - public const int MapInt32Int32FieldNumber = 1; - private static readonly pbc::MapField.Codec _map_mapInt32Int32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 10); - private readonly pbc::MapField mapInt32Int32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Int32 { - get { return mapInt32Int32_; } - } - - /// Field number for the "map_int64_int64" field. - public const int MapInt64Int64FieldNumber = 2; - private static readonly pbc::MapField.Codec _map_mapInt64Int64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt64(8, 0L), pb::FieldCodec.ForInt64(16, 0L), 18); - private readonly pbc::MapField mapInt64Int64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt64Int64 { - get { return mapInt64Int64_; } - } - - /// Field number for the "map_uint32_uint32" field. - public const int MapUint32Uint32FieldNumber = 3; - private static readonly pbc::MapField.Codec _map_mapUint32Uint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt32(8, 0), pb::FieldCodec.ForUInt32(16, 0), 26); - private readonly pbc::MapField mapUint32Uint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint32Uint32 { - get { return mapUint32Uint32_; } - } - - /// Field number for the "map_uint64_uint64" field. - public const int MapUint64Uint64FieldNumber = 4; - private static readonly pbc::MapField.Codec _map_mapUint64Uint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt64(8, 0UL), pb::FieldCodec.ForUInt64(16, 0UL), 34); - private readonly pbc::MapField mapUint64Uint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint64Uint64 { - get { return mapUint64Uint64_; } - } - - /// Field number for the "map_sint32_sint32" field. - public const int MapSint32Sint32FieldNumber = 5; - private static readonly pbc::MapField.Codec _map_mapSint32Sint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt32(8, 0), pb::FieldCodec.ForSInt32(16, 0), 42); - private readonly pbc::MapField mapSint32Sint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint32Sint32 { - get { return mapSint32Sint32_; } - } - - /// Field number for the "map_sint64_sint64" field. - public const int MapSint64Sint64FieldNumber = 6; - private static readonly pbc::MapField.Codec _map_mapSint64Sint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt64(8, 0L), pb::FieldCodec.ForSInt64(16, 0L), 50); - private readonly pbc::MapField mapSint64Sint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint64Sint64 { - get { return mapSint64Sint64_; } - } - - /// Field number for the "map_fixed32_fixed32" field. - public const int MapFixed32Fixed32FieldNumber = 7; - private static readonly pbc::MapField.Codec _map_mapFixed32Fixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed32(13, 0), pb::FieldCodec.ForFixed32(21, 0), 58); - private readonly pbc::MapField mapFixed32Fixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed32Fixed32 { - get { return mapFixed32Fixed32_; } - } - - /// Field number for the "map_fixed64_fixed64" field. - public const int MapFixed64Fixed64FieldNumber = 8; - private static readonly pbc::MapField.Codec _map_mapFixed64Fixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed64(9, 0UL), pb::FieldCodec.ForFixed64(17, 0UL), 66); - private readonly pbc::MapField mapFixed64Fixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed64Fixed64 { - get { return mapFixed64Fixed64_; } - } - - /// Field number for the "map_sfixed32_sfixed32" field. - public const int MapSfixed32Sfixed32FieldNumber = 9; - private static readonly pbc::MapField.Codec _map_mapSfixed32Sfixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed32(13, 0), pb::FieldCodec.ForSFixed32(21, 0), 74); - private readonly pbc::MapField mapSfixed32Sfixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed32Sfixed32 { - get { return mapSfixed32Sfixed32_; } - } - - /// Field number for the "map_sfixed64_sfixed64" field. - public const int MapSfixed64Sfixed64FieldNumber = 10; - private static readonly pbc::MapField.Codec _map_mapSfixed64Sfixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed64(9, 0L), pb::FieldCodec.ForSFixed64(17, 0L), 82); - private readonly pbc::MapField mapSfixed64Sfixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed64Sfixed64 { - get { return mapSfixed64Sfixed64_; } - } - - /// Field number for the "map_int32_float" field. - public const int MapInt32FloatFieldNumber = 11; - private static readonly pbc::MapField.Codec _map_mapInt32Float_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForFloat(21, 0F), 90); - private readonly pbc::MapField mapInt32Float_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Float { - get { return mapInt32Float_; } - } - - /// Field number for the "map_int32_double" field. - public const int MapInt32DoubleFieldNumber = 12; - private static readonly pbc::MapField.Codec _map_mapInt32Double_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForDouble(17, 0D), 98); - private readonly pbc::MapField mapInt32Double_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Double { - get { return mapInt32Double_; } - } - - /// Field number for the "map_bool_bool" field. - public const int MapBoolBoolFieldNumber = 13; - private static readonly pbc::MapField.Codec _map_mapBoolBool_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForBool(8, false), pb::FieldCodec.ForBool(16, false), 106); - private readonly pbc::MapField mapBoolBool_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapBoolBool { - get { return mapBoolBool_; } - } - - /// Field number for the "map_string_string" field. - public const int MapStringStringFieldNumber = 14; - private static readonly pbc::MapField.Codec _map_mapStringString_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 114); - private readonly pbc::MapField mapStringString_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringString { - get { return mapStringString_; } - } - - /// Field number for the "map_int32_bytes" field. - public const int MapInt32BytesFieldNumber = 15; - private static readonly pbc::MapField.Codec _map_mapInt32Bytes_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForBytes(18, pb::ByteString.Empty), 122); - private readonly pbc::MapField mapInt32Bytes_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Bytes { - get { return mapInt32Bytes_; } - } - - /// Field number for the "map_int32_enum" field. - public const int MapInt32EnumFieldNumber = 16; - private static readonly pbc::MapField.Codec _map_mapInt32Enum_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::Google.Protobuf.TestProtos.MapEnum) x, global::Google.Protobuf.TestProtos.MapEnum.Foo), 130); - private readonly pbc::MapField mapInt32Enum_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Enum { - get { return mapInt32Enum_; } - } - - /// Field number for the "map_int32_foreign_message" field. - public const int MapInt32ForeignMessageFieldNumber = 17; - private static readonly pbc::MapField.Codec _map_mapInt32ForeignMessage_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.TestProtos.ForeignMessage.Parser), 138); - private readonly pbc::MapField mapInt32ForeignMessage_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32ForeignMessage { - get { return mapInt32ForeignMessage_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMap); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMap other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!MapInt32Int32.Equals(other.MapInt32Int32)) return false; - if (!MapInt64Int64.Equals(other.MapInt64Int64)) return false; - if (!MapUint32Uint32.Equals(other.MapUint32Uint32)) return false; - if (!MapUint64Uint64.Equals(other.MapUint64Uint64)) return false; - if (!MapSint32Sint32.Equals(other.MapSint32Sint32)) return false; - if (!MapSint64Sint64.Equals(other.MapSint64Sint64)) return false; - if (!MapFixed32Fixed32.Equals(other.MapFixed32Fixed32)) return false; - if (!MapFixed64Fixed64.Equals(other.MapFixed64Fixed64)) return false; - if (!MapSfixed32Sfixed32.Equals(other.MapSfixed32Sfixed32)) return false; - if (!MapSfixed64Sfixed64.Equals(other.MapSfixed64Sfixed64)) return false; - if (!MapInt32Float.Equals(other.MapInt32Float)) return false; - if (!MapInt32Double.Equals(other.MapInt32Double)) return false; - if (!MapBoolBool.Equals(other.MapBoolBool)) return false; - if (!MapStringString.Equals(other.MapStringString)) return false; - if (!MapInt32Bytes.Equals(other.MapInt32Bytes)) return false; - if (!MapInt32Enum.Equals(other.MapInt32Enum)) return false; - if (!MapInt32ForeignMessage.Equals(other.MapInt32ForeignMessage)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= MapInt32Int32.GetHashCode(); - hash ^= MapInt64Int64.GetHashCode(); - hash ^= MapUint32Uint32.GetHashCode(); - hash ^= MapUint64Uint64.GetHashCode(); - hash ^= MapSint32Sint32.GetHashCode(); - hash ^= MapSint64Sint64.GetHashCode(); - hash ^= MapFixed32Fixed32.GetHashCode(); - hash ^= MapFixed64Fixed64.GetHashCode(); - hash ^= MapSfixed32Sfixed32.GetHashCode(); - hash ^= MapSfixed64Sfixed64.GetHashCode(); - hash ^= MapInt32Float.GetHashCode(); - hash ^= MapInt32Double.GetHashCode(); - hash ^= MapBoolBool.GetHashCode(); - hash ^= MapStringString.GetHashCode(); - hash ^= MapInt32Bytes.GetHashCode(); - hash ^= MapInt32Enum.GetHashCode(); - hash ^= MapInt32ForeignMessage.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - mapInt32Int32_.WriteTo(output, _map_mapInt32Int32_codec); - mapInt64Int64_.WriteTo(output, _map_mapInt64Int64_codec); - mapUint32Uint32_.WriteTo(output, _map_mapUint32Uint32_codec); - mapUint64Uint64_.WriteTo(output, _map_mapUint64Uint64_codec); - mapSint32Sint32_.WriteTo(output, _map_mapSint32Sint32_codec); - mapSint64Sint64_.WriteTo(output, _map_mapSint64Sint64_codec); - mapFixed32Fixed32_.WriteTo(output, _map_mapFixed32Fixed32_codec); - mapFixed64Fixed64_.WriteTo(output, _map_mapFixed64Fixed64_codec); - mapSfixed32Sfixed32_.WriteTo(output, _map_mapSfixed32Sfixed32_codec); - mapSfixed64Sfixed64_.WriteTo(output, _map_mapSfixed64Sfixed64_codec); - mapInt32Float_.WriteTo(output, _map_mapInt32Float_codec); - mapInt32Double_.WriteTo(output, _map_mapInt32Double_codec); - mapBoolBool_.WriteTo(output, _map_mapBoolBool_codec); - mapStringString_.WriteTo(output, _map_mapStringString_codec); - mapInt32Bytes_.WriteTo(output, _map_mapInt32Bytes_codec); - mapInt32Enum_.WriteTo(output, _map_mapInt32Enum_codec); - mapInt32ForeignMessage_.WriteTo(output, _map_mapInt32ForeignMessage_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += mapInt32Int32_.CalculateSize(_map_mapInt32Int32_codec); - size += mapInt64Int64_.CalculateSize(_map_mapInt64Int64_codec); - size += mapUint32Uint32_.CalculateSize(_map_mapUint32Uint32_codec); - size += mapUint64Uint64_.CalculateSize(_map_mapUint64Uint64_codec); - size += mapSint32Sint32_.CalculateSize(_map_mapSint32Sint32_codec); - size += mapSint64Sint64_.CalculateSize(_map_mapSint64Sint64_codec); - size += mapFixed32Fixed32_.CalculateSize(_map_mapFixed32Fixed32_codec); - size += mapFixed64Fixed64_.CalculateSize(_map_mapFixed64Fixed64_codec); - size += mapSfixed32Sfixed32_.CalculateSize(_map_mapSfixed32Sfixed32_codec); - size += mapSfixed64Sfixed64_.CalculateSize(_map_mapSfixed64Sfixed64_codec); - size += mapInt32Float_.CalculateSize(_map_mapInt32Float_codec); - size += mapInt32Double_.CalculateSize(_map_mapInt32Double_codec); - size += mapBoolBool_.CalculateSize(_map_mapBoolBool_codec); - size += mapStringString_.CalculateSize(_map_mapStringString_codec); - size += mapInt32Bytes_.CalculateSize(_map_mapInt32Bytes_codec); - size += mapInt32Enum_.CalculateSize(_map_mapInt32Enum_codec); - size += mapInt32ForeignMessage_.CalculateSize(_map_mapInt32ForeignMessage_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMap other) { - if (other == null) { - return; - } - mapInt32Int32_.Add(other.mapInt32Int32_); - mapInt64Int64_.Add(other.mapInt64Int64_); - mapUint32Uint32_.Add(other.mapUint32Uint32_); - mapUint64Uint64_.Add(other.mapUint64Uint64_); - mapSint32Sint32_.Add(other.mapSint32Sint32_); - mapSint64Sint64_.Add(other.mapSint64Sint64_); - mapFixed32Fixed32_.Add(other.mapFixed32Fixed32_); - mapFixed64Fixed64_.Add(other.mapFixed64Fixed64_); - mapSfixed32Sfixed32_.Add(other.mapSfixed32Sfixed32_); - mapSfixed64Sfixed64_.Add(other.mapSfixed64Sfixed64_); - mapInt32Float_.Add(other.mapInt32Float_); - mapInt32Double_.Add(other.mapInt32Double_); - mapBoolBool_.Add(other.mapBoolBool_); - mapStringString_.Add(other.mapStringString_); - mapInt32Bytes_.Add(other.mapInt32Bytes_); - mapInt32Enum_.Add(other.mapInt32Enum_); - mapInt32ForeignMessage_.Add(other.mapInt32ForeignMessage_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - mapInt32Int32_.AddEntriesFrom(input, _map_mapInt32Int32_codec); - break; - } - case 18: { - mapInt64Int64_.AddEntriesFrom(input, _map_mapInt64Int64_codec); - break; - } - case 26: { - mapUint32Uint32_.AddEntriesFrom(input, _map_mapUint32Uint32_codec); - break; - } - case 34: { - mapUint64Uint64_.AddEntriesFrom(input, _map_mapUint64Uint64_codec); - break; - } - case 42: { - mapSint32Sint32_.AddEntriesFrom(input, _map_mapSint32Sint32_codec); - break; - } - case 50: { - mapSint64Sint64_.AddEntriesFrom(input, _map_mapSint64Sint64_codec); - break; - } - case 58: { - mapFixed32Fixed32_.AddEntriesFrom(input, _map_mapFixed32Fixed32_codec); - break; - } - case 66: { - mapFixed64Fixed64_.AddEntriesFrom(input, _map_mapFixed64Fixed64_codec); - break; - } - case 74: { - mapSfixed32Sfixed32_.AddEntriesFrom(input, _map_mapSfixed32Sfixed32_codec); - break; - } - case 82: { - mapSfixed64Sfixed64_.AddEntriesFrom(input, _map_mapSfixed64Sfixed64_codec); - break; - } - case 90: { - mapInt32Float_.AddEntriesFrom(input, _map_mapInt32Float_codec); - break; - } - case 98: { - mapInt32Double_.AddEntriesFrom(input, _map_mapInt32Double_codec); - break; - } - case 106: { - mapBoolBool_.AddEntriesFrom(input, _map_mapBoolBool_codec); - break; - } - case 114: { - mapStringString_.AddEntriesFrom(input, _map_mapStringString_codec); - break; - } - case 122: { - mapInt32Bytes_.AddEntriesFrom(input, _map_mapInt32Bytes_codec); - break; - } - case 130: { - mapInt32Enum_.AddEntriesFrom(input, _map_mapInt32Enum_codec); - break; - } - case 138: { - mapInt32ForeignMessage_.AddEntriesFrom(input, _map_mapInt32ForeignMessage_codec); - break; - } - } - } - } - - } - - public sealed partial class TestMapSubmessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMapSubmessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMapSubmessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMapSubmessage(TestMapSubmessage other) : this() { - testMap_ = other.testMap_ != null ? other.testMap_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMapSubmessage Clone() { - return new TestMapSubmessage(this); - } - - /// Field number for the "test_map" field. - public const int TestMapFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestMap testMap_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestMap TestMap { - get { return testMap_; } - set { - testMap_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMapSubmessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMapSubmessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(TestMap, other.TestMap)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (testMap_ != null) hash ^= TestMap.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (testMap_ != null) { - output.WriteRawTag(10); - output.WriteMessage(TestMap); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (testMap_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(TestMap); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMapSubmessage other) { - if (other == null) { - return; - } - if (other.testMap_ != null) { - if (testMap_ == null) { - TestMap = new global::Google.Protobuf.TestProtos.TestMap(); - } - TestMap.MergeFrom(other.TestMap); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (testMap_ == null) { - TestMap = new global::Google.Protobuf.TestProtos.TestMap(); - } - input.ReadMessage(TestMap); - break; - } - } - } - } - - } - - public sealed partial class TestMessageMap : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMessageMap()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageMap() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageMap(TestMessageMap other) : this() { - mapInt32Message_ = other.mapInt32Message_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageMap Clone() { - return new TestMessageMap(this); - } - - /// Field number for the "map_int32_message" field. - public const int MapInt32MessageFieldNumber = 1; - private static readonly pbc::MapField.Codec _map_mapInt32Message_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.TestProtos.TestAllTypes.Parser), 10); - private readonly pbc::MapField mapInt32Message_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Message { - get { return mapInt32Message_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMessageMap); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMessageMap other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!MapInt32Message.Equals(other.MapInt32Message)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= MapInt32Message.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - mapInt32Message_.WriteTo(output, _map_mapInt32Message_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += mapInt32Message_.CalculateSize(_map_mapInt32Message_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMessageMap other) { - if (other == null) { - return; - } - mapInt32Message_.Add(other.mapInt32Message_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - mapInt32Message_.AddEntriesFrom(input, _map_mapInt32Message_codec); - break; - } - } - } - } - - } - - /// - /// Two map fields share the same entry default instance. - /// - public sealed partial class TestSameTypeMap : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestSameTypeMap()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestSameTypeMap() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestSameTypeMap(TestSameTypeMap other) : this() { - map1_ = other.map1_.Clone(); - map2_ = other.map2_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestSameTypeMap Clone() { - return new TestSameTypeMap(this); - } - - /// Field number for the "map1" field. - public const int Map1FieldNumber = 1; - private static readonly pbc::MapField.Codec _map_map1_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 10); - private readonly pbc::MapField map1_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Map1 { - get { return map1_; } - } - - /// Field number for the "map2" field. - public const int Map2FieldNumber = 2; - private static readonly pbc::MapField.Codec _map_map2_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 18); - private readonly pbc::MapField map2_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Map2 { - get { return map2_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestSameTypeMap); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestSameTypeMap other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!Map1.Equals(other.Map1)) return false; - if (!Map2.Equals(other.Map2)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= Map1.GetHashCode(); - hash ^= Map2.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - map1_.WriteTo(output, _map_map1_codec); - map2_.WriteTo(output, _map_map2_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += map1_.CalculateSize(_map_map1_codec); - size += map2_.CalculateSize(_map_map2_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestSameTypeMap other) { - if (other == null) { - return; - } - map1_.Add(other.map1_); - map2_.Add(other.map2_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - map1_.AddEntriesFrom(input, _map_map1_codec); - break; - } - case 18: { - map2_.AddEntriesFrom(input, _map_map2_codec); - break; - } - } - } - } - - } - - public sealed partial class TestArenaMap : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestArenaMap()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestArenaMap() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestArenaMap(TestArenaMap other) : this() { - mapInt32Int32_ = other.mapInt32Int32_.Clone(); - mapInt64Int64_ = other.mapInt64Int64_.Clone(); - mapUint32Uint32_ = other.mapUint32Uint32_.Clone(); - mapUint64Uint64_ = other.mapUint64Uint64_.Clone(); - mapSint32Sint32_ = other.mapSint32Sint32_.Clone(); - mapSint64Sint64_ = other.mapSint64Sint64_.Clone(); - mapFixed32Fixed32_ = other.mapFixed32Fixed32_.Clone(); - mapFixed64Fixed64_ = other.mapFixed64Fixed64_.Clone(); - mapSfixed32Sfixed32_ = other.mapSfixed32Sfixed32_.Clone(); - mapSfixed64Sfixed64_ = other.mapSfixed64Sfixed64_.Clone(); - mapInt32Float_ = other.mapInt32Float_.Clone(); - mapInt32Double_ = other.mapInt32Double_.Clone(); - mapBoolBool_ = other.mapBoolBool_.Clone(); - mapInt32Enum_ = other.mapInt32Enum_.Clone(); - mapInt32ForeignMessage_ = other.mapInt32ForeignMessage_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestArenaMap Clone() { - return new TestArenaMap(this); - } - - /// Field number for the "map_int32_int32" field. - public const int MapInt32Int32FieldNumber = 1; - private static readonly pbc::MapField.Codec _map_mapInt32Int32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 10); - private readonly pbc::MapField mapInt32Int32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Int32 { - get { return mapInt32Int32_; } - } - - /// Field number for the "map_int64_int64" field. - public const int MapInt64Int64FieldNumber = 2; - private static readonly pbc::MapField.Codec _map_mapInt64Int64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt64(8, 0L), pb::FieldCodec.ForInt64(16, 0L), 18); - private readonly pbc::MapField mapInt64Int64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt64Int64 { - get { return mapInt64Int64_; } - } - - /// Field number for the "map_uint32_uint32" field. - public const int MapUint32Uint32FieldNumber = 3; - private static readonly pbc::MapField.Codec _map_mapUint32Uint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt32(8, 0), pb::FieldCodec.ForUInt32(16, 0), 26); - private readonly pbc::MapField mapUint32Uint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint32Uint32 { - get { return mapUint32Uint32_; } - } - - /// Field number for the "map_uint64_uint64" field. - public const int MapUint64Uint64FieldNumber = 4; - private static readonly pbc::MapField.Codec _map_mapUint64Uint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt64(8, 0UL), pb::FieldCodec.ForUInt64(16, 0UL), 34); - private readonly pbc::MapField mapUint64Uint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint64Uint64 { - get { return mapUint64Uint64_; } - } - - /// Field number for the "map_sint32_sint32" field. - public const int MapSint32Sint32FieldNumber = 5; - private static readonly pbc::MapField.Codec _map_mapSint32Sint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt32(8, 0), pb::FieldCodec.ForSInt32(16, 0), 42); - private readonly pbc::MapField mapSint32Sint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint32Sint32 { - get { return mapSint32Sint32_; } - } - - /// Field number for the "map_sint64_sint64" field. - public const int MapSint64Sint64FieldNumber = 6; - private static readonly pbc::MapField.Codec _map_mapSint64Sint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt64(8, 0L), pb::FieldCodec.ForSInt64(16, 0L), 50); - private readonly pbc::MapField mapSint64Sint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint64Sint64 { - get { return mapSint64Sint64_; } - } - - /// Field number for the "map_fixed32_fixed32" field. - public const int MapFixed32Fixed32FieldNumber = 7; - private static readonly pbc::MapField.Codec _map_mapFixed32Fixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed32(13, 0), pb::FieldCodec.ForFixed32(21, 0), 58); - private readonly pbc::MapField mapFixed32Fixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed32Fixed32 { - get { return mapFixed32Fixed32_; } - } - - /// Field number for the "map_fixed64_fixed64" field. - public const int MapFixed64Fixed64FieldNumber = 8; - private static readonly pbc::MapField.Codec _map_mapFixed64Fixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed64(9, 0UL), pb::FieldCodec.ForFixed64(17, 0UL), 66); - private readonly pbc::MapField mapFixed64Fixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed64Fixed64 { - get { return mapFixed64Fixed64_; } - } - - /// Field number for the "map_sfixed32_sfixed32" field. - public const int MapSfixed32Sfixed32FieldNumber = 9; - private static readonly pbc::MapField.Codec _map_mapSfixed32Sfixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed32(13, 0), pb::FieldCodec.ForSFixed32(21, 0), 74); - private readonly pbc::MapField mapSfixed32Sfixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed32Sfixed32 { - get { return mapSfixed32Sfixed32_; } - } - - /// Field number for the "map_sfixed64_sfixed64" field. - public const int MapSfixed64Sfixed64FieldNumber = 10; - private static readonly pbc::MapField.Codec _map_mapSfixed64Sfixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed64(9, 0L), pb::FieldCodec.ForSFixed64(17, 0L), 82); - private readonly pbc::MapField mapSfixed64Sfixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed64Sfixed64 { - get { return mapSfixed64Sfixed64_; } - } - - /// Field number for the "map_int32_float" field. - public const int MapInt32FloatFieldNumber = 11; - private static readonly pbc::MapField.Codec _map_mapInt32Float_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForFloat(21, 0F), 90); - private readonly pbc::MapField mapInt32Float_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Float { - get { return mapInt32Float_; } - } - - /// Field number for the "map_int32_double" field. - public const int MapInt32DoubleFieldNumber = 12; - private static readonly pbc::MapField.Codec _map_mapInt32Double_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForDouble(17, 0D), 98); - private readonly pbc::MapField mapInt32Double_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Double { - get { return mapInt32Double_; } - } - - /// Field number for the "map_bool_bool" field. - public const int MapBoolBoolFieldNumber = 13; - private static readonly pbc::MapField.Codec _map_mapBoolBool_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForBool(8, false), pb::FieldCodec.ForBool(16, false), 106); - private readonly pbc::MapField mapBoolBool_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapBoolBool { - get { return mapBoolBool_; } - } - - /// Field number for the "map_int32_enum" field. - public const int MapInt32EnumFieldNumber = 14; - private static readonly pbc::MapField.Codec _map_mapInt32Enum_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::Google.Protobuf.TestProtos.MapEnum) x, global::Google.Protobuf.TestProtos.MapEnum.Foo), 114); - private readonly pbc::MapField mapInt32Enum_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Enum { - get { return mapInt32Enum_; } - } - - /// Field number for the "map_int32_foreign_message" field. - public const int MapInt32ForeignMessageFieldNumber = 15; - private static readonly pbc::MapField.Codec _map_mapInt32ForeignMessage_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.TestProtos.ForeignMessage.Parser), 122); - private readonly pbc::MapField mapInt32ForeignMessage_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32ForeignMessage { - get { return mapInt32ForeignMessage_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestArenaMap); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestArenaMap other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!MapInt32Int32.Equals(other.MapInt32Int32)) return false; - if (!MapInt64Int64.Equals(other.MapInt64Int64)) return false; - if (!MapUint32Uint32.Equals(other.MapUint32Uint32)) return false; - if (!MapUint64Uint64.Equals(other.MapUint64Uint64)) return false; - if (!MapSint32Sint32.Equals(other.MapSint32Sint32)) return false; - if (!MapSint64Sint64.Equals(other.MapSint64Sint64)) return false; - if (!MapFixed32Fixed32.Equals(other.MapFixed32Fixed32)) return false; - if (!MapFixed64Fixed64.Equals(other.MapFixed64Fixed64)) return false; - if (!MapSfixed32Sfixed32.Equals(other.MapSfixed32Sfixed32)) return false; - if (!MapSfixed64Sfixed64.Equals(other.MapSfixed64Sfixed64)) return false; - if (!MapInt32Float.Equals(other.MapInt32Float)) return false; - if (!MapInt32Double.Equals(other.MapInt32Double)) return false; - if (!MapBoolBool.Equals(other.MapBoolBool)) return false; - if (!MapInt32Enum.Equals(other.MapInt32Enum)) return false; - if (!MapInt32ForeignMessage.Equals(other.MapInt32ForeignMessage)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= MapInt32Int32.GetHashCode(); - hash ^= MapInt64Int64.GetHashCode(); - hash ^= MapUint32Uint32.GetHashCode(); - hash ^= MapUint64Uint64.GetHashCode(); - hash ^= MapSint32Sint32.GetHashCode(); - hash ^= MapSint64Sint64.GetHashCode(); - hash ^= MapFixed32Fixed32.GetHashCode(); - hash ^= MapFixed64Fixed64.GetHashCode(); - hash ^= MapSfixed32Sfixed32.GetHashCode(); - hash ^= MapSfixed64Sfixed64.GetHashCode(); - hash ^= MapInt32Float.GetHashCode(); - hash ^= MapInt32Double.GetHashCode(); - hash ^= MapBoolBool.GetHashCode(); - hash ^= MapInt32Enum.GetHashCode(); - hash ^= MapInt32ForeignMessage.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - mapInt32Int32_.WriteTo(output, _map_mapInt32Int32_codec); - mapInt64Int64_.WriteTo(output, _map_mapInt64Int64_codec); - mapUint32Uint32_.WriteTo(output, _map_mapUint32Uint32_codec); - mapUint64Uint64_.WriteTo(output, _map_mapUint64Uint64_codec); - mapSint32Sint32_.WriteTo(output, _map_mapSint32Sint32_codec); - mapSint64Sint64_.WriteTo(output, _map_mapSint64Sint64_codec); - mapFixed32Fixed32_.WriteTo(output, _map_mapFixed32Fixed32_codec); - mapFixed64Fixed64_.WriteTo(output, _map_mapFixed64Fixed64_codec); - mapSfixed32Sfixed32_.WriteTo(output, _map_mapSfixed32Sfixed32_codec); - mapSfixed64Sfixed64_.WriteTo(output, _map_mapSfixed64Sfixed64_codec); - mapInt32Float_.WriteTo(output, _map_mapInt32Float_codec); - mapInt32Double_.WriteTo(output, _map_mapInt32Double_codec); - mapBoolBool_.WriteTo(output, _map_mapBoolBool_codec); - mapInt32Enum_.WriteTo(output, _map_mapInt32Enum_codec); - mapInt32ForeignMessage_.WriteTo(output, _map_mapInt32ForeignMessage_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += mapInt32Int32_.CalculateSize(_map_mapInt32Int32_codec); - size += mapInt64Int64_.CalculateSize(_map_mapInt64Int64_codec); - size += mapUint32Uint32_.CalculateSize(_map_mapUint32Uint32_codec); - size += mapUint64Uint64_.CalculateSize(_map_mapUint64Uint64_codec); - size += mapSint32Sint32_.CalculateSize(_map_mapSint32Sint32_codec); - size += mapSint64Sint64_.CalculateSize(_map_mapSint64Sint64_codec); - size += mapFixed32Fixed32_.CalculateSize(_map_mapFixed32Fixed32_codec); - size += mapFixed64Fixed64_.CalculateSize(_map_mapFixed64Fixed64_codec); - size += mapSfixed32Sfixed32_.CalculateSize(_map_mapSfixed32Sfixed32_codec); - size += mapSfixed64Sfixed64_.CalculateSize(_map_mapSfixed64Sfixed64_codec); - size += mapInt32Float_.CalculateSize(_map_mapInt32Float_codec); - size += mapInt32Double_.CalculateSize(_map_mapInt32Double_codec); - size += mapBoolBool_.CalculateSize(_map_mapBoolBool_codec); - size += mapInt32Enum_.CalculateSize(_map_mapInt32Enum_codec); - size += mapInt32ForeignMessage_.CalculateSize(_map_mapInt32ForeignMessage_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestArenaMap other) { - if (other == null) { - return; - } - mapInt32Int32_.Add(other.mapInt32Int32_); - mapInt64Int64_.Add(other.mapInt64Int64_); - mapUint32Uint32_.Add(other.mapUint32Uint32_); - mapUint64Uint64_.Add(other.mapUint64Uint64_); - mapSint32Sint32_.Add(other.mapSint32Sint32_); - mapSint64Sint64_.Add(other.mapSint64Sint64_); - mapFixed32Fixed32_.Add(other.mapFixed32Fixed32_); - mapFixed64Fixed64_.Add(other.mapFixed64Fixed64_); - mapSfixed32Sfixed32_.Add(other.mapSfixed32Sfixed32_); - mapSfixed64Sfixed64_.Add(other.mapSfixed64Sfixed64_); - mapInt32Float_.Add(other.mapInt32Float_); - mapInt32Double_.Add(other.mapInt32Double_); - mapBoolBool_.Add(other.mapBoolBool_); - mapInt32Enum_.Add(other.mapInt32Enum_); - mapInt32ForeignMessage_.Add(other.mapInt32ForeignMessage_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - mapInt32Int32_.AddEntriesFrom(input, _map_mapInt32Int32_codec); - break; - } - case 18: { - mapInt64Int64_.AddEntriesFrom(input, _map_mapInt64Int64_codec); - break; - } - case 26: { - mapUint32Uint32_.AddEntriesFrom(input, _map_mapUint32Uint32_codec); - break; - } - case 34: { - mapUint64Uint64_.AddEntriesFrom(input, _map_mapUint64Uint64_codec); - break; - } - case 42: { - mapSint32Sint32_.AddEntriesFrom(input, _map_mapSint32Sint32_codec); - break; - } - case 50: { - mapSint64Sint64_.AddEntriesFrom(input, _map_mapSint64Sint64_codec); - break; - } - case 58: { - mapFixed32Fixed32_.AddEntriesFrom(input, _map_mapFixed32Fixed32_codec); - break; - } - case 66: { - mapFixed64Fixed64_.AddEntriesFrom(input, _map_mapFixed64Fixed64_codec); - break; - } - case 74: { - mapSfixed32Sfixed32_.AddEntriesFrom(input, _map_mapSfixed32Sfixed32_codec); - break; - } - case 82: { - mapSfixed64Sfixed64_.AddEntriesFrom(input, _map_mapSfixed64Sfixed64_codec); - break; - } - case 90: { - mapInt32Float_.AddEntriesFrom(input, _map_mapInt32Float_codec); - break; - } - case 98: { - mapInt32Double_.AddEntriesFrom(input, _map_mapInt32Double_codec); - break; - } - case 106: { - mapBoolBool_.AddEntriesFrom(input, _map_mapBoolBool_codec); - break; - } - case 114: { - mapInt32Enum_.AddEntriesFrom(input, _map_mapInt32Enum_codec); - break; - } - case 122: { - mapInt32ForeignMessage_.AddEntriesFrom(input, _map_mapInt32ForeignMessage_codec); - break; - } - } - } - } - - } - - /// - /// Previously, message containing enum called Type cannot be used as value of - /// map field. - /// - public sealed partial class MessageContainingEnumCalledType : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MessageContainingEnumCalledType()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingEnumCalledType() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingEnumCalledType(MessageContainingEnumCalledType other) : this() { - type_ = other.type_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingEnumCalledType Clone() { - return new MessageContainingEnumCalledType(this); - } - - /// Field number for the "type" field. - public const int TypeFieldNumber = 1; - private static readonly pbc::MapField.Codec _map_type_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.TestProtos.MessageContainingEnumCalledType.Parser), 10); - private readonly pbc::MapField type_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Type { - get { return type_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MessageContainingEnumCalledType); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MessageContainingEnumCalledType other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!Type.Equals(other.Type)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= Type.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - type_.WriteTo(output, _map_type_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += type_.CalculateSize(_map_type_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MessageContainingEnumCalledType other) { - if (other == null) { - return; - } - type_.Add(other.type_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - type_.AddEntriesFrom(input, _map_type_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the MessageContainingEnumCalledType message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum Type { - [pbr::OriginalName("TYPE_FOO")] Foo = 0, - } - - } - #endregion - - } - - /// - /// Previously, message cannot contain map field called "entry". - /// - public sealed partial class MessageContainingMapCalledEntry : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MessageContainingMapCalledEntry()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.MapUnittestProto3Reflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingMapCalledEntry() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingMapCalledEntry(MessageContainingMapCalledEntry other) : this() { - entry_ = other.entry_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageContainingMapCalledEntry Clone() { - return new MessageContainingMapCalledEntry(this); - } - - /// Field number for the "entry" field. - public const int EntryFieldNumber = 1; - private static readonly pbc::MapField.Codec _map_entry_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 10); - private readonly pbc::MapField entry_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Entry { - get { return entry_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MessageContainingMapCalledEntry); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MessageContainingMapCalledEntry other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!Entry.Equals(other.Entry)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= Entry.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - entry_.WriteTo(output, _map_entry_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += entry_.CalculateSize(_map_entry_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MessageContainingMapCalledEntry other) { - if (other == null) { - return; - } - entry_.Add(other.entry_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - entry_.AddEntriesFrom(input, _map_entry_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs deleted file mode 100644 index 822ff26..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs +++ /dev/null @@ -1,3804 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/test_messages_proto3.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 ProtobufTestMessages.Proto3 { - - /// Holder for reflection information generated from google/protobuf/test_messages_proto3.proto - public static partial class TestMessagesProto3Reflection { - - #region Descriptor - /// File descriptor for google/protobuf/test_messages_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static TestMessagesProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Cipnb29nbGUvcHJvdG9idWYvdGVzdF9tZXNzYWdlc19wcm90bzMucHJvdG8S", - "HXByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zGhlnb29nbGUvcHJvdG9i", - "dWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8a", - "IGdvb2dsZS9wcm90b2J1Zi9maWVsZF9tYXNrLnByb3RvGhxnb29nbGUvcHJv", - "dG9idWYvc3RydWN0LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1w", - "LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8ipz0KElRl", - "c3RBbGxUeXBlc1Byb3RvMxIWCg5vcHRpb25hbF9pbnQzMhgBIAEoBRIWCg5v", - "cHRpb25hbF9pbnQ2NBgCIAEoAxIXCg9vcHRpb25hbF91aW50MzIYAyABKA0S", - "FwoPb3B0aW9uYWxfdWludDY0GAQgASgEEhcKD29wdGlvbmFsX3NpbnQzMhgF", - "IAEoERIXCg9vcHRpb25hbF9zaW50NjQYBiABKBISGAoQb3B0aW9uYWxfZml4", - "ZWQzMhgHIAEoBxIYChBvcHRpb25hbF9maXhlZDY0GAggASgGEhkKEW9wdGlv", - "bmFsX3NmaXhlZDMyGAkgASgPEhkKEW9wdGlvbmFsX3NmaXhlZDY0GAogASgQ", - "EhYKDm9wdGlvbmFsX2Zsb2F0GAsgASgCEhcKD29wdGlvbmFsX2RvdWJsZRgM", - "IAEoARIVCg1vcHRpb25hbF9ib29sGA0gASgIEhcKD29wdGlvbmFsX3N0cmlu", - "ZxgOIAEoCRIWCg5vcHRpb25hbF9ieXRlcxgPIAEoDBJgChdvcHRpb25hbF9u", - "ZXN0ZWRfbWVzc2FnZRgSIAEoCzI/LnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMu", - "cHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5OZXN0ZWRNZXNzYWdlEk8KGG9w", - "dGlvbmFsX2ZvcmVpZ25fbWVzc2FnZRgTIAEoCzItLnByb3RvYnVmX3Rlc3Rf", - "bWVzc2FnZXMucHJvdG8zLkZvcmVpZ25NZXNzYWdlEloKFG9wdGlvbmFsX25l", - "c3RlZF9lbnVtGBUgASgOMjwucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90", - "bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk5lc3RlZEVudW0SSQoVb3B0aW9uYWxf", - "Zm9yZWlnbl9lbnVtGBYgASgOMioucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w", - "cm90bzMuRm9yZWlnbkVudW0SXAoVb3B0aW9uYWxfYWxpYXNlZF9lbnVtGBcg", - "ASgOMj0ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5", - "cGVzUHJvdG8zLkFsaWFzZWRFbnVtEiEKFW9wdGlvbmFsX3N0cmluZ19waWVj", - "ZRgYIAEoCUICCAISGQoNb3B0aW9uYWxfY29yZBgZIAEoCUICCAESTAoRcmVj", - "dXJzaXZlX21lc3NhZ2UYGyABKAsyMS5wcm90b2J1Zl90ZXN0X21lc3NhZ2Vz", - "LnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMSFgoOcmVwZWF0ZWRfaW50MzIY", - "HyADKAUSFgoOcmVwZWF0ZWRfaW50NjQYICADKAMSFwoPcmVwZWF0ZWRfdWlu", - "dDMyGCEgAygNEhcKD3JlcGVhdGVkX3VpbnQ2NBgiIAMoBBIXCg9yZXBlYXRl", - "ZF9zaW50MzIYIyADKBESFwoPcmVwZWF0ZWRfc2ludDY0GCQgAygSEhgKEHJl", - "cGVhdGVkX2ZpeGVkMzIYJSADKAcSGAoQcmVwZWF0ZWRfZml4ZWQ2NBgmIAMo", - "BhIZChFyZXBlYXRlZF9zZml4ZWQzMhgnIAMoDxIZChFyZXBlYXRlZF9zZml4", - "ZWQ2NBgoIAMoEBIWCg5yZXBlYXRlZF9mbG9hdBgpIAMoAhIXCg9yZXBlYXRl", - "ZF9kb3VibGUYKiADKAESFQoNcmVwZWF0ZWRfYm9vbBgrIAMoCBIXCg9yZXBl", - "YXRlZF9zdHJpbmcYLCADKAkSFgoOcmVwZWF0ZWRfYnl0ZXMYLSADKAwSYAoX", - "cmVwZWF0ZWRfbmVzdGVkX21lc3NhZ2UYMCADKAsyPy5wcm90b2J1Zl90ZXN0", - "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTmVzdGVkTWVz", - "c2FnZRJPChhyZXBlYXRlZF9mb3JlaWduX21lc3NhZ2UYMSADKAsyLS5wcm90", - "b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5Gb3JlaWduTWVzc2FnZRJaChRy", - "ZXBlYXRlZF9uZXN0ZWRfZW51bRgzIAMoDjI8LnByb3RvYnVmX3Rlc3RfbWVz", - "c2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5OZXN0ZWRFbnVtEkkK", - "FXJlcGVhdGVkX2ZvcmVpZ25fZW51bRg0IAMoDjIqLnByb3RvYnVmX3Rlc3Rf", - "bWVzc2FnZXMucHJvdG8zLkZvcmVpZ25FbnVtEiEKFXJlcGVhdGVkX3N0cmlu", - "Z19waWVjZRg2IAMoCUICCAISGQoNcmVwZWF0ZWRfY29yZBg3IAMoCUICCAES", - "XQoPbWFwX2ludDMyX2ludDMyGDggAygLMkQucHJvdG9idWZfdGVzdF9tZXNz", - "YWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcEludDMySW50MzJF", - "bnRyeRJdCg9tYXBfaW50NjRfaW50NjQYOSADKAsyRC5wcm90b2J1Zl90ZXN0", - "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwSW50NjRJ", - "bnQ2NEVudHJ5EmEKEW1hcF91aW50MzJfdWludDMyGDogAygLMkYucHJvdG9i", - "dWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1h", - "cFVpbnQzMlVpbnQzMkVudHJ5EmEKEW1hcF91aW50NjRfdWludDY0GDsgAygL", - "MkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVz", - "UHJvdG8zLk1hcFVpbnQ2NFVpbnQ2NEVudHJ5EmEKEW1hcF9zaW50MzJfc2lu", - "dDMyGDwgAygLMkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVz", - "dEFsbFR5cGVzUHJvdG8zLk1hcFNpbnQzMlNpbnQzMkVudHJ5EmEKEW1hcF9z", - "aW50NjRfc2ludDY0GD0gAygLMkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w", - "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFNpbnQ2NFNpbnQ2NEVudHJ5", - "EmUKE21hcF9maXhlZDMyX2ZpeGVkMzIYPiADKAsySC5wcm90b2J1Zl90ZXN0", - "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwRml4ZWQz", - "MkZpeGVkMzJFbnRyeRJlChNtYXBfZml4ZWQ2NF9maXhlZDY0GD8gAygLMkgu", - "cHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJv", - "dG8zLk1hcEZpeGVkNjRGaXhlZDY0RW50cnkSaQoVbWFwX3NmaXhlZDMyX3Nm", - "aXhlZDMyGEAgAygLMkoucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMu", - "VGVzdEFsbFR5cGVzUHJvdG8zLk1hcFNmaXhlZDMyU2ZpeGVkMzJFbnRyeRJp", - "ChVtYXBfc2ZpeGVkNjRfc2ZpeGVkNjQYQSADKAsySi5wcm90b2J1Zl90ZXN0", - "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU2ZpeGVk", - "NjRTZml4ZWQ2NEVudHJ5El0KD21hcF9pbnQzMl9mbG9hdBhCIAMoCzJELnBy", - "b3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3Rv", - "My5NYXBJbnQzMkZsb2F0RW50cnkSXwoQbWFwX2ludDMyX2RvdWJsZRhDIAMo", - "CzJFLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBl", - "c1Byb3RvMy5NYXBJbnQzMkRvdWJsZUVudHJ5ElkKDW1hcF9ib29sX2Jvb2wY", - "RCADKAsyQi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxs", - "VHlwZXNQcm90bzMuTWFwQm9vbEJvb2xFbnRyeRJhChFtYXBfc3RyaW5nX3N0", - "cmluZxhFIAMoCzJGLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRl", - "c3RBbGxUeXBlc1Byb3RvMy5NYXBTdHJpbmdTdHJpbmdFbnRyeRJfChBtYXBf", - "c3RyaW5nX2J5dGVzGEYgAygLMkUucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w", - "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFN0cmluZ0J5dGVzRW50cnkS", - "cAoZbWFwX3N0cmluZ19uZXN0ZWRfbWVzc2FnZRhHIAMoCzJNLnByb3RvYnVm", - "X3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5NYXBT", - "dHJpbmdOZXN0ZWRNZXNzYWdlRW50cnkScgoabWFwX3N0cmluZ19mb3JlaWdu", - "X21lc3NhZ2UYSCADKAsyTi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3Rv", - "My5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU3RyaW5nRm9yZWlnbk1lc3NhZ2VF", - "bnRyeRJqChZtYXBfc3RyaW5nX25lc3RlZF9lbnVtGEkgAygLMkoucHJvdG9i", - "dWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1h", - "cFN0cmluZ05lc3RlZEVudW1FbnRyeRJsChdtYXBfc3RyaW5nX2ZvcmVpZ25f", - "ZW51bRhKIAMoCzJLLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRl", - "c3RBbGxUeXBlc1Byb3RvMy5NYXBTdHJpbmdGb3JlaWduRW51bUVudHJ5EhYK", - "DG9uZW9mX3VpbnQzMhhvIAEoDUgAEl8KFG9uZW9mX25lc3RlZF9tZXNzYWdl", - "GHAgASgLMj8ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFs", - "bFR5cGVzUHJvdG8zLk5lc3RlZE1lc3NhZ2VIABIWCgxvbmVvZl9zdHJpbmcY", - "cSABKAlIABIVCgtvbmVvZl9ieXRlcxhyIAEoDEgAEhQKCm9uZW9mX2Jvb2wY", - "cyABKAhIABIWCgxvbmVvZl91aW50NjQYdCABKARIABIVCgtvbmVvZl9mbG9h", - "dBh1IAEoAkgAEhYKDG9uZW9mX2RvdWJsZRh2IAEoAUgAElIKCm9uZW9mX2Vu", - "dW0YdyABKA4yPC5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0", - "QWxsVHlwZXNQcm90bzMuTmVzdGVkRW51bUgAEjoKFW9wdGlvbmFsX2Jvb2xf", - "d3JhcHBlchjJASABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjwK", - "Fm9wdGlvbmFsX2ludDMyX3dyYXBwZXIYygEgASgLMhsuZ29vZ2xlLnByb3Rv", - "YnVmLkludDMyVmFsdWUSPAoWb3B0aW9uYWxfaW50NjRfd3JhcHBlchjLASAB", - "KAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI+ChdvcHRpb25hbF91", - "aW50MzJfd3JhcHBlchjMASABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDMy", - "VmFsdWUSPgoXb3B0aW9uYWxfdWludDY0X3dyYXBwZXIYzQEgASgLMhwuZ29v", - "Z2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEjwKFm9wdGlvbmFsX2Zsb2F0X3dy", - "YXBwZXIYzgEgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZsb2F0VmFsdWUSPgoX", - "b3B0aW9uYWxfZG91YmxlX3dyYXBwZXIYzwEgASgLMhwuZ29vZ2xlLnByb3Rv", - "YnVmLkRvdWJsZVZhbHVlEj4KF29wdGlvbmFsX3N0cmluZ193cmFwcGVyGNAB", - "IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI8ChZvcHRpb25h", - "bF9ieXRlc193cmFwcGVyGNEBIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5CeXRl", - "c1ZhbHVlEjoKFXJlcGVhdGVkX2Jvb2xfd3JhcHBlchjTASADKAsyGi5nb29n", - "bGUucHJvdG9idWYuQm9vbFZhbHVlEjwKFnJlcGVhdGVkX2ludDMyX3dyYXBw", - "ZXIY1AEgAygLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSPAoWcmVw", - "ZWF0ZWRfaW50NjRfd3JhcHBlchjVASADKAsyGy5nb29nbGUucHJvdG9idWYu", - "SW50NjRWYWx1ZRI+ChdyZXBlYXRlZF91aW50MzJfd3JhcHBlchjWASADKAsy", - "HC5nb29nbGUucHJvdG9idWYuVUludDMyVmFsdWUSPgoXcmVwZWF0ZWRfdWlu", - "dDY0X3dyYXBwZXIY1wEgAygLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZh", - "bHVlEjwKFnJlcGVhdGVkX2Zsb2F0X3dyYXBwZXIY2AEgAygLMhsuZ29vZ2xl", - "LnByb3RvYnVmLkZsb2F0VmFsdWUSPgoXcmVwZWF0ZWRfZG91YmxlX3dyYXBw", - "ZXIY2QEgAygLMhwuZ29vZ2xlLnByb3RvYnVmLkRvdWJsZVZhbHVlEj4KF3Jl", - "cGVhdGVkX3N0cmluZ193cmFwcGVyGNoBIAMoCzIcLmdvb2dsZS5wcm90b2J1", - "Zi5TdHJpbmdWYWx1ZRI8ChZyZXBlYXRlZF9ieXRlc193cmFwcGVyGNsBIAMo", - "CzIbLmdvb2dsZS5wcm90b2J1Zi5CeXRlc1ZhbHVlEjUKEW9wdGlvbmFsX2R1", - "cmF0aW9uGK0CIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChJv", - "cHRpb25hbF90aW1lc3RhbXAYrgIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp", - "bWVzdGFtcBI4ChNvcHRpb25hbF9maWVsZF9tYXNrGK8CIAEoCzIaLmdvb2ds", - "ZS5wcm90b2J1Zi5GaWVsZE1hc2sSMQoPb3B0aW9uYWxfc3RydWN0GLACIAEo", - "CzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKwoMb3B0aW9uYWxfYW55GLEC", - "IAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSLwoOb3B0aW9uYWxfdmFsdWUY", - "sgIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjUKEXJlcGVhdGVkX2R1", - "cmF0aW9uGLcCIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChJy", - "ZXBlYXRlZF90aW1lc3RhbXAYuAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLlRp", - "bWVzdGFtcBI3ChJyZXBlYXRlZF9maWVsZG1hc2sYuQIgAygLMhouZ29vZ2xl", - "LnByb3RvYnVmLkZpZWxkTWFzaxIxCg9yZXBlYXRlZF9zdHJ1Y3QYxAIgAygL", - "MhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIrCgxyZXBlYXRlZF9hbnkYuwIg", - "AygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRIvCg5yZXBlYXRlZF92YWx1ZRi8", - "AiADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSOAoTcmVwZWF0ZWRfbGlz", - "dF92YWx1ZRi9AiADKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlEhMK", - "CmZpZWxkbmFtZTEYkQMgASgFEhQKC2ZpZWxkX25hbWUyGJIDIAEoBRIVCgxf", - "ZmllbGRfbmFtZTMYkwMgASgFEhYKDWZpZWxkX19uYW1lNF8YlAMgASgFEhQK", - "C2ZpZWxkMG5hbWU1GJUDIAEoBRIWCg1maWVsZF8wX25hbWU2GJYDIAEoBRIT", - "CgpmaWVsZE5hbWU3GJcDIAEoBRITCgpGaWVsZE5hbWU4GJgDIAEoBRIUCgtm", - "aWVsZF9OYW1lORiZAyABKAUSFQoMRmllbGRfTmFtZTEwGJoDIAEoBRIVCgxG", - "SUVMRF9OQU1FMTEYmwMgASgFEhUKDEZJRUxEX25hbWUxMhicAyABKAUSFwoO", - "X19maWVsZF9uYW1lMTMYnQMgASgFEhcKDl9fRmllbGRfbmFtZTE0GJ4DIAEo", - "BRIWCg1maWVsZF9fbmFtZTE1GJ8DIAEoBRIWCg1maWVsZF9fTmFtZTE2GKAD", - "IAEoBRIXCg5maWVsZF9uYW1lMTdfXxihAyABKAUSFwoORmllbGRfbmFtZTE4", - "X18YogMgASgFGmIKDU5lc3RlZE1lc3NhZ2USCQoBYRgBIAEoBRJGCgtjb3Jl", - "Y3Vyc2l2ZRgCIAEoCzIxLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8z", - "LlRlc3RBbGxUeXBlc1Byb3RvMxo0ChJNYXBJbnQzMkludDMyRW50cnkSCwoD", - "a2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARo0ChJNYXBJbnQ2NEludDY0", - "RW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ARo2ChRNYXBV", - "aW50MzJVaW50MzJFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKA06", - "AjgBGjYKFE1hcFVpbnQ2NFVpbnQ2NEVudHJ5EgsKA2tleRgBIAEoBBINCgV2", - "YWx1ZRgCIAEoBDoCOAEaNgoUTWFwU2ludDMyU2ludDMyRW50cnkSCwoDa2V5", - "GAEgASgREg0KBXZhbHVlGAIgASgROgI4ARo2ChRNYXBTaW50NjRTaW50NjRF", - "bnRyeRILCgNrZXkYASABKBISDQoFdmFsdWUYAiABKBI6AjgBGjgKFk1hcEZp", - "eGVkMzJGaXhlZDMyRW50cnkSCwoDa2V5GAEgASgHEg0KBXZhbHVlGAIgASgH", - "OgI4ARo4ChZNYXBGaXhlZDY0Rml4ZWQ2NEVudHJ5EgsKA2tleRgBIAEoBhIN", - "CgV2YWx1ZRgCIAEoBjoCOAEaOgoYTWFwU2ZpeGVkMzJTZml4ZWQzMkVudHJ5", - "EgsKA2tleRgBIAEoDxINCgV2YWx1ZRgCIAEoDzoCOAEaOgoYTWFwU2ZpeGVk", - "NjRTZml4ZWQ2NEVudHJ5EgsKA2tleRgBIAEoEBINCgV2YWx1ZRgCIAEoEDoC", - "OAEaNAoSTWFwSW50MzJGbG9hdEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1", - "ZRgCIAEoAjoCOAEaNQoTTWFwSW50MzJEb3VibGVFbnRyeRILCgNrZXkYASAB", - "KAUSDQoFdmFsdWUYAiABKAE6AjgBGjIKEE1hcEJvb2xCb29sRW50cnkSCwoD", - "a2V5GAEgASgIEg0KBXZhbHVlGAIgASgIOgI4ARo2ChRNYXBTdHJpbmdTdHJp", - "bmdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjUKE01h", - "cFN0cmluZ0J5dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgM", - "OgI4ARp+ChtNYXBTdHJpbmdOZXN0ZWRNZXNzYWdlRW50cnkSCwoDa2V5GAEg", - "ASgJEk4KBXZhbHVlGAIgASgLMj8ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w", - "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk5lc3RlZE1lc3NhZ2U6AjgBGm0K", - "HE1hcFN0cmluZ0ZvcmVpZ25NZXNzYWdlRW50cnkSCwoDa2V5GAEgASgJEjwK", - "BXZhbHVlGAIgASgLMi0ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMu", - "Rm9yZWlnbk1lc3NhZ2U6AjgBGngKGE1hcFN0cmluZ05lc3RlZEVudW1FbnRy", - "eRILCgNrZXkYASABKAkSSwoFdmFsdWUYAiABKA4yPC5wcm90b2J1Zl90ZXN0", - "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTmVzdGVkRW51", - "bToCOAEaZwoZTWFwU3RyaW5nRm9yZWlnbkVudW1FbnRyeRILCgNrZXkYASAB", - "KAkSOQoFdmFsdWUYAiABKA4yKi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnBy", - "b3RvMy5Gb3JlaWduRW51bToCOAEiOQoKTmVzdGVkRW51bRIHCgNGT08QABIH", - "CgNCQVIQARIHCgNCQVoQAhIQCgNORUcQ////////////ASJZCgtBbGlhc2Vk", - "RW51bRINCglBTElBU19GT08QABINCglBTElBU19CQVIQARINCglBTElBU19C", - "QVoQAhIHCgNRVVgQAhIHCgNxdXgQAhIHCgNiQXoQAhoCEAFCDQoLb25lb2Zf", - "ZmllbGRKBgj1AxD/AyIbCg5Gb3JlaWduTWVzc2FnZRIJCgFjGAEgASgFKkAK", - "C0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAASDwoLRk9SRUlHTl9CQVIQ", - "ARIPCgtGT1JFSUdOX0JBWhACQjgKKGNvbS5nb29nbGUucHJvdG9idWZfdGVz", - "dF9tZXNzYWdlcy5wcm90bzNIAfgBAaICBlByb3RvM2IGcHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ProtobufTestMessages.Proto3.ForeignEnum), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Parser, new[]{ "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalAliasedEnum", "OptionalStringPiece", "OptionalCord", "RecursiveMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapStringBytes", "MapStringNestedMessage", "MapStringForeignMessage", "MapStringNestedEnum", "MapStringForeignEnum", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofBool", "OneofUint64", "OneofFloat", "OneofDouble", "OneofEnum", "OptionalBoolWrapper", "OptionalInt32Wrapper", "OptionalInt64Wrapper", "OptionalUint32Wrapper", "OptionalUint64Wrapper", "OptionalFloatWrapper", "OptionalDoubleWrapper", "OptionalStringWrapper", "OptionalBytesWrapper", "RepeatedBoolWrapper", "RepeatedInt32Wrapper", "RepeatedInt64Wrapper", "RepeatedUint32Wrapper", "RepeatedUint64Wrapper", "RepeatedFloatWrapper", "RepeatedDoubleWrapper", "RepeatedStringWrapper", "RepeatedBytesWrapper", "OptionalDuration", "OptionalTimestamp", "OptionalFieldMask", "OptionalStruct", "OptionalAny", "OptionalValue", "RepeatedDuration", "RepeatedTimestamp", "RepeatedFieldmask", "RepeatedStruct", "RepeatedAny", "RepeatedValue", "RepeatedListValue", "Fieldname1", "FieldName2", "FieldName3", "FieldName4", "Field0Name5", "Field0Name6", "FieldName7", "FieldName8", "FieldName9", "FieldName10", "FIELDNAME11", "FIELDName12", "FieldName13", "FieldName14", "FieldName15", "FieldName16", "FieldName17", "FieldName18" }, new[]{ "OneofField" }, new[]{ typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum), typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage.Parser, new[]{ "A", "Corecursive" }, null, null, null, null), - null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.ForeignMessage), global::ProtobufTestMessages.Proto3.ForeignMessage.Parser, new[]{ "C" }, null, null, null, null) - })); - } - #endregion - - } - #region Enums - public enum ForeignEnum { - [pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 0, - [pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 1, - [pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 2, - } - - #endregion - - #region Messages - /// - /// This proto includes every type of field in both singular and repeated - /// forms. - /// - /// Also, crucially, all messages and enums in this file are eventually - /// submessages of this message. So for example, a fuzz test of TestAllTypes - /// could trigger bugs that occur in any message type in this file. We verify - /// this stays true in a unit test. - /// - public sealed partial class TestAllTypesProto3 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestAllTypesProto3()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::ProtobufTestMessages.Proto3.TestMessagesProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypesProto3() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypesProto3(TestAllTypesProto3 other) : this() { - optionalInt32_ = other.optionalInt32_; - optionalInt64_ = other.optionalInt64_; - optionalUint32_ = other.optionalUint32_; - optionalUint64_ = other.optionalUint64_; - optionalSint32_ = other.optionalSint32_; - optionalSint64_ = other.optionalSint64_; - optionalFixed32_ = other.optionalFixed32_; - optionalFixed64_ = other.optionalFixed64_; - optionalSfixed32_ = other.optionalSfixed32_; - optionalSfixed64_ = other.optionalSfixed64_; - optionalFloat_ = other.optionalFloat_; - optionalDouble_ = other.optionalDouble_; - optionalBool_ = other.optionalBool_; - optionalString_ = other.optionalString_; - optionalBytes_ = other.optionalBytes_; - optionalNestedMessage_ = other.optionalNestedMessage_ != null ? other.optionalNestedMessage_.Clone() : null; - optionalForeignMessage_ = other.optionalForeignMessage_ != null ? other.optionalForeignMessage_.Clone() : null; - optionalNestedEnum_ = other.optionalNestedEnum_; - optionalForeignEnum_ = other.optionalForeignEnum_; - optionalAliasedEnum_ = other.optionalAliasedEnum_; - optionalStringPiece_ = other.optionalStringPiece_; - optionalCord_ = other.optionalCord_; - recursiveMessage_ = other.recursiveMessage_ != null ? other.recursiveMessage_.Clone() : null; - repeatedInt32_ = other.repeatedInt32_.Clone(); - repeatedInt64_ = other.repeatedInt64_.Clone(); - repeatedUint32_ = other.repeatedUint32_.Clone(); - repeatedUint64_ = other.repeatedUint64_.Clone(); - repeatedSint32_ = other.repeatedSint32_.Clone(); - repeatedSint64_ = other.repeatedSint64_.Clone(); - repeatedFixed32_ = other.repeatedFixed32_.Clone(); - repeatedFixed64_ = other.repeatedFixed64_.Clone(); - repeatedSfixed32_ = other.repeatedSfixed32_.Clone(); - repeatedSfixed64_ = other.repeatedSfixed64_.Clone(); - repeatedFloat_ = other.repeatedFloat_.Clone(); - repeatedDouble_ = other.repeatedDouble_.Clone(); - repeatedBool_ = other.repeatedBool_.Clone(); - repeatedString_ = other.repeatedString_.Clone(); - repeatedBytes_ = other.repeatedBytes_.Clone(); - repeatedNestedMessage_ = other.repeatedNestedMessage_.Clone(); - repeatedForeignMessage_ = other.repeatedForeignMessage_.Clone(); - repeatedNestedEnum_ = other.repeatedNestedEnum_.Clone(); - repeatedForeignEnum_ = other.repeatedForeignEnum_.Clone(); - repeatedStringPiece_ = other.repeatedStringPiece_.Clone(); - repeatedCord_ = other.repeatedCord_.Clone(); - mapInt32Int32_ = other.mapInt32Int32_.Clone(); - mapInt64Int64_ = other.mapInt64Int64_.Clone(); - mapUint32Uint32_ = other.mapUint32Uint32_.Clone(); - mapUint64Uint64_ = other.mapUint64Uint64_.Clone(); - mapSint32Sint32_ = other.mapSint32Sint32_.Clone(); - mapSint64Sint64_ = other.mapSint64Sint64_.Clone(); - mapFixed32Fixed32_ = other.mapFixed32Fixed32_.Clone(); - mapFixed64Fixed64_ = other.mapFixed64Fixed64_.Clone(); - mapSfixed32Sfixed32_ = other.mapSfixed32Sfixed32_.Clone(); - mapSfixed64Sfixed64_ = other.mapSfixed64Sfixed64_.Clone(); - mapInt32Float_ = other.mapInt32Float_.Clone(); - mapInt32Double_ = other.mapInt32Double_.Clone(); - mapBoolBool_ = other.mapBoolBool_.Clone(); - mapStringString_ = other.mapStringString_.Clone(); - mapStringBytes_ = other.mapStringBytes_.Clone(); - mapStringNestedMessage_ = other.mapStringNestedMessage_.Clone(); - mapStringForeignMessage_ = other.mapStringForeignMessage_.Clone(); - mapStringNestedEnum_ = other.mapStringNestedEnum_.Clone(); - mapStringForeignEnum_ = other.mapStringForeignEnum_.Clone(); - OptionalBoolWrapper = other.OptionalBoolWrapper; - OptionalInt32Wrapper = other.OptionalInt32Wrapper; - OptionalInt64Wrapper = other.OptionalInt64Wrapper; - OptionalUint32Wrapper = other.OptionalUint32Wrapper; - OptionalUint64Wrapper = other.OptionalUint64Wrapper; - OptionalFloatWrapper = other.OptionalFloatWrapper; - OptionalDoubleWrapper = other.OptionalDoubleWrapper; - OptionalStringWrapper = other.OptionalStringWrapper; - OptionalBytesWrapper = other.OptionalBytesWrapper; - repeatedBoolWrapper_ = other.repeatedBoolWrapper_.Clone(); - repeatedInt32Wrapper_ = other.repeatedInt32Wrapper_.Clone(); - repeatedInt64Wrapper_ = other.repeatedInt64Wrapper_.Clone(); - repeatedUint32Wrapper_ = other.repeatedUint32Wrapper_.Clone(); - repeatedUint64Wrapper_ = other.repeatedUint64Wrapper_.Clone(); - repeatedFloatWrapper_ = other.repeatedFloatWrapper_.Clone(); - repeatedDoubleWrapper_ = other.repeatedDoubleWrapper_.Clone(); - repeatedStringWrapper_ = other.repeatedStringWrapper_.Clone(); - repeatedBytesWrapper_ = other.repeatedBytesWrapper_.Clone(); - optionalDuration_ = other.optionalDuration_ != null ? other.optionalDuration_.Clone() : null; - optionalTimestamp_ = other.optionalTimestamp_ != null ? other.optionalTimestamp_.Clone() : null; - optionalFieldMask_ = other.optionalFieldMask_ != null ? other.optionalFieldMask_.Clone() : null; - optionalStruct_ = other.optionalStruct_ != null ? other.optionalStruct_.Clone() : null; - optionalAny_ = other.optionalAny_ != null ? other.optionalAny_.Clone() : null; - optionalValue_ = other.optionalValue_ != null ? other.optionalValue_.Clone() : null; - repeatedDuration_ = other.repeatedDuration_.Clone(); - repeatedTimestamp_ = other.repeatedTimestamp_.Clone(); - repeatedFieldmask_ = other.repeatedFieldmask_.Clone(); - repeatedStruct_ = other.repeatedStruct_.Clone(); - repeatedAny_ = other.repeatedAny_.Clone(); - repeatedValue_ = other.repeatedValue_.Clone(); - repeatedListValue_ = other.repeatedListValue_.Clone(); - fieldname1_ = other.fieldname1_; - fieldName2_ = other.fieldName2_; - FieldName3_ = other.FieldName3_; - fieldName4_ = other.fieldName4_; - field0Name5_ = other.field0Name5_; - field0Name6_ = other.field0Name6_; - fieldName7_ = other.fieldName7_; - fieldName8_ = other.fieldName8_; - fieldName9_ = other.fieldName9_; - fieldName10_ = other.fieldName10_; - fIELDNAME11_ = other.fIELDNAME11_; - fIELDName12_ = other.fIELDName12_; - FieldName13_ = other.FieldName13_; - FieldName14_ = other.FieldName14_; - fieldName15_ = other.fieldName15_; - fieldName16_ = other.fieldName16_; - fieldName17_ = other.fieldName17_; - fieldName18_ = other.fieldName18_; - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.OneofUint32: - OneofUint32 = other.OneofUint32; - break; - case OneofFieldOneofCase.OneofNestedMessage: - OneofNestedMessage = other.OneofNestedMessage.Clone(); - break; - case OneofFieldOneofCase.OneofString: - OneofString = other.OneofString; - break; - case OneofFieldOneofCase.OneofBytes: - OneofBytes = other.OneofBytes; - break; - case OneofFieldOneofCase.OneofBool: - OneofBool = other.OneofBool; - break; - case OneofFieldOneofCase.OneofUint64: - OneofUint64 = other.OneofUint64; - break; - case OneofFieldOneofCase.OneofFloat: - OneofFloat = other.OneofFloat; - break; - case OneofFieldOneofCase.OneofDouble: - OneofDouble = other.OneofDouble; - break; - case OneofFieldOneofCase.OneofEnum: - OneofEnum = other.OneofEnum; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypesProto3 Clone() { - return new TestAllTypesProto3(this); - } - - /// Field number for the "optional_int32" field. - public const int OptionalInt32FieldNumber = 1; - private int optionalInt32_; - /// - /// Singular - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OptionalInt32 { - get { return optionalInt32_; } - set { - optionalInt32_ = value; - } - } - - /// Field number for the "optional_int64" field. - public const int OptionalInt64FieldNumber = 2; - private long optionalInt64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long OptionalInt64 { - get { return optionalInt64_; } - set { - optionalInt64_ = value; - } - } - - /// Field number for the "optional_uint32" field. - public const int OptionalUint32FieldNumber = 3; - private uint optionalUint32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint OptionalUint32 { - get { return optionalUint32_; } - set { - optionalUint32_ = value; - } - } - - /// Field number for the "optional_uint64" field. - public const int OptionalUint64FieldNumber = 4; - private ulong optionalUint64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong OptionalUint64 { - get { return optionalUint64_; } - set { - optionalUint64_ = value; - } - } - - /// Field number for the "optional_sint32" field. - public const int OptionalSint32FieldNumber = 5; - private int optionalSint32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OptionalSint32 { - get { return optionalSint32_; } - set { - optionalSint32_ = value; - } - } - - /// Field number for the "optional_sint64" field. - public const int OptionalSint64FieldNumber = 6; - private long optionalSint64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long OptionalSint64 { - get { return optionalSint64_; } - set { - optionalSint64_ = value; - } - } - - /// Field number for the "optional_fixed32" field. - public const int OptionalFixed32FieldNumber = 7; - private uint optionalFixed32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint OptionalFixed32 { - get { return optionalFixed32_; } - set { - optionalFixed32_ = value; - } - } - - /// Field number for the "optional_fixed64" field. - public const int OptionalFixed64FieldNumber = 8; - private ulong optionalFixed64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong OptionalFixed64 { - get { return optionalFixed64_; } - set { - optionalFixed64_ = value; - } - } - - /// Field number for the "optional_sfixed32" field. - public const int OptionalSfixed32FieldNumber = 9; - private int optionalSfixed32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OptionalSfixed32 { - get { return optionalSfixed32_; } - set { - optionalSfixed32_ = value; - } - } - - /// Field number for the "optional_sfixed64" field. - public const int OptionalSfixed64FieldNumber = 10; - private long optionalSfixed64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long OptionalSfixed64 { - get { return optionalSfixed64_; } - set { - optionalSfixed64_ = value; - } - } - - /// Field number for the "optional_float" field. - public const int OptionalFloatFieldNumber = 11; - private float optionalFloat_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float OptionalFloat { - get { return optionalFloat_; } - set { - optionalFloat_ = value; - } - } - - /// Field number for the "optional_double" field. - public const int OptionalDoubleFieldNumber = 12; - private double optionalDouble_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double OptionalDouble { - get { return optionalDouble_; } - set { - optionalDouble_ = value; - } - } - - /// Field number for the "optional_bool" field. - public const int OptionalBoolFieldNumber = 13; - private bool optionalBool_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool OptionalBool { - get { return optionalBool_; } - set { - optionalBool_ = value; - } - } - - /// Field number for the "optional_string" field. - public const int OptionalStringFieldNumber = 14; - private string optionalString_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OptionalString { - get { return optionalString_; } - set { - optionalString_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "optional_bytes" field. - public const int OptionalBytesFieldNumber = 15; - private pb::ByteString optionalBytes_ = pb::ByteString.Empty; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString OptionalBytes { - get { return optionalBytes_; } - set { - optionalBytes_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "optional_nested_message" field. - public const int OptionalNestedMessageFieldNumber = 18; - private global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage optionalNestedMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage OptionalNestedMessage { - get { return optionalNestedMessage_; } - set { - optionalNestedMessage_ = value; - } - } - - /// Field number for the "optional_foreign_message" field. - public const int OptionalForeignMessageFieldNumber = 19; - private global::ProtobufTestMessages.Proto3.ForeignMessage optionalForeignMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.ForeignMessage OptionalForeignMessage { - get { return optionalForeignMessage_; } - set { - optionalForeignMessage_ = value; - } - } - - /// Field number for the "optional_nested_enum" field. - public const int OptionalNestedEnumFieldNumber = 21; - private global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum optionalNestedEnum_ = global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum OptionalNestedEnum { - get { return optionalNestedEnum_; } - set { - optionalNestedEnum_ = value; - } - } - - /// Field number for the "optional_foreign_enum" field. - public const int OptionalForeignEnumFieldNumber = 22; - private global::ProtobufTestMessages.Proto3.ForeignEnum optionalForeignEnum_ = global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.ForeignEnum OptionalForeignEnum { - get { return optionalForeignEnum_; } - set { - optionalForeignEnum_ = value; - } - } - - /// Field number for the "optional_aliased_enum" field. - public const int OptionalAliasedEnumFieldNumber = 23; - private global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum optionalAliasedEnum_ = global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum.AliasFoo; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum OptionalAliasedEnum { - get { return optionalAliasedEnum_; } - set { - optionalAliasedEnum_ = value; - } - } - - /// Field number for the "optional_string_piece" field. - public const int OptionalStringPieceFieldNumber = 24; - private string optionalStringPiece_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OptionalStringPiece { - get { return optionalStringPiece_; } - set { - optionalStringPiece_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "optional_cord" field. - public const int OptionalCordFieldNumber = 25; - private string optionalCord_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OptionalCord { - get { return optionalCord_; } - set { - optionalCord_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "recursive_message" field. - public const int RecursiveMessageFieldNumber = 27; - private global::ProtobufTestMessages.Proto3.TestAllTypesProto3 recursiveMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3 RecursiveMessage { - get { return recursiveMessage_; } - set { - recursiveMessage_ = value; - } - } - - /// Field number for the "repeated_int32" field. - public const int RepeatedInt32FieldNumber = 31; - private static readonly pb::FieldCodec _repeated_repeatedInt32_codec - = pb::FieldCodec.ForInt32(250); - private readonly pbc::RepeatedField repeatedInt32_ = new pbc::RepeatedField(); - /// - /// Repeated - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt32 { - get { return repeatedInt32_; } - } - - /// Field number for the "repeated_int64" field. - public const int RepeatedInt64FieldNumber = 32; - private static readonly pb::FieldCodec _repeated_repeatedInt64_codec - = pb::FieldCodec.ForInt64(258); - private readonly pbc::RepeatedField repeatedInt64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt64 { - get { return repeatedInt64_; } - } - - /// Field number for the "repeated_uint32" field. - public const int RepeatedUint32FieldNumber = 33; - private static readonly pb::FieldCodec _repeated_repeatedUint32_codec - = pb::FieldCodec.ForUInt32(266); - private readonly pbc::RepeatedField repeatedUint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint32 { - get { return repeatedUint32_; } - } - - /// Field number for the "repeated_uint64" field. - public const int RepeatedUint64FieldNumber = 34; - private static readonly pb::FieldCodec _repeated_repeatedUint64_codec - = pb::FieldCodec.ForUInt64(274); - private readonly pbc::RepeatedField repeatedUint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint64 { - get { return repeatedUint64_; } - } - - /// Field number for the "repeated_sint32" field. - public const int RepeatedSint32FieldNumber = 35; - private static readonly pb::FieldCodec _repeated_repeatedSint32_codec - = pb::FieldCodec.ForSInt32(282); - private readonly pbc::RepeatedField repeatedSint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSint32 { - get { return repeatedSint32_; } - } - - /// Field number for the "repeated_sint64" field. - public const int RepeatedSint64FieldNumber = 36; - private static readonly pb::FieldCodec _repeated_repeatedSint64_codec - = pb::FieldCodec.ForSInt64(290); - private readonly pbc::RepeatedField repeatedSint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSint64 { - get { return repeatedSint64_; } - } - - /// Field number for the "repeated_fixed32" field. - public const int RepeatedFixed32FieldNumber = 37; - private static readonly pb::FieldCodec _repeated_repeatedFixed32_codec - = pb::FieldCodec.ForFixed32(298); - private readonly pbc::RepeatedField repeatedFixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed32 { - get { return repeatedFixed32_; } - } - - /// Field number for the "repeated_fixed64" field. - public const int RepeatedFixed64FieldNumber = 38; - private static readonly pb::FieldCodec _repeated_repeatedFixed64_codec - = pb::FieldCodec.ForFixed64(306); - private readonly pbc::RepeatedField repeatedFixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed64 { - get { return repeatedFixed64_; } - } - - /// Field number for the "repeated_sfixed32" field. - public const int RepeatedSfixed32FieldNumber = 39; - private static readonly pb::FieldCodec _repeated_repeatedSfixed32_codec - = pb::FieldCodec.ForSFixed32(314); - private readonly pbc::RepeatedField repeatedSfixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSfixed32 { - get { return repeatedSfixed32_; } - } - - /// Field number for the "repeated_sfixed64" field. - public const int RepeatedSfixed64FieldNumber = 40; - private static readonly pb::FieldCodec _repeated_repeatedSfixed64_codec - = pb::FieldCodec.ForSFixed64(322); - private readonly pbc::RepeatedField repeatedSfixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSfixed64 { - get { return repeatedSfixed64_; } - } - - /// Field number for the "repeated_float" field. - public const int RepeatedFloatFieldNumber = 41; - private static readonly pb::FieldCodec _repeated_repeatedFloat_codec - = pb::FieldCodec.ForFloat(330); - private readonly pbc::RepeatedField repeatedFloat_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFloat { - get { return repeatedFloat_; } - } - - /// Field number for the "repeated_double" field. - public const int RepeatedDoubleFieldNumber = 42; - private static readonly pb::FieldCodec _repeated_repeatedDouble_codec - = pb::FieldCodec.ForDouble(338); - private readonly pbc::RepeatedField repeatedDouble_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedDouble { - get { return repeatedDouble_; } - } - - /// Field number for the "repeated_bool" field. - public const int RepeatedBoolFieldNumber = 43; - private static readonly pb::FieldCodec _repeated_repeatedBool_codec - = pb::FieldCodec.ForBool(346); - private readonly pbc::RepeatedField repeatedBool_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBool { - get { return repeatedBool_; } - } - - /// Field number for the "repeated_string" field. - public const int RepeatedStringFieldNumber = 44; - private static readonly pb::FieldCodec _repeated_repeatedString_codec - = pb::FieldCodec.ForString(354); - private readonly pbc::RepeatedField repeatedString_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedString { - get { return repeatedString_; } - } - - /// Field number for the "repeated_bytes" field. - public const int RepeatedBytesFieldNumber = 45; - private static readonly pb::FieldCodec _repeated_repeatedBytes_codec - = pb::FieldCodec.ForBytes(362); - private readonly pbc::RepeatedField repeatedBytes_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBytes { - get { return repeatedBytes_; } - } - - /// Field number for the "repeated_nested_message" field. - public const int RepeatedNestedMessageFieldNumber = 48; - private static readonly pb::FieldCodec _repeated_repeatedNestedMessage_codec - = pb::FieldCodec.ForMessage(386, global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage.Parser); - private readonly pbc::RepeatedField repeatedNestedMessage_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedNestedMessage { - get { return repeatedNestedMessage_; } - } - - /// Field number for the "repeated_foreign_message" field. - public const int RepeatedForeignMessageFieldNumber = 49; - private static readonly pb::FieldCodec _repeated_repeatedForeignMessage_codec - = pb::FieldCodec.ForMessage(394, global::ProtobufTestMessages.Proto3.ForeignMessage.Parser); - private readonly pbc::RepeatedField repeatedForeignMessage_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedForeignMessage { - get { return repeatedForeignMessage_; } - } - - /// Field number for the "repeated_nested_enum" field. - public const int RepeatedNestedEnumFieldNumber = 51; - private static readonly pb::FieldCodec _repeated_repeatedNestedEnum_codec - = pb::FieldCodec.ForEnum(410, x => (int) x, x => (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) x); - private readonly pbc::RepeatedField repeatedNestedEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedNestedEnum { - get { return repeatedNestedEnum_; } - } - - /// Field number for the "repeated_foreign_enum" field. - public const int RepeatedForeignEnumFieldNumber = 52; - private static readonly pb::FieldCodec _repeated_repeatedForeignEnum_codec - = pb::FieldCodec.ForEnum(418, x => (int) x, x => (global::ProtobufTestMessages.Proto3.ForeignEnum) x); - private readonly pbc::RepeatedField repeatedForeignEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedForeignEnum { - get { return repeatedForeignEnum_; } - } - - /// Field number for the "repeated_string_piece" field. - public const int RepeatedStringPieceFieldNumber = 54; - private static readonly pb::FieldCodec _repeated_repeatedStringPiece_codec - = pb::FieldCodec.ForString(434); - private readonly pbc::RepeatedField repeatedStringPiece_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedStringPiece { - get { return repeatedStringPiece_; } - } - - /// Field number for the "repeated_cord" field. - public const int RepeatedCordFieldNumber = 55; - private static readonly pb::FieldCodec _repeated_repeatedCord_codec - = pb::FieldCodec.ForString(442); - private readonly pbc::RepeatedField repeatedCord_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedCord { - get { return repeatedCord_; } - } - - /// Field number for the "map_int32_int32" field. - public const int MapInt32Int32FieldNumber = 56; - private static readonly pbc::MapField.Codec _map_mapInt32Int32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForInt32(16, 0), 450); - private readonly pbc::MapField mapInt32Int32_ = new pbc::MapField(); - /// - /// Map - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Int32 { - get { return mapInt32Int32_; } - } - - /// Field number for the "map_int64_int64" field. - public const int MapInt64Int64FieldNumber = 57; - private static readonly pbc::MapField.Codec _map_mapInt64Int64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt64(8, 0L), pb::FieldCodec.ForInt64(16, 0L), 458); - private readonly pbc::MapField mapInt64Int64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt64Int64 { - get { return mapInt64Int64_; } - } - - /// Field number for the "map_uint32_uint32" field. - public const int MapUint32Uint32FieldNumber = 58; - private static readonly pbc::MapField.Codec _map_mapUint32Uint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt32(8, 0), pb::FieldCodec.ForUInt32(16, 0), 466); - private readonly pbc::MapField mapUint32Uint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint32Uint32 { - get { return mapUint32Uint32_; } - } - - /// Field number for the "map_uint64_uint64" field. - public const int MapUint64Uint64FieldNumber = 59; - private static readonly pbc::MapField.Codec _map_mapUint64Uint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForUInt64(8, 0UL), pb::FieldCodec.ForUInt64(16, 0UL), 474); - private readonly pbc::MapField mapUint64Uint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapUint64Uint64 { - get { return mapUint64Uint64_; } - } - - /// Field number for the "map_sint32_sint32" field. - public const int MapSint32Sint32FieldNumber = 60; - private static readonly pbc::MapField.Codec _map_mapSint32Sint32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt32(8, 0), pb::FieldCodec.ForSInt32(16, 0), 482); - private readonly pbc::MapField mapSint32Sint32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint32Sint32 { - get { return mapSint32Sint32_; } - } - - /// Field number for the "map_sint64_sint64" field. - public const int MapSint64Sint64FieldNumber = 61; - private static readonly pbc::MapField.Codec _map_mapSint64Sint64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSInt64(8, 0L), pb::FieldCodec.ForSInt64(16, 0L), 490); - private readonly pbc::MapField mapSint64Sint64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSint64Sint64 { - get { return mapSint64Sint64_; } - } - - /// Field number for the "map_fixed32_fixed32" field. - public const int MapFixed32Fixed32FieldNumber = 62; - private static readonly pbc::MapField.Codec _map_mapFixed32Fixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed32(13, 0), pb::FieldCodec.ForFixed32(21, 0), 498); - private readonly pbc::MapField mapFixed32Fixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed32Fixed32 { - get { return mapFixed32Fixed32_; } - } - - /// Field number for the "map_fixed64_fixed64" field. - public const int MapFixed64Fixed64FieldNumber = 63; - private static readonly pbc::MapField.Codec _map_mapFixed64Fixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForFixed64(9, 0UL), pb::FieldCodec.ForFixed64(17, 0UL), 506); - private readonly pbc::MapField mapFixed64Fixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapFixed64Fixed64 { - get { return mapFixed64Fixed64_; } - } - - /// Field number for the "map_sfixed32_sfixed32" field. - public const int MapSfixed32Sfixed32FieldNumber = 64; - private static readonly pbc::MapField.Codec _map_mapSfixed32Sfixed32_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed32(13, 0), pb::FieldCodec.ForSFixed32(21, 0), 514); - private readonly pbc::MapField mapSfixed32Sfixed32_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed32Sfixed32 { - get { return mapSfixed32Sfixed32_; } - } - - /// Field number for the "map_sfixed64_sfixed64" field. - public const int MapSfixed64Sfixed64FieldNumber = 65; - private static readonly pbc::MapField.Codec _map_mapSfixed64Sfixed64_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForSFixed64(9, 0L), pb::FieldCodec.ForSFixed64(17, 0L), 522); - private readonly pbc::MapField mapSfixed64Sfixed64_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapSfixed64Sfixed64 { - get { return mapSfixed64Sfixed64_; } - } - - /// Field number for the "map_int32_float" field. - public const int MapInt32FloatFieldNumber = 66; - private static readonly pbc::MapField.Codec _map_mapInt32Float_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForFloat(21, 0F), 530); - private readonly pbc::MapField mapInt32Float_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Float { - get { return mapInt32Float_; } - } - - /// Field number for the "map_int32_double" field. - public const int MapInt32DoubleFieldNumber = 67; - private static readonly pbc::MapField.Codec _map_mapInt32Double_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForDouble(17, 0D), 538); - private readonly pbc::MapField mapInt32Double_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapInt32Double { - get { return mapInt32Double_; } - } - - /// Field number for the "map_bool_bool" field. - public const int MapBoolBoolFieldNumber = 68; - private static readonly pbc::MapField.Codec _map_mapBoolBool_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForBool(8, false), pb::FieldCodec.ForBool(16, false), 546); - private readonly pbc::MapField mapBoolBool_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapBoolBool { - get { return mapBoolBool_; } - } - - /// Field number for the "map_string_string" field. - public const int MapStringStringFieldNumber = 69; - private static readonly pbc::MapField.Codec _map_mapStringString_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForString(18, ""), 554); - private readonly pbc::MapField mapStringString_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringString { - get { return mapStringString_; } - } - - /// Field number for the "map_string_bytes" field. - public const int MapStringBytesFieldNumber = 70; - private static readonly pbc::MapField.Codec _map_mapStringBytes_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForBytes(18, pb::ByteString.Empty), 562); - private readonly pbc::MapField mapStringBytes_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringBytes { - get { return mapStringBytes_; } - } - - /// Field number for the "map_string_nested_message" field. - public const int MapStringNestedMessageFieldNumber = 71; - private static readonly pbc::MapField.Codec _map_mapStringNestedMessage_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage.Parser), 570); - private readonly pbc::MapField mapStringNestedMessage_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringNestedMessage { - get { return mapStringNestedMessage_; } - } - - /// Field number for the "map_string_foreign_message" field. - public const int MapStringForeignMessageFieldNumber = 72; - private static readonly pbc::MapField.Codec _map_mapStringForeignMessage_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::ProtobufTestMessages.Proto3.ForeignMessage.Parser), 578); - private readonly pbc::MapField mapStringForeignMessage_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringForeignMessage { - get { return mapStringForeignMessage_; } - } - - /// Field number for the "map_string_nested_enum" field. - public const int MapStringNestedEnumFieldNumber = 73; - private static readonly pbc::MapField.Codec _map_mapStringNestedEnum_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) x, global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo), 586); - private readonly pbc::MapField mapStringNestedEnum_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringNestedEnum { - get { return mapStringNestedEnum_; } - } - - /// Field number for the "map_string_foreign_enum" field. - public const int MapStringForeignEnumFieldNumber = 74; - private static readonly pbc::MapField.Codec _map_mapStringForeignEnum_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::ProtobufTestMessages.Proto3.ForeignEnum) x, global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo), 594); - private readonly pbc::MapField mapStringForeignEnum_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField MapStringForeignEnum { - get { return mapStringForeignEnum_; } - } - - /// Field number for the "oneof_uint32" field. - public const int OneofUint32FieldNumber = 111; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint OneofUint32 { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; - } - } - - /// Field number for the "oneof_nested_message" field. - public const int OneofNestedMessageFieldNumber = 112; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage OneofNestedMessage { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.OneofNestedMessage; - } - } - - /// Field number for the "oneof_string" field. - public const int OneofStringFieldNumber = 113; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OneofString { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } - set { - oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - oneofFieldCase_ = OneofFieldOneofCase.OneofString; - } - } - - /// Field number for the "oneof_bytes" field. - public const int OneofBytesFieldNumber = 114; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString OneofBytes { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; } - set { - oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; - } - } - - /// Field number for the "oneof_bool" field. - public const int OneofBoolFieldNumber = 115; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool OneofBool { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBool ? (bool) oneofField_ : false; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofBool; - } - } - - /// Field number for the "oneof_uint64" field. - public const int OneofUint64FieldNumber = 116; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong OneofUint64 { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint64 ? (ulong) oneofField_ : 0UL; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofUint64; - } - } - - /// Field number for the "oneof_float" field. - public const int OneofFloatFieldNumber = 117; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float OneofFloat { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofFloat ? (float) oneofField_ : 0F; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofFloat; - } - } - - /// Field number for the "oneof_double" field. - public const int OneofDoubleFieldNumber = 118; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double OneofDouble { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofDouble ? (double) oneofField_ : 0D; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofDouble; - } - } - - /// Field number for the "oneof_enum" field. - public const int OneofEnumFieldNumber = 119; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum OneofEnum { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofEnum ? (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) oneofField_ : global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofEnum; - } - } - - /// Field number for the "optional_bool_wrapper" field. - public const int OptionalBoolWrapperFieldNumber = 201; - private static readonly pb::FieldCodec _single_optionalBoolWrapper_codec = pb::FieldCodec.ForStructWrapper(1610); - private bool? optionalBoolWrapper_; - /// - /// Well-known types - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool? OptionalBoolWrapper { - get { return optionalBoolWrapper_; } - set { - optionalBoolWrapper_ = value; - } - } - - - /// Field number for the "optional_int32_wrapper" field. - public const int OptionalInt32WrapperFieldNumber = 202; - private static readonly pb::FieldCodec _single_optionalInt32Wrapper_codec = pb::FieldCodec.ForStructWrapper(1618); - private int? optionalInt32Wrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int? OptionalInt32Wrapper { - get { return optionalInt32Wrapper_; } - set { - optionalInt32Wrapper_ = value; - } - } - - - /// Field number for the "optional_int64_wrapper" field. - public const int OptionalInt64WrapperFieldNumber = 203; - private static readonly pb::FieldCodec _single_optionalInt64Wrapper_codec = pb::FieldCodec.ForStructWrapper(1626); - private long? optionalInt64Wrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long? OptionalInt64Wrapper { - get { return optionalInt64Wrapper_; } - set { - optionalInt64Wrapper_ = value; - } - } - - - /// Field number for the "optional_uint32_wrapper" field. - public const int OptionalUint32WrapperFieldNumber = 204; - private static readonly pb::FieldCodec _single_optionalUint32Wrapper_codec = pb::FieldCodec.ForStructWrapper(1634); - private uint? optionalUint32Wrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint? OptionalUint32Wrapper { - get { return optionalUint32Wrapper_; } - set { - optionalUint32Wrapper_ = value; - } - } - - - /// Field number for the "optional_uint64_wrapper" field. - public const int OptionalUint64WrapperFieldNumber = 205; - private static readonly pb::FieldCodec _single_optionalUint64Wrapper_codec = pb::FieldCodec.ForStructWrapper(1642); - private ulong? optionalUint64Wrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong? OptionalUint64Wrapper { - get { return optionalUint64Wrapper_; } - set { - optionalUint64Wrapper_ = value; - } - } - - - /// Field number for the "optional_float_wrapper" field. - public const int OptionalFloatWrapperFieldNumber = 206; - private static readonly pb::FieldCodec _single_optionalFloatWrapper_codec = pb::FieldCodec.ForStructWrapper(1650); - private float? optionalFloatWrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float? OptionalFloatWrapper { - get { return optionalFloatWrapper_; } - set { - optionalFloatWrapper_ = value; - } - } - - - /// Field number for the "optional_double_wrapper" field. - public const int OptionalDoubleWrapperFieldNumber = 207; - private static readonly pb::FieldCodec _single_optionalDoubleWrapper_codec = pb::FieldCodec.ForStructWrapper(1658); - private double? optionalDoubleWrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double? OptionalDoubleWrapper { - get { return optionalDoubleWrapper_; } - set { - optionalDoubleWrapper_ = value; - } - } - - - /// Field number for the "optional_string_wrapper" field. - public const int OptionalStringWrapperFieldNumber = 208; - private static readonly pb::FieldCodec _single_optionalStringWrapper_codec = pb::FieldCodec.ForClassWrapper(1666); - private string optionalStringWrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OptionalStringWrapper { - get { return optionalStringWrapper_; } - set { - optionalStringWrapper_ = value; - } - } - - - /// Field number for the "optional_bytes_wrapper" field. - public const int OptionalBytesWrapperFieldNumber = 209; - private static readonly pb::FieldCodec _single_optionalBytesWrapper_codec = pb::FieldCodec.ForClassWrapper(1674); - private pb::ByteString optionalBytesWrapper_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString OptionalBytesWrapper { - get { return optionalBytesWrapper_; } - set { - optionalBytesWrapper_ = value; - } - } - - - /// Field number for the "repeated_bool_wrapper" field. - public const int RepeatedBoolWrapperFieldNumber = 211; - private static readonly pb::FieldCodec _repeated_repeatedBoolWrapper_codec - = pb::FieldCodec.ForStructWrapper(1690); - private readonly pbc::RepeatedField repeatedBoolWrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBoolWrapper { - get { return repeatedBoolWrapper_; } - } - - /// Field number for the "repeated_int32_wrapper" field. - public const int RepeatedInt32WrapperFieldNumber = 212; - private static readonly pb::FieldCodec _repeated_repeatedInt32Wrapper_codec - = pb::FieldCodec.ForStructWrapper(1698); - private readonly pbc::RepeatedField repeatedInt32Wrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt32Wrapper { - get { return repeatedInt32Wrapper_; } - } - - /// Field number for the "repeated_int64_wrapper" field. - public const int RepeatedInt64WrapperFieldNumber = 213; - private static readonly pb::FieldCodec _repeated_repeatedInt64Wrapper_codec - = pb::FieldCodec.ForStructWrapper(1706); - private readonly pbc::RepeatedField repeatedInt64Wrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt64Wrapper { - get { return repeatedInt64Wrapper_; } - } - - /// Field number for the "repeated_uint32_wrapper" field. - public const int RepeatedUint32WrapperFieldNumber = 214; - private static readonly pb::FieldCodec _repeated_repeatedUint32Wrapper_codec - = pb::FieldCodec.ForStructWrapper(1714); - private readonly pbc::RepeatedField repeatedUint32Wrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint32Wrapper { - get { return repeatedUint32Wrapper_; } - } - - /// Field number for the "repeated_uint64_wrapper" field. - public const int RepeatedUint64WrapperFieldNumber = 215; - private static readonly pb::FieldCodec _repeated_repeatedUint64Wrapper_codec - = pb::FieldCodec.ForStructWrapper(1722); - private readonly pbc::RepeatedField repeatedUint64Wrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint64Wrapper { - get { return repeatedUint64Wrapper_; } - } - - /// Field number for the "repeated_float_wrapper" field. - public const int RepeatedFloatWrapperFieldNumber = 216; - private static readonly pb::FieldCodec _repeated_repeatedFloatWrapper_codec - = pb::FieldCodec.ForStructWrapper(1730); - private readonly pbc::RepeatedField repeatedFloatWrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFloatWrapper { - get { return repeatedFloatWrapper_; } - } - - /// Field number for the "repeated_double_wrapper" field. - public const int RepeatedDoubleWrapperFieldNumber = 217; - private static readonly pb::FieldCodec _repeated_repeatedDoubleWrapper_codec - = pb::FieldCodec.ForStructWrapper(1738); - private readonly pbc::RepeatedField repeatedDoubleWrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedDoubleWrapper { - get { return repeatedDoubleWrapper_; } - } - - /// Field number for the "repeated_string_wrapper" field. - public const int RepeatedStringWrapperFieldNumber = 218; - private static readonly pb::FieldCodec _repeated_repeatedStringWrapper_codec - = pb::FieldCodec.ForClassWrapper(1746); - private readonly pbc::RepeatedField repeatedStringWrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedStringWrapper { - get { return repeatedStringWrapper_; } - } - - /// Field number for the "repeated_bytes_wrapper" field. - public const int RepeatedBytesWrapperFieldNumber = 219; - private static readonly pb::FieldCodec _repeated_repeatedBytesWrapper_codec - = pb::FieldCodec.ForClassWrapper(1754); - private readonly pbc::RepeatedField repeatedBytesWrapper_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBytesWrapper { - get { return repeatedBytesWrapper_; } - } - - /// Field number for the "optional_duration" field. - public const int OptionalDurationFieldNumber = 301; - private global::Google.Protobuf.WellKnownTypes.Duration optionalDuration_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Duration OptionalDuration { - get { return optionalDuration_; } - set { - optionalDuration_ = value; - } - } - - /// Field number for the "optional_timestamp" field. - public const int OptionalTimestampFieldNumber = 302; - private global::Google.Protobuf.WellKnownTypes.Timestamp optionalTimestamp_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Timestamp OptionalTimestamp { - get { return optionalTimestamp_; } - set { - optionalTimestamp_ = value; - } - } - - /// Field number for the "optional_field_mask" field. - public const int OptionalFieldMaskFieldNumber = 303; - private global::Google.Protobuf.WellKnownTypes.FieldMask optionalFieldMask_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.FieldMask OptionalFieldMask { - get { return optionalFieldMask_; } - set { - optionalFieldMask_ = value; - } - } - - /// Field number for the "optional_struct" field. - public const int OptionalStructFieldNumber = 304; - private global::Google.Protobuf.WellKnownTypes.Struct optionalStruct_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Struct OptionalStruct { - get { return optionalStruct_; } - set { - optionalStruct_ = value; - } - } - - /// Field number for the "optional_any" field. - public const int OptionalAnyFieldNumber = 305; - private global::Google.Protobuf.WellKnownTypes.Any optionalAny_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Any OptionalAny { - get { return optionalAny_; } - set { - optionalAny_ = value; - } - } - - /// Field number for the "optional_value" field. - public const int OptionalValueFieldNumber = 306; - private global::Google.Protobuf.WellKnownTypes.Value optionalValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Value OptionalValue { - get { return optionalValue_; } - set { - optionalValue_ = value; - } - } - - /// Field number for the "repeated_duration" field. - public const int RepeatedDurationFieldNumber = 311; - private static readonly pb::FieldCodec _repeated_repeatedDuration_codec - = pb::FieldCodec.ForMessage(2490, global::Google.Protobuf.WellKnownTypes.Duration.Parser); - private readonly pbc::RepeatedField repeatedDuration_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedDuration { - get { return repeatedDuration_; } - } - - /// Field number for the "repeated_timestamp" field. - public const int RepeatedTimestampFieldNumber = 312; - private static readonly pb::FieldCodec _repeated_repeatedTimestamp_codec - = pb::FieldCodec.ForMessage(2498, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser); - private readonly pbc::RepeatedField repeatedTimestamp_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedTimestamp { - get { return repeatedTimestamp_; } - } - - /// Field number for the "repeated_fieldmask" field. - public const int RepeatedFieldmaskFieldNumber = 313; - private static readonly pb::FieldCodec _repeated_repeatedFieldmask_codec - = pb::FieldCodec.ForMessage(2506, global::Google.Protobuf.WellKnownTypes.FieldMask.Parser); - private readonly pbc::RepeatedField repeatedFieldmask_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFieldmask { - get { return repeatedFieldmask_; } - } - - /// Field number for the "repeated_struct" field. - public const int RepeatedStructFieldNumber = 324; - private static readonly pb::FieldCodec _repeated_repeatedStruct_codec - = pb::FieldCodec.ForMessage(2594, global::Google.Protobuf.WellKnownTypes.Struct.Parser); - private readonly pbc::RepeatedField repeatedStruct_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedStruct { - get { return repeatedStruct_; } - } - - /// Field number for the "repeated_any" field. - public const int RepeatedAnyFieldNumber = 315; - private static readonly pb::FieldCodec _repeated_repeatedAny_codec - = pb::FieldCodec.ForMessage(2522, global::Google.Protobuf.WellKnownTypes.Any.Parser); - private readonly pbc::RepeatedField repeatedAny_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedAny { - get { return repeatedAny_; } - } - - /// Field number for the "repeated_value" field. - public const int RepeatedValueFieldNumber = 316; - private static readonly pb::FieldCodec _repeated_repeatedValue_codec - = pb::FieldCodec.ForMessage(2530, global::Google.Protobuf.WellKnownTypes.Value.Parser); - private readonly pbc::RepeatedField repeatedValue_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedValue { - get { return repeatedValue_; } - } - - /// Field number for the "repeated_list_value" field. - public const int RepeatedListValueFieldNumber = 317; - private static readonly pb::FieldCodec _repeated_repeatedListValue_codec - = pb::FieldCodec.ForMessage(2538, global::Google.Protobuf.WellKnownTypes.ListValue.Parser); - private readonly pbc::RepeatedField repeatedListValue_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedListValue { - get { return repeatedListValue_; } - } - - /// Field number for the "fieldname1" field. - public const int Fieldname1FieldNumber = 401; - private int fieldname1_; - /// - /// Test field-name-to-JSON-name convention. - /// (protobuf says names can be any valid C/C++ identifier.) - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Fieldname1 { - get { return fieldname1_; } - set { - fieldname1_ = value; - } - } - - /// Field number for the "field_name2" field. - public const int FieldName2FieldNumber = 402; - private int fieldName2_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName2 { - get { return fieldName2_; } - set { - fieldName2_ = value; - } - } - - /// Field number for the "_field_name3" field. - public const int FieldName3FieldNumber = 403; - private int FieldName3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName3 { - get { return FieldName3_; } - set { - FieldName3_ = value; - } - } - - /// Field number for the "field__name4_" field. - public const int FieldName4FieldNumber = 404; - private int fieldName4_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName4 { - get { return fieldName4_; } - set { - fieldName4_ = value; - } - } - - /// Field number for the "field0name5" field. - public const int Field0Name5FieldNumber = 405; - private int field0Name5_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field0Name5 { - get { return field0Name5_; } - set { - field0Name5_ = value; - } - } - - /// Field number for the "field_0_name6" field. - public const int Field0Name6FieldNumber = 406; - private int field0Name6_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Field0Name6 { - get { return field0Name6_; } - set { - field0Name6_ = value; - } - } - - /// Field number for the "fieldName7" field. - public const int FieldName7FieldNumber = 407; - private int fieldName7_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName7 { - get { return fieldName7_; } - set { - fieldName7_ = value; - } - } - - /// Field number for the "FieldName8" field. - public const int FieldName8FieldNumber = 408; - private int fieldName8_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName8 { - get { return fieldName8_; } - set { - fieldName8_ = value; - } - } - - /// Field number for the "field_Name9" field. - public const int FieldName9FieldNumber = 409; - private int fieldName9_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName9 { - get { return fieldName9_; } - set { - fieldName9_ = value; - } - } - - /// Field number for the "Field_Name10" field. - public const int FieldName10FieldNumber = 410; - private int fieldName10_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName10 { - get { return fieldName10_; } - set { - fieldName10_ = value; - } - } - - /// Field number for the "FIELD_NAME11" field. - public const int FIELDNAME11FieldNumber = 411; - private int fIELDNAME11_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FIELDNAME11 { - get { return fIELDNAME11_; } - set { - fIELDNAME11_ = value; - } - } - - /// Field number for the "FIELD_name12" field. - public const int FIELDName12FieldNumber = 412; - private int fIELDName12_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FIELDName12 { - get { return fIELDName12_; } - set { - fIELDName12_ = value; - } - } - - /// Field number for the "__field_name13" field. - public const int FieldName13FieldNumber = 413; - private int FieldName13_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName13 { - get { return FieldName13_; } - set { - FieldName13_ = value; - } - } - - /// Field number for the "__Field_name14" field. - public const int FieldName14FieldNumber = 414; - private int FieldName14_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName14 { - get { return FieldName14_; } - set { - FieldName14_ = value; - } - } - - /// Field number for the "field__name15" field. - public const int FieldName15FieldNumber = 415; - private int fieldName15_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName15 { - get { return fieldName15_; } - set { - fieldName15_ = value; - } - } - - /// Field number for the "field__Name16" field. - public const int FieldName16FieldNumber = 416; - private int fieldName16_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName16 { - get { return fieldName16_; } - set { - fieldName16_ = value; - } - } - - /// Field number for the "field_name17__" field. - public const int FieldName17FieldNumber = 417; - private int fieldName17_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName17 { - get { return fieldName17_; } - set { - fieldName17_ = value; - } - } - - /// Field number for the "Field_name18__" field. - public const int FieldName18FieldNumber = 418; - private int fieldName18_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FieldName18 { - get { return fieldName18_; } - set { - fieldName18_ = value; - } - } - - private object oneofField_; - /// Enum of possible cases for the "oneof_field" oneof. - public enum OneofFieldOneofCase { - None = 0, - OneofUint32 = 111, - OneofNestedMessage = 112, - OneofString = 113, - OneofBytes = 114, - OneofBool = 115, - OneofUint64 = 116, - OneofFloat = 117, - OneofDouble = 118, - OneofEnum = 119, - } - private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofFieldOneofCase OneofFieldCase { - get { return oneofFieldCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOneofField() { - oneofFieldCase_ = OneofFieldOneofCase.None; - oneofField_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestAllTypesProto3); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestAllTypesProto3 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (OptionalInt32 != other.OptionalInt32) return false; - if (OptionalInt64 != other.OptionalInt64) return false; - if (OptionalUint32 != other.OptionalUint32) return false; - if (OptionalUint64 != other.OptionalUint64) return false; - if (OptionalSint32 != other.OptionalSint32) return false; - if (OptionalSint64 != other.OptionalSint64) return false; - if (OptionalFixed32 != other.OptionalFixed32) return false; - if (OptionalFixed64 != other.OptionalFixed64) return false; - if (OptionalSfixed32 != other.OptionalSfixed32) return false; - if (OptionalSfixed64 != other.OptionalSfixed64) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(OptionalFloat, other.OptionalFloat)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(OptionalDouble, other.OptionalDouble)) return false; - if (OptionalBool != other.OptionalBool) return false; - if (OptionalString != other.OptionalString) return false; - if (OptionalBytes != other.OptionalBytes) return false; - if (!object.Equals(OptionalNestedMessage, other.OptionalNestedMessage)) return false; - if (!object.Equals(OptionalForeignMessage, other.OptionalForeignMessage)) return false; - if (OptionalNestedEnum != other.OptionalNestedEnum) return false; - if (OptionalForeignEnum != other.OptionalForeignEnum) return false; - if (OptionalAliasedEnum != other.OptionalAliasedEnum) return false; - if (OptionalStringPiece != other.OptionalStringPiece) return false; - if (OptionalCord != other.OptionalCord) return false; - if (!object.Equals(RecursiveMessage, other.RecursiveMessage)) return false; - if(!repeatedInt32_.Equals(other.repeatedInt32_)) return false; - if(!repeatedInt64_.Equals(other.repeatedInt64_)) return false; - if(!repeatedUint32_.Equals(other.repeatedUint32_)) return false; - if(!repeatedUint64_.Equals(other.repeatedUint64_)) return false; - if(!repeatedSint32_.Equals(other.repeatedSint32_)) return false; - if(!repeatedSint64_.Equals(other.repeatedSint64_)) return false; - if(!repeatedFixed32_.Equals(other.repeatedFixed32_)) return false; - if(!repeatedFixed64_.Equals(other.repeatedFixed64_)) return false; - if(!repeatedSfixed32_.Equals(other.repeatedSfixed32_)) return false; - if(!repeatedSfixed64_.Equals(other.repeatedSfixed64_)) return false; - if(!repeatedFloat_.Equals(other.repeatedFloat_)) return false; - if(!repeatedDouble_.Equals(other.repeatedDouble_)) return false; - if(!repeatedBool_.Equals(other.repeatedBool_)) return false; - if(!repeatedString_.Equals(other.repeatedString_)) return false; - if(!repeatedBytes_.Equals(other.repeatedBytes_)) return false; - if(!repeatedNestedMessage_.Equals(other.repeatedNestedMessage_)) return false; - if(!repeatedForeignMessage_.Equals(other.repeatedForeignMessage_)) return false; - if(!repeatedNestedEnum_.Equals(other.repeatedNestedEnum_)) return false; - if(!repeatedForeignEnum_.Equals(other.repeatedForeignEnum_)) return false; - if(!repeatedStringPiece_.Equals(other.repeatedStringPiece_)) return false; - if(!repeatedCord_.Equals(other.repeatedCord_)) return false; - if (!MapInt32Int32.Equals(other.MapInt32Int32)) return false; - if (!MapInt64Int64.Equals(other.MapInt64Int64)) return false; - if (!MapUint32Uint32.Equals(other.MapUint32Uint32)) return false; - if (!MapUint64Uint64.Equals(other.MapUint64Uint64)) return false; - if (!MapSint32Sint32.Equals(other.MapSint32Sint32)) return false; - if (!MapSint64Sint64.Equals(other.MapSint64Sint64)) return false; - if (!MapFixed32Fixed32.Equals(other.MapFixed32Fixed32)) return false; - if (!MapFixed64Fixed64.Equals(other.MapFixed64Fixed64)) return false; - if (!MapSfixed32Sfixed32.Equals(other.MapSfixed32Sfixed32)) return false; - if (!MapSfixed64Sfixed64.Equals(other.MapSfixed64Sfixed64)) return false; - if (!MapInt32Float.Equals(other.MapInt32Float)) return false; - if (!MapInt32Double.Equals(other.MapInt32Double)) return false; - if (!MapBoolBool.Equals(other.MapBoolBool)) return false; - if (!MapStringString.Equals(other.MapStringString)) return false; - if (!MapStringBytes.Equals(other.MapStringBytes)) return false; - if (!MapStringNestedMessage.Equals(other.MapStringNestedMessage)) return false; - if (!MapStringForeignMessage.Equals(other.MapStringForeignMessage)) return false; - if (!MapStringNestedEnum.Equals(other.MapStringNestedEnum)) return false; - if (!MapStringForeignEnum.Equals(other.MapStringForeignEnum)) return false; - if (OneofUint32 != other.OneofUint32) return false; - if (!object.Equals(OneofNestedMessage, other.OneofNestedMessage)) return false; - if (OneofString != other.OneofString) return false; - if (OneofBytes != other.OneofBytes) return false; - if (OneofBool != other.OneofBool) return false; - if (OneofUint64 != other.OneofUint64) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(OneofFloat, other.OneofFloat)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(OneofDouble, other.OneofDouble)) return false; - if (OneofEnum != other.OneofEnum) return false; - if (OptionalBoolWrapper != other.OptionalBoolWrapper) return false; - if (OptionalInt32Wrapper != other.OptionalInt32Wrapper) return false; - if (OptionalInt64Wrapper != other.OptionalInt64Wrapper) return false; - if (OptionalUint32Wrapper != other.OptionalUint32Wrapper) return false; - if (OptionalUint64Wrapper != other.OptionalUint64Wrapper) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(OptionalFloatWrapper, other.OptionalFloatWrapper)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(OptionalDoubleWrapper, other.OptionalDoubleWrapper)) return false; - if (OptionalStringWrapper != other.OptionalStringWrapper) return false; - if (OptionalBytesWrapper != other.OptionalBytesWrapper) return false; - if(!repeatedBoolWrapper_.Equals(other.repeatedBoolWrapper_)) return false; - if(!repeatedInt32Wrapper_.Equals(other.repeatedInt32Wrapper_)) return false; - if(!repeatedInt64Wrapper_.Equals(other.repeatedInt64Wrapper_)) return false; - if(!repeatedUint32Wrapper_.Equals(other.repeatedUint32Wrapper_)) return false; - if(!repeatedUint64Wrapper_.Equals(other.repeatedUint64Wrapper_)) return false; - if(!repeatedFloatWrapper_.Equals(other.repeatedFloatWrapper_)) return false; - if(!repeatedDoubleWrapper_.Equals(other.repeatedDoubleWrapper_)) return false; - if(!repeatedStringWrapper_.Equals(other.repeatedStringWrapper_)) return false; - if(!repeatedBytesWrapper_.Equals(other.repeatedBytesWrapper_)) return false; - if (!object.Equals(OptionalDuration, other.OptionalDuration)) return false; - if (!object.Equals(OptionalTimestamp, other.OptionalTimestamp)) return false; - if (!object.Equals(OptionalFieldMask, other.OptionalFieldMask)) return false; - if (!object.Equals(OptionalStruct, other.OptionalStruct)) return false; - if (!object.Equals(OptionalAny, other.OptionalAny)) return false; - if (!object.Equals(OptionalValue, other.OptionalValue)) return false; - if(!repeatedDuration_.Equals(other.repeatedDuration_)) return false; - if(!repeatedTimestamp_.Equals(other.repeatedTimestamp_)) return false; - if(!repeatedFieldmask_.Equals(other.repeatedFieldmask_)) return false; - if(!repeatedStruct_.Equals(other.repeatedStruct_)) return false; - if(!repeatedAny_.Equals(other.repeatedAny_)) return false; - if(!repeatedValue_.Equals(other.repeatedValue_)) return false; - if(!repeatedListValue_.Equals(other.repeatedListValue_)) return false; - if (Fieldname1 != other.Fieldname1) return false; - if (FieldName2 != other.FieldName2) return false; - if (FieldName3 != other.FieldName3) return false; - if (FieldName4 != other.FieldName4) return false; - if (Field0Name5 != other.Field0Name5) return false; - if (Field0Name6 != other.Field0Name6) return false; - if (FieldName7 != other.FieldName7) return false; - if (FieldName8 != other.FieldName8) return false; - if (FieldName9 != other.FieldName9) return false; - if (FieldName10 != other.FieldName10) return false; - if (FIELDNAME11 != other.FIELDNAME11) return false; - if (FIELDName12 != other.FIELDName12) return false; - if (FieldName13 != other.FieldName13) return false; - if (FieldName14 != other.FieldName14) return false; - if (FieldName15 != other.FieldName15) return false; - if (FieldName16 != other.FieldName16) return false; - if (FieldName17 != other.FieldName17) return false; - if (FieldName18 != other.FieldName18) return false; - if (OneofFieldCase != other.OneofFieldCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (OptionalInt32 != 0) hash ^= OptionalInt32.GetHashCode(); - if (OptionalInt64 != 0L) hash ^= OptionalInt64.GetHashCode(); - if (OptionalUint32 != 0) hash ^= OptionalUint32.GetHashCode(); - if (OptionalUint64 != 0UL) hash ^= OptionalUint64.GetHashCode(); - if (OptionalSint32 != 0) hash ^= OptionalSint32.GetHashCode(); - if (OptionalSint64 != 0L) hash ^= OptionalSint64.GetHashCode(); - if (OptionalFixed32 != 0) hash ^= OptionalFixed32.GetHashCode(); - if (OptionalFixed64 != 0UL) hash ^= OptionalFixed64.GetHashCode(); - if (OptionalSfixed32 != 0) hash ^= OptionalSfixed32.GetHashCode(); - if (OptionalSfixed64 != 0L) hash ^= OptionalSfixed64.GetHashCode(); - if (OptionalFloat != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(OptionalFloat); - if (OptionalDouble != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(OptionalDouble); - if (OptionalBool != false) hash ^= OptionalBool.GetHashCode(); - if (OptionalString.Length != 0) hash ^= OptionalString.GetHashCode(); - if (OptionalBytes.Length != 0) hash ^= OptionalBytes.GetHashCode(); - if (optionalNestedMessage_ != null) hash ^= OptionalNestedMessage.GetHashCode(); - if (optionalForeignMessage_ != null) hash ^= OptionalForeignMessage.GetHashCode(); - if (OptionalNestedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo) hash ^= OptionalNestedEnum.GetHashCode(); - if (OptionalForeignEnum != global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo) hash ^= OptionalForeignEnum.GetHashCode(); - if (OptionalAliasedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum.AliasFoo) hash ^= OptionalAliasedEnum.GetHashCode(); - if (OptionalStringPiece.Length != 0) hash ^= OptionalStringPiece.GetHashCode(); - if (OptionalCord.Length != 0) hash ^= OptionalCord.GetHashCode(); - if (recursiveMessage_ != null) hash ^= RecursiveMessage.GetHashCode(); - hash ^= repeatedInt32_.GetHashCode(); - hash ^= repeatedInt64_.GetHashCode(); - hash ^= repeatedUint32_.GetHashCode(); - hash ^= repeatedUint64_.GetHashCode(); - hash ^= repeatedSint32_.GetHashCode(); - hash ^= repeatedSint64_.GetHashCode(); - hash ^= repeatedFixed32_.GetHashCode(); - hash ^= repeatedFixed64_.GetHashCode(); - hash ^= repeatedSfixed32_.GetHashCode(); - hash ^= repeatedSfixed64_.GetHashCode(); - hash ^= repeatedFloat_.GetHashCode(); - hash ^= repeatedDouble_.GetHashCode(); - hash ^= repeatedBool_.GetHashCode(); - hash ^= repeatedString_.GetHashCode(); - hash ^= repeatedBytes_.GetHashCode(); - hash ^= repeatedNestedMessage_.GetHashCode(); - hash ^= repeatedForeignMessage_.GetHashCode(); - hash ^= repeatedNestedEnum_.GetHashCode(); - hash ^= repeatedForeignEnum_.GetHashCode(); - hash ^= repeatedStringPiece_.GetHashCode(); - hash ^= repeatedCord_.GetHashCode(); - hash ^= MapInt32Int32.GetHashCode(); - hash ^= MapInt64Int64.GetHashCode(); - hash ^= MapUint32Uint32.GetHashCode(); - hash ^= MapUint64Uint64.GetHashCode(); - hash ^= MapSint32Sint32.GetHashCode(); - hash ^= MapSint64Sint64.GetHashCode(); - hash ^= MapFixed32Fixed32.GetHashCode(); - hash ^= MapFixed64Fixed64.GetHashCode(); - hash ^= MapSfixed32Sfixed32.GetHashCode(); - hash ^= MapSfixed64Sfixed64.GetHashCode(); - hash ^= MapInt32Float.GetHashCode(); - hash ^= MapInt32Double.GetHashCode(); - hash ^= MapBoolBool.GetHashCode(); - hash ^= MapStringString.GetHashCode(); - hash ^= MapStringBytes.GetHashCode(); - hash ^= MapStringNestedMessage.GetHashCode(); - hash ^= MapStringForeignMessage.GetHashCode(); - hash ^= MapStringNestedEnum.GetHashCode(); - hash ^= MapStringForeignEnum.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) hash ^= OneofUint32.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) hash ^= OneofNestedMessage.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) hash ^= OneofString.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) hash ^= OneofBytes.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBool) hash ^= OneofBool.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint64) hash ^= OneofUint64.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofFloat) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(OneofFloat); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofDouble) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(OneofDouble); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) hash ^= OneofEnum.GetHashCode(); - if (optionalBoolWrapper_ != null) hash ^= OptionalBoolWrapper.GetHashCode(); - if (optionalInt32Wrapper_ != null) hash ^= OptionalInt32Wrapper.GetHashCode(); - if (optionalInt64Wrapper_ != null) hash ^= OptionalInt64Wrapper.GetHashCode(); - if (optionalUint32Wrapper_ != null) hash ^= OptionalUint32Wrapper.GetHashCode(); - if (optionalUint64Wrapper_ != null) hash ^= OptionalUint64Wrapper.GetHashCode(); - if (optionalFloatWrapper_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(OptionalFloatWrapper); - if (optionalDoubleWrapper_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(OptionalDoubleWrapper); - if (optionalStringWrapper_ != null) hash ^= OptionalStringWrapper.GetHashCode(); - if (optionalBytesWrapper_ != null) hash ^= OptionalBytesWrapper.GetHashCode(); - hash ^= repeatedBoolWrapper_.GetHashCode(); - hash ^= repeatedInt32Wrapper_.GetHashCode(); - hash ^= repeatedInt64Wrapper_.GetHashCode(); - hash ^= repeatedUint32Wrapper_.GetHashCode(); - hash ^= repeatedUint64Wrapper_.GetHashCode(); - hash ^= repeatedFloatWrapper_.GetHashCode(); - hash ^= repeatedDoubleWrapper_.GetHashCode(); - hash ^= repeatedStringWrapper_.GetHashCode(); - hash ^= repeatedBytesWrapper_.GetHashCode(); - if (optionalDuration_ != null) hash ^= OptionalDuration.GetHashCode(); - if (optionalTimestamp_ != null) hash ^= OptionalTimestamp.GetHashCode(); - if (optionalFieldMask_ != null) hash ^= OptionalFieldMask.GetHashCode(); - if (optionalStruct_ != null) hash ^= OptionalStruct.GetHashCode(); - if (optionalAny_ != null) hash ^= OptionalAny.GetHashCode(); - if (optionalValue_ != null) hash ^= OptionalValue.GetHashCode(); - hash ^= repeatedDuration_.GetHashCode(); - hash ^= repeatedTimestamp_.GetHashCode(); - hash ^= repeatedFieldmask_.GetHashCode(); - hash ^= repeatedStruct_.GetHashCode(); - hash ^= repeatedAny_.GetHashCode(); - hash ^= repeatedValue_.GetHashCode(); - hash ^= repeatedListValue_.GetHashCode(); - if (Fieldname1 != 0) hash ^= Fieldname1.GetHashCode(); - if (FieldName2 != 0) hash ^= FieldName2.GetHashCode(); - if (FieldName3 != 0) hash ^= FieldName3.GetHashCode(); - if (FieldName4 != 0) hash ^= FieldName4.GetHashCode(); - if (Field0Name5 != 0) hash ^= Field0Name5.GetHashCode(); - if (Field0Name6 != 0) hash ^= Field0Name6.GetHashCode(); - if (FieldName7 != 0) hash ^= FieldName7.GetHashCode(); - if (FieldName8 != 0) hash ^= FieldName8.GetHashCode(); - if (FieldName9 != 0) hash ^= FieldName9.GetHashCode(); - if (FieldName10 != 0) hash ^= FieldName10.GetHashCode(); - if (FIELDNAME11 != 0) hash ^= FIELDNAME11.GetHashCode(); - if (FIELDName12 != 0) hash ^= FIELDName12.GetHashCode(); - if (FieldName13 != 0) hash ^= FieldName13.GetHashCode(); - if (FieldName14 != 0) hash ^= FieldName14.GetHashCode(); - if (FieldName15 != 0) hash ^= FieldName15.GetHashCode(); - if (FieldName16 != 0) hash ^= FieldName16.GetHashCode(); - if (FieldName17 != 0) hash ^= FieldName17.GetHashCode(); - if (FieldName18 != 0) hash ^= FieldName18.GetHashCode(); - hash ^= (int) oneofFieldCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (OptionalInt32 != 0) { - output.WriteRawTag(8); - output.WriteInt32(OptionalInt32); - } - if (OptionalInt64 != 0L) { - output.WriteRawTag(16); - output.WriteInt64(OptionalInt64); - } - if (OptionalUint32 != 0) { - output.WriteRawTag(24); - output.WriteUInt32(OptionalUint32); - } - if (OptionalUint64 != 0UL) { - output.WriteRawTag(32); - output.WriteUInt64(OptionalUint64); - } - if (OptionalSint32 != 0) { - output.WriteRawTag(40); - output.WriteSInt32(OptionalSint32); - } - if (OptionalSint64 != 0L) { - output.WriteRawTag(48); - output.WriteSInt64(OptionalSint64); - } - if (OptionalFixed32 != 0) { - output.WriteRawTag(61); - output.WriteFixed32(OptionalFixed32); - } - if (OptionalFixed64 != 0UL) { - output.WriteRawTag(65); - output.WriteFixed64(OptionalFixed64); - } - if (OptionalSfixed32 != 0) { - output.WriteRawTag(77); - output.WriteSFixed32(OptionalSfixed32); - } - if (OptionalSfixed64 != 0L) { - output.WriteRawTag(81); - output.WriteSFixed64(OptionalSfixed64); - } - if (OptionalFloat != 0F) { - output.WriteRawTag(93); - output.WriteFloat(OptionalFloat); - } - if (OptionalDouble != 0D) { - output.WriteRawTag(97); - output.WriteDouble(OptionalDouble); - } - if (OptionalBool != false) { - output.WriteRawTag(104); - output.WriteBool(OptionalBool); - } - if (OptionalString.Length != 0) { - output.WriteRawTag(114); - output.WriteString(OptionalString); - } - if (OptionalBytes.Length != 0) { - output.WriteRawTag(122); - output.WriteBytes(OptionalBytes); - } - if (optionalNestedMessage_ != null) { - output.WriteRawTag(146, 1); - output.WriteMessage(OptionalNestedMessage); - } - if (optionalForeignMessage_ != null) { - output.WriteRawTag(154, 1); - output.WriteMessage(OptionalForeignMessage); - } - if (OptionalNestedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo) { - output.WriteRawTag(168, 1); - output.WriteEnum((int) OptionalNestedEnum); - } - if (OptionalForeignEnum != global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo) { - output.WriteRawTag(176, 1); - output.WriteEnum((int) OptionalForeignEnum); - } - if (OptionalAliasedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum.AliasFoo) { - output.WriteRawTag(184, 1); - output.WriteEnum((int) OptionalAliasedEnum); - } - if (OptionalStringPiece.Length != 0) { - output.WriteRawTag(194, 1); - output.WriteString(OptionalStringPiece); - } - if (OptionalCord.Length != 0) { - output.WriteRawTag(202, 1); - output.WriteString(OptionalCord); - } - if (recursiveMessage_ != null) { - output.WriteRawTag(218, 1); - output.WriteMessage(RecursiveMessage); - } - repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec); - repeatedInt64_.WriteTo(output, _repeated_repeatedInt64_codec); - repeatedUint32_.WriteTo(output, _repeated_repeatedUint32_codec); - repeatedUint64_.WriteTo(output, _repeated_repeatedUint64_codec); - repeatedSint32_.WriteTo(output, _repeated_repeatedSint32_codec); - repeatedSint64_.WriteTo(output, _repeated_repeatedSint64_codec); - repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec); - repeatedFixed64_.WriteTo(output, _repeated_repeatedFixed64_codec); - repeatedSfixed32_.WriteTo(output, _repeated_repeatedSfixed32_codec); - repeatedSfixed64_.WriteTo(output, _repeated_repeatedSfixed64_codec); - repeatedFloat_.WriteTo(output, _repeated_repeatedFloat_codec); - repeatedDouble_.WriteTo(output, _repeated_repeatedDouble_codec); - repeatedBool_.WriteTo(output, _repeated_repeatedBool_codec); - repeatedString_.WriteTo(output, _repeated_repeatedString_codec); - repeatedBytes_.WriteTo(output, _repeated_repeatedBytes_codec); - repeatedNestedMessage_.WriteTo(output, _repeated_repeatedNestedMessage_codec); - repeatedForeignMessage_.WriteTo(output, _repeated_repeatedForeignMessage_codec); - repeatedNestedEnum_.WriteTo(output, _repeated_repeatedNestedEnum_codec); - repeatedForeignEnum_.WriteTo(output, _repeated_repeatedForeignEnum_codec); - repeatedStringPiece_.WriteTo(output, _repeated_repeatedStringPiece_codec); - repeatedCord_.WriteTo(output, _repeated_repeatedCord_codec); - mapInt32Int32_.WriteTo(output, _map_mapInt32Int32_codec); - mapInt64Int64_.WriteTo(output, _map_mapInt64Int64_codec); - mapUint32Uint32_.WriteTo(output, _map_mapUint32Uint32_codec); - mapUint64Uint64_.WriteTo(output, _map_mapUint64Uint64_codec); - mapSint32Sint32_.WriteTo(output, _map_mapSint32Sint32_codec); - mapSint64Sint64_.WriteTo(output, _map_mapSint64Sint64_codec); - mapFixed32Fixed32_.WriteTo(output, _map_mapFixed32Fixed32_codec); - mapFixed64Fixed64_.WriteTo(output, _map_mapFixed64Fixed64_codec); - mapSfixed32Sfixed32_.WriteTo(output, _map_mapSfixed32Sfixed32_codec); - mapSfixed64Sfixed64_.WriteTo(output, _map_mapSfixed64Sfixed64_codec); - mapInt32Float_.WriteTo(output, _map_mapInt32Float_codec); - mapInt32Double_.WriteTo(output, _map_mapInt32Double_codec); - mapBoolBool_.WriteTo(output, _map_mapBoolBool_codec); - mapStringString_.WriteTo(output, _map_mapStringString_codec); - mapStringBytes_.WriteTo(output, _map_mapStringBytes_codec); - mapStringNestedMessage_.WriteTo(output, _map_mapStringNestedMessage_codec); - mapStringForeignMessage_.WriteTo(output, _map_mapStringForeignMessage_codec); - mapStringNestedEnum_.WriteTo(output, _map_mapStringNestedEnum_codec); - mapStringForeignEnum_.WriteTo(output, _map_mapStringForeignEnum_codec); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { - output.WriteRawTag(248, 6); - output.WriteUInt32(OneofUint32); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - output.WriteRawTag(130, 7); - output.WriteMessage(OneofNestedMessage); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { - output.WriteRawTag(138, 7); - output.WriteString(OneofString); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { - output.WriteRawTag(146, 7); - output.WriteBytes(OneofBytes); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBool) { - output.WriteRawTag(152, 7); - output.WriteBool(OneofBool); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint64) { - output.WriteRawTag(160, 7); - output.WriteUInt64(OneofUint64); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofFloat) { - output.WriteRawTag(173, 7); - output.WriteFloat(OneofFloat); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofDouble) { - output.WriteRawTag(177, 7); - output.WriteDouble(OneofDouble); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) { - output.WriteRawTag(184, 7); - output.WriteEnum((int) OneofEnum); - } - if (optionalBoolWrapper_ != null) { - _single_optionalBoolWrapper_codec.WriteTagAndValue(output, OptionalBoolWrapper); - } - if (optionalInt32Wrapper_ != null) { - _single_optionalInt32Wrapper_codec.WriteTagAndValue(output, OptionalInt32Wrapper); - } - if (optionalInt64Wrapper_ != null) { - _single_optionalInt64Wrapper_codec.WriteTagAndValue(output, OptionalInt64Wrapper); - } - if (optionalUint32Wrapper_ != null) { - _single_optionalUint32Wrapper_codec.WriteTagAndValue(output, OptionalUint32Wrapper); - } - if (optionalUint64Wrapper_ != null) { - _single_optionalUint64Wrapper_codec.WriteTagAndValue(output, OptionalUint64Wrapper); - } - if (optionalFloatWrapper_ != null) { - _single_optionalFloatWrapper_codec.WriteTagAndValue(output, OptionalFloatWrapper); - } - if (optionalDoubleWrapper_ != null) { - _single_optionalDoubleWrapper_codec.WriteTagAndValue(output, OptionalDoubleWrapper); - } - if (optionalStringWrapper_ != null) { - _single_optionalStringWrapper_codec.WriteTagAndValue(output, OptionalStringWrapper); - } - if (optionalBytesWrapper_ != null) { - _single_optionalBytesWrapper_codec.WriteTagAndValue(output, OptionalBytesWrapper); - } - repeatedBoolWrapper_.WriteTo(output, _repeated_repeatedBoolWrapper_codec); - repeatedInt32Wrapper_.WriteTo(output, _repeated_repeatedInt32Wrapper_codec); - repeatedInt64Wrapper_.WriteTo(output, _repeated_repeatedInt64Wrapper_codec); - repeatedUint32Wrapper_.WriteTo(output, _repeated_repeatedUint32Wrapper_codec); - repeatedUint64Wrapper_.WriteTo(output, _repeated_repeatedUint64Wrapper_codec); - repeatedFloatWrapper_.WriteTo(output, _repeated_repeatedFloatWrapper_codec); - repeatedDoubleWrapper_.WriteTo(output, _repeated_repeatedDoubleWrapper_codec); - repeatedStringWrapper_.WriteTo(output, _repeated_repeatedStringWrapper_codec); - repeatedBytesWrapper_.WriteTo(output, _repeated_repeatedBytesWrapper_codec); - if (optionalDuration_ != null) { - output.WriteRawTag(234, 18); - output.WriteMessage(OptionalDuration); - } - if (optionalTimestamp_ != null) { - output.WriteRawTag(242, 18); - output.WriteMessage(OptionalTimestamp); - } - if (optionalFieldMask_ != null) { - output.WriteRawTag(250, 18); - output.WriteMessage(OptionalFieldMask); - } - if (optionalStruct_ != null) { - output.WriteRawTag(130, 19); - output.WriteMessage(OptionalStruct); - } - if (optionalAny_ != null) { - output.WriteRawTag(138, 19); - output.WriteMessage(OptionalAny); - } - if (optionalValue_ != null) { - output.WriteRawTag(146, 19); - output.WriteMessage(OptionalValue); - } - repeatedDuration_.WriteTo(output, _repeated_repeatedDuration_codec); - repeatedTimestamp_.WriteTo(output, _repeated_repeatedTimestamp_codec); - repeatedFieldmask_.WriteTo(output, _repeated_repeatedFieldmask_codec); - repeatedAny_.WriteTo(output, _repeated_repeatedAny_codec); - repeatedValue_.WriteTo(output, _repeated_repeatedValue_codec); - repeatedListValue_.WriteTo(output, _repeated_repeatedListValue_codec); - repeatedStruct_.WriteTo(output, _repeated_repeatedStruct_codec); - if (Fieldname1 != 0) { - output.WriteRawTag(136, 25); - output.WriteInt32(Fieldname1); - } - if (FieldName2 != 0) { - output.WriteRawTag(144, 25); - output.WriteInt32(FieldName2); - } - if (FieldName3 != 0) { - output.WriteRawTag(152, 25); - output.WriteInt32(FieldName3); - } - if (FieldName4 != 0) { - output.WriteRawTag(160, 25); - output.WriteInt32(FieldName4); - } - if (Field0Name5 != 0) { - output.WriteRawTag(168, 25); - output.WriteInt32(Field0Name5); - } - if (Field0Name6 != 0) { - output.WriteRawTag(176, 25); - output.WriteInt32(Field0Name6); - } - if (FieldName7 != 0) { - output.WriteRawTag(184, 25); - output.WriteInt32(FieldName7); - } - if (FieldName8 != 0) { - output.WriteRawTag(192, 25); - output.WriteInt32(FieldName8); - } - if (FieldName9 != 0) { - output.WriteRawTag(200, 25); - output.WriteInt32(FieldName9); - } - if (FieldName10 != 0) { - output.WriteRawTag(208, 25); - output.WriteInt32(FieldName10); - } - if (FIELDNAME11 != 0) { - output.WriteRawTag(216, 25); - output.WriteInt32(FIELDNAME11); - } - if (FIELDName12 != 0) { - output.WriteRawTag(224, 25); - output.WriteInt32(FIELDName12); - } - if (FieldName13 != 0) { - output.WriteRawTag(232, 25); - output.WriteInt32(FieldName13); - } - if (FieldName14 != 0) { - output.WriteRawTag(240, 25); - output.WriteInt32(FieldName14); - } - if (FieldName15 != 0) { - output.WriteRawTag(248, 25); - output.WriteInt32(FieldName15); - } - if (FieldName16 != 0) { - output.WriteRawTag(128, 26); - output.WriteInt32(FieldName16); - } - if (FieldName17 != 0) { - output.WriteRawTag(136, 26); - output.WriteInt32(FieldName17); - } - if (FieldName18 != 0) { - output.WriteRawTag(144, 26); - output.WriteInt32(FieldName18); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (OptionalInt32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(OptionalInt32); - } - if (OptionalInt64 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(OptionalInt64); - } - if (OptionalUint32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(OptionalUint32); - } - if (OptionalUint64 != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(OptionalUint64); - } - if (OptionalSint32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeSInt32Size(OptionalSint32); - } - if (OptionalSint64 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeSInt64Size(OptionalSint64); - } - if (OptionalFixed32 != 0) { - size += 1 + 4; - } - if (OptionalFixed64 != 0UL) { - size += 1 + 8; - } - if (OptionalSfixed32 != 0) { - size += 1 + 4; - } - if (OptionalSfixed64 != 0L) { - size += 1 + 8; - } - if (OptionalFloat != 0F) { - size += 1 + 4; - } - if (OptionalDouble != 0D) { - size += 1 + 8; - } - if (OptionalBool != false) { - size += 1 + 1; - } - if (OptionalString.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(OptionalString); - } - if (OptionalBytes.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(OptionalBytes); - } - if (optionalNestedMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalNestedMessage); - } - if (optionalForeignMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalForeignMessage); - } - if (OptionalNestedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalNestedEnum); - } - if (OptionalForeignEnum != global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalForeignEnum); - } - if (OptionalAliasedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum.AliasFoo) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OptionalAliasedEnum); - } - if (OptionalStringPiece.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(OptionalStringPiece); - } - if (OptionalCord.Length != 0) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(OptionalCord); - } - if (recursiveMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(RecursiveMessage); - } - size += repeatedInt32_.CalculateSize(_repeated_repeatedInt32_codec); - size += repeatedInt64_.CalculateSize(_repeated_repeatedInt64_codec); - size += repeatedUint32_.CalculateSize(_repeated_repeatedUint32_codec); - size += repeatedUint64_.CalculateSize(_repeated_repeatedUint64_codec); - size += repeatedSint32_.CalculateSize(_repeated_repeatedSint32_codec); - size += repeatedSint64_.CalculateSize(_repeated_repeatedSint64_codec); - size += repeatedFixed32_.CalculateSize(_repeated_repeatedFixed32_codec); - size += repeatedFixed64_.CalculateSize(_repeated_repeatedFixed64_codec); - size += repeatedSfixed32_.CalculateSize(_repeated_repeatedSfixed32_codec); - size += repeatedSfixed64_.CalculateSize(_repeated_repeatedSfixed64_codec); - size += repeatedFloat_.CalculateSize(_repeated_repeatedFloat_codec); - size += repeatedDouble_.CalculateSize(_repeated_repeatedDouble_codec); - size += repeatedBool_.CalculateSize(_repeated_repeatedBool_codec); - size += repeatedString_.CalculateSize(_repeated_repeatedString_codec); - size += repeatedBytes_.CalculateSize(_repeated_repeatedBytes_codec); - size += repeatedNestedMessage_.CalculateSize(_repeated_repeatedNestedMessage_codec); - size += repeatedForeignMessage_.CalculateSize(_repeated_repeatedForeignMessage_codec); - size += repeatedNestedEnum_.CalculateSize(_repeated_repeatedNestedEnum_codec); - size += repeatedForeignEnum_.CalculateSize(_repeated_repeatedForeignEnum_codec); - size += repeatedStringPiece_.CalculateSize(_repeated_repeatedStringPiece_codec); - size += repeatedCord_.CalculateSize(_repeated_repeatedCord_codec); - size += mapInt32Int32_.CalculateSize(_map_mapInt32Int32_codec); - size += mapInt64Int64_.CalculateSize(_map_mapInt64Int64_codec); - size += mapUint32Uint32_.CalculateSize(_map_mapUint32Uint32_codec); - size += mapUint64Uint64_.CalculateSize(_map_mapUint64Uint64_codec); - size += mapSint32Sint32_.CalculateSize(_map_mapSint32Sint32_codec); - size += mapSint64Sint64_.CalculateSize(_map_mapSint64Sint64_codec); - size += mapFixed32Fixed32_.CalculateSize(_map_mapFixed32Fixed32_codec); - size += mapFixed64Fixed64_.CalculateSize(_map_mapFixed64Fixed64_codec); - size += mapSfixed32Sfixed32_.CalculateSize(_map_mapSfixed32Sfixed32_codec); - size += mapSfixed64Sfixed64_.CalculateSize(_map_mapSfixed64Sfixed64_codec); - size += mapInt32Float_.CalculateSize(_map_mapInt32Float_codec); - size += mapInt32Double_.CalculateSize(_map_mapInt32Double_codec); - size += mapBoolBool_.CalculateSize(_map_mapBoolBool_codec); - size += mapStringString_.CalculateSize(_map_mapStringString_codec); - size += mapStringBytes_.CalculateSize(_map_mapStringBytes_codec); - size += mapStringNestedMessage_.CalculateSize(_map_mapStringNestedMessage_codec); - size += mapStringForeignMessage_.CalculateSize(_map_mapStringForeignMessage_codec); - size += mapStringNestedEnum_.CalculateSize(_map_mapStringNestedEnum_codec); - size += mapStringForeignEnum_.CalculateSize(_map_mapStringForeignEnum_codec); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { - size += 2 + pb::CodedOutputStream.ComputeUInt32Size(OneofUint32); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OneofNestedMessage); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(OneofString); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { - size += 2 + pb::CodedOutputStream.ComputeBytesSize(OneofBytes); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBool) { - size += 2 + 1; - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint64) { - size += 2 + pb::CodedOutputStream.ComputeUInt64Size(OneofUint64); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofFloat) { - size += 2 + 4; - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofDouble) { - size += 2 + 8; - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) OneofEnum); - } - if (optionalBoolWrapper_ != null) { - size += _single_optionalBoolWrapper_codec.CalculateSizeWithTag(OptionalBoolWrapper); - } - if (optionalInt32Wrapper_ != null) { - size += _single_optionalInt32Wrapper_codec.CalculateSizeWithTag(OptionalInt32Wrapper); - } - if (optionalInt64Wrapper_ != null) { - size += _single_optionalInt64Wrapper_codec.CalculateSizeWithTag(OptionalInt64Wrapper); - } - if (optionalUint32Wrapper_ != null) { - size += _single_optionalUint32Wrapper_codec.CalculateSizeWithTag(OptionalUint32Wrapper); - } - if (optionalUint64Wrapper_ != null) { - size += _single_optionalUint64Wrapper_codec.CalculateSizeWithTag(OptionalUint64Wrapper); - } - if (optionalFloatWrapper_ != null) { - size += _single_optionalFloatWrapper_codec.CalculateSizeWithTag(OptionalFloatWrapper); - } - if (optionalDoubleWrapper_ != null) { - size += _single_optionalDoubleWrapper_codec.CalculateSizeWithTag(OptionalDoubleWrapper); - } - if (optionalStringWrapper_ != null) { - size += _single_optionalStringWrapper_codec.CalculateSizeWithTag(OptionalStringWrapper); - } - if (optionalBytesWrapper_ != null) { - size += _single_optionalBytesWrapper_codec.CalculateSizeWithTag(OptionalBytesWrapper); - } - size += repeatedBoolWrapper_.CalculateSize(_repeated_repeatedBoolWrapper_codec); - size += repeatedInt32Wrapper_.CalculateSize(_repeated_repeatedInt32Wrapper_codec); - size += repeatedInt64Wrapper_.CalculateSize(_repeated_repeatedInt64Wrapper_codec); - size += repeatedUint32Wrapper_.CalculateSize(_repeated_repeatedUint32Wrapper_codec); - size += repeatedUint64Wrapper_.CalculateSize(_repeated_repeatedUint64Wrapper_codec); - size += repeatedFloatWrapper_.CalculateSize(_repeated_repeatedFloatWrapper_codec); - size += repeatedDoubleWrapper_.CalculateSize(_repeated_repeatedDoubleWrapper_codec); - size += repeatedStringWrapper_.CalculateSize(_repeated_repeatedStringWrapper_codec); - size += repeatedBytesWrapper_.CalculateSize(_repeated_repeatedBytesWrapper_codec); - if (optionalDuration_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalDuration); - } - if (optionalTimestamp_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalTimestamp); - } - if (optionalFieldMask_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalFieldMask); - } - if (optionalStruct_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalStruct); - } - if (optionalAny_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalAny); - } - if (optionalValue_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OptionalValue); - } - size += repeatedDuration_.CalculateSize(_repeated_repeatedDuration_codec); - size += repeatedTimestamp_.CalculateSize(_repeated_repeatedTimestamp_codec); - size += repeatedFieldmask_.CalculateSize(_repeated_repeatedFieldmask_codec); - size += repeatedStruct_.CalculateSize(_repeated_repeatedStruct_codec); - size += repeatedAny_.CalculateSize(_repeated_repeatedAny_codec); - size += repeatedValue_.CalculateSize(_repeated_repeatedValue_codec); - size += repeatedListValue_.CalculateSize(_repeated_repeatedListValue_codec); - if (Fieldname1 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Fieldname1); - } - if (FieldName2 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName2); - } - if (FieldName3 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName3); - } - if (FieldName4 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName4); - } - if (Field0Name5 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field0Name5); - } - if (Field0Name6 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(Field0Name6); - } - if (FieldName7 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName7); - } - if (FieldName8 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName8); - } - if (FieldName9 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName9); - } - if (FieldName10 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName10); - } - if (FIELDNAME11 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FIELDNAME11); - } - if (FIELDName12 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FIELDName12); - } - if (FieldName13 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName13); - } - if (FieldName14 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName14); - } - if (FieldName15 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName15); - } - if (FieldName16 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName16); - } - if (FieldName17 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName17); - } - if (FieldName18 != 0) { - size += 2 + pb::CodedOutputStream.ComputeInt32Size(FieldName18); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestAllTypesProto3 other) { - if (other == null) { - return; - } - if (other.OptionalInt32 != 0) { - OptionalInt32 = other.OptionalInt32; - } - if (other.OptionalInt64 != 0L) { - OptionalInt64 = other.OptionalInt64; - } - if (other.OptionalUint32 != 0) { - OptionalUint32 = other.OptionalUint32; - } - if (other.OptionalUint64 != 0UL) { - OptionalUint64 = other.OptionalUint64; - } - if (other.OptionalSint32 != 0) { - OptionalSint32 = other.OptionalSint32; - } - if (other.OptionalSint64 != 0L) { - OptionalSint64 = other.OptionalSint64; - } - if (other.OptionalFixed32 != 0) { - OptionalFixed32 = other.OptionalFixed32; - } - if (other.OptionalFixed64 != 0UL) { - OptionalFixed64 = other.OptionalFixed64; - } - if (other.OptionalSfixed32 != 0) { - OptionalSfixed32 = other.OptionalSfixed32; - } - if (other.OptionalSfixed64 != 0L) { - OptionalSfixed64 = other.OptionalSfixed64; - } - if (other.OptionalFloat != 0F) { - OptionalFloat = other.OptionalFloat; - } - if (other.OptionalDouble != 0D) { - OptionalDouble = other.OptionalDouble; - } - if (other.OptionalBool != false) { - OptionalBool = other.OptionalBool; - } - if (other.OptionalString.Length != 0) { - OptionalString = other.OptionalString; - } - if (other.OptionalBytes.Length != 0) { - OptionalBytes = other.OptionalBytes; - } - if (other.optionalNestedMessage_ != null) { - if (optionalNestedMessage_ == null) { - OptionalNestedMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage(); - } - OptionalNestedMessage.MergeFrom(other.OptionalNestedMessage); - } - if (other.optionalForeignMessage_ != null) { - if (optionalForeignMessage_ == null) { - OptionalForeignMessage = new global::ProtobufTestMessages.Proto3.ForeignMessage(); - } - OptionalForeignMessage.MergeFrom(other.OptionalForeignMessage); - } - if (other.OptionalNestedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum.Foo) { - OptionalNestedEnum = other.OptionalNestedEnum; - } - if (other.OptionalForeignEnum != global::ProtobufTestMessages.Proto3.ForeignEnum.ForeignFoo) { - OptionalForeignEnum = other.OptionalForeignEnum; - } - if (other.OptionalAliasedEnum != global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum.AliasFoo) { - OptionalAliasedEnum = other.OptionalAliasedEnum; - } - if (other.OptionalStringPiece.Length != 0) { - OptionalStringPiece = other.OptionalStringPiece; - } - if (other.OptionalCord.Length != 0) { - OptionalCord = other.OptionalCord; - } - if (other.recursiveMessage_ != null) { - if (recursiveMessage_ == null) { - RecursiveMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3(); - } - RecursiveMessage.MergeFrom(other.RecursiveMessage); - } - repeatedInt32_.Add(other.repeatedInt32_); - repeatedInt64_.Add(other.repeatedInt64_); - repeatedUint32_.Add(other.repeatedUint32_); - repeatedUint64_.Add(other.repeatedUint64_); - repeatedSint32_.Add(other.repeatedSint32_); - repeatedSint64_.Add(other.repeatedSint64_); - repeatedFixed32_.Add(other.repeatedFixed32_); - repeatedFixed64_.Add(other.repeatedFixed64_); - repeatedSfixed32_.Add(other.repeatedSfixed32_); - repeatedSfixed64_.Add(other.repeatedSfixed64_); - repeatedFloat_.Add(other.repeatedFloat_); - repeatedDouble_.Add(other.repeatedDouble_); - repeatedBool_.Add(other.repeatedBool_); - repeatedString_.Add(other.repeatedString_); - repeatedBytes_.Add(other.repeatedBytes_); - repeatedNestedMessage_.Add(other.repeatedNestedMessage_); - repeatedForeignMessage_.Add(other.repeatedForeignMessage_); - repeatedNestedEnum_.Add(other.repeatedNestedEnum_); - repeatedForeignEnum_.Add(other.repeatedForeignEnum_); - repeatedStringPiece_.Add(other.repeatedStringPiece_); - repeatedCord_.Add(other.repeatedCord_); - mapInt32Int32_.Add(other.mapInt32Int32_); - mapInt64Int64_.Add(other.mapInt64Int64_); - mapUint32Uint32_.Add(other.mapUint32Uint32_); - mapUint64Uint64_.Add(other.mapUint64Uint64_); - mapSint32Sint32_.Add(other.mapSint32Sint32_); - mapSint64Sint64_.Add(other.mapSint64Sint64_); - mapFixed32Fixed32_.Add(other.mapFixed32Fixed32_); - mapFixed64Fixed64_.Add(other.mapFixed64Fixed64_); - mapSfixed32Sfixed32_.Add(other.mapSfixed32Sfixed32_); - mapSfixed64Sfixed64_.Add(other.mapSfixed64Sfixed64_); - mapInt32Float_.Add(other.mapInt32Float_); - mapInt32Double_.Add(other.mapInt32Double_); - mapBoolBool_.Add(other.mapBoolBool_); - mapStringString_.Add(other.mapStringString_); - mapStringBytes_.Add(other.mapStringBytes_); - mapStringNestedMessage_.Add(other.mapStringNestedMessage_); - mapStringForeignMessage_.Add(other.mapStringForeignMessage_); - mapStringNestedEnum_.Add(other.mapStringNestedEnum_); - mapStringForeignEnum_.Add(other.mapStringForeignEnum_); - if (other.optionalBoolWrapper_ != null) { - if (optionalBoolWrapper_ == null || other.OptionalBoolWrapper != false) { - OptionalBoolWrapper = other.OptionalBoolWrapper; - } - } - if (other.optionalInt32Wrapper_ != null) { - if (optionalInt32Wrapper_ == null || other.OptionalInt32Wrapper != 0) { - OptionalInt32Wrapper = other.OptionalInt32Wrapper; - } - } - if (other.optionalInt64Wrapper_ != null) { - if (optionalInt64Wrapper_ == null || other.OptionalInt64Wrapper != 0L) { - OptionalInt64Wrapper = other.OptionalInt64Wrapper; - } - } - if (other.optionalUint32Wrapper_ != null) { - if (optionalUint32Wrapper_ == null || other.OptionalUint32Wrapper != 0) { - OptionalUint32Wrapper = other.OptionalUint32Wrapper; - } - } - if (other.optionalUint64Wrapper_ != null) { - if (optionalUint64Wrapper_ == null || other.OptionalUint64Wrapper != 0UL) { - OptionalUint64Wrapper = other.OptionalUint64Wrapper; - } - } - if (other.optionalFloatWrapper_ != null) { - if (optionalFloatWrapper_ == null || other.OptionalFloatWrapper != 0F) { - OptionalFloatWrapper = other.OptionalFloatWrapper; - } - } - if (other.optionalDoubleWrapper_ != null) { - if (optionalDoubleWrapper_ == null || other.OptionalDoubleWrapper != 0D) { - OptionalDoubleWrapper = other.OptionalDoubleWrapper; - } - } - if (other.optionalStringWrapper_ != null) { - if (optionalStringWrapper_ == null || other.OptionalStringWrapper != "") { - OptionalStringWrapper = other.OptionalStringWrapper; - } - } - if (other.optionalBytesWrapper_ != null) { - if (optionalBytesWrapper_ == null || other.OptionalBytesWrapper != pb::ByteString.Empty) { - OptionalBytesWrapper = other.OptionalBytesWrapper; - } - } - repeatedBoolWrapper_.Add(other.repeatedBoolWrapper_); - repeatedInt32Wrapper_.Add(other.repeatedInt32Wrapper_); - repeatedInt64Wrapper_.Add(other.repeatedInt64Wrapper_); - repeatedUint32Wrapper_.Add(other.repeatedUint32Wrapper_); - repeatedUint64Wrapper_.Add(other.repeatedUint64Wrapper_); - repeatedFloatWrapper_.Add(other.repeatedFloatWrapper_); - repeatedDoubleWrapper_.Add(other.repeatedDoubleWrapper_); - repeatedStringWrapper_.Add(other.repeatedStringWrapper_); - repeatedBytesWrapper_.Add(other.repeatedBytesWrapper_); - if (other.optionalDuration_ != null) { - if (optionalDuration_ == null) { - OptionalDuration = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - OptionalDuration.MergeFrom(other.OptionalDuration); - } - if (other.optionalTimestamp_ != null) { - if (optionalTimestamp_ == null) { - OptionalTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - OptionalTimestamp.MergeFrom(other.OptionalTimestamp); - } - if (other.optionalFieldMask_ != null) { - if (optionalFieldMask_ == null) { - OptionalFieldMask = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - } - OptionalFieldMask.MergeFrom(other.OptionalFieldMask); - } - if (other.optionalStruct_ != null) { - if (optionalStruct_ == null) { - OptionalStruct = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - OptionalStruct.MergeFrom(other.OptionalStruct); - } - if (other.optionalAny_ != null) { - if (optionalAny_ == null) { - OptionalAny = new global::Google.Protobuf.WellKnownTypes.Any(); - } - OptionalAny.MergeFrom(other.OptionalAny); - } - if (other.optionalValue_ != null) { - if (optionalValue_ == null) { - OptionalValue = new global::Google.Protobuf.WellKnownTypes.Value(); - } - OptionalValue.MergeFrom(other.OptionalValue); - } - repeatedDuration_.Add(other.repeatedDuration_); - repeatedTimestamp_.Add(other.repeatedTimestamp_); - repeatedFieldmask_.Add(other.repeatedFieldmask_); - repeatedStruct_.Add(other.repeatedStruct_); - repeatedAny_.Add(other.repeatedAny_); - repeatedValue_.Add(other.repeatedValue_); - repeatedListValue_.Add(other.repeatedListValue_); - if (other.Fieldname1 != 0) { - Fieldname1 = other.Fieldname1; - } - if (other.FieldName2 != 0) { - FieldName2 = other.FieldName2; - } - if (other.FieldName3 != 0) { - FieldName3 = other.FieldName3; - } - if (other.FieldName4 != 0) { - FieldName4 = other.FieldName4; - } - if (other.Field0Name5 != 0) { - Field0Name5 = other.Field0Name5; - } - if (other.Field0Name6 != 0) { - Field0Name6 = other.Field0Name6; - } - if (other.FieldName7 != 0) { - FieldName7 = other.FieldName7; - } - if (other.FieldName8 != 0) { - FieldName8 = other.FieldName8; - } - if (other.FieldName9 != 0) { - FieldName9 = other.FieldName9; - } - if (other.FieldName10 != 0) { - FieldName10 = other.FieldName10; - } - if (other.FIELDNAME11 != 0) { - FIELDNAME11 = other.FIELDNAME11; - } - if (other.FIELDName12 != 0) { - FIELDName12 = other.FIELDName12; - } - if (other.FieldName13 != 0) { - FieldName13 = other.FieldName13; - } - if (other.FieldName14 != 0) { - FieldName14 = other.FieldName14; - } - if (other.FieldName15 != 0) { - FieldName15 = other.FieldName15; - } - if (other.FieldName16 != 0) { - FieldName16 = other.FieldName16; - } - if (other.FieldName17 != 0) { - FieldName17 = other.FieldName17; - } - if (other.FieldName18 != 0) { - FieldName18 = other.FieldName18; - } - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.OneofUint32: - OneofUint32 = other.OneofUint32; - break; - case OneofFieldOneofCase.OneofNestedMessage: - if (OneofNestedMessage == null) { - OneofNestedMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage(); - } - OneofNestedMessage.MergeFrom(other.OneofNestedMessage); - break; - case OneofFieldOneofCase.OneofString: - OneofString = other.OneofString; - break; - case OneofFieldOneofCase.OneofBytes: - OneofBytes = other.OneofBytes; - break; - case OneofFieldOneofCase.OneofBool: - OneofBool = other.OneofBool; - break; - case OneofFieldOneofCase.OneofUint64: - OneofUint64 = other.OneofUint64; - break; - case OneofFieldOneofCase.OneofFloat: - OneofFloat = other.OneofFloat; - break; - case OneofFieldOneofCase.OneofDouble: - OneofDouble = other.OneofDouble; - break; - case OneofFieldOneofCase.OneofEnum: - OneofEnum = other.OneofEnum; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - OptionalInt32 = input.ReadInt32(); - break; - } - case 16: { - OptionalInt64 = input.ReadInt64(); - break; - } - case 24: { - OptionalUint32 = input.ReadUInt32(); - break; - } - case 32: { - OptionalUint64 = input.ReadUInt64(); - break; - } - case 40: { - OptionalSint32 = input.ReadSInt32(); - break; - } - case 48: { - OptionalSint64 = input.ReadSInt64(); - break; - } - case 61: { - OptionalFixed32 = input.ReadFixed32(); - break; - } - case 65: { - OptionalFixed64 = input.ReadFixed64(); - break; - } - case 77: { - OptionalSfixed32 = input.ReadSFixed32(); - break; - } - case 81: { - OptionalSfixed64 = input.ReadSFixed64(); - break; - } - case 93: { - OptionalFloat = input.ReadFloat(); - break; - } - case 97: { - OptionalDouble = input.ReadDouble(); - break; - } - case 104: { - OptionalBool = input.ReadBool(); - break; - } - case 114: { - OptionalString = input.ReadString(); - break; - } - case 122: { - OptionalBytes = input.ReadBytes(); - break; - } - case 146: { - if (optionalNestedMessage_ == null) { - OptionalNestedMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage(); - } - input.ReadMessage(OptionalNestedMessage); - break; - } - case 154: { - if (optionalForeignMessage_ == null) { - OptionalForeignMessage = new global::ProtobufTestMessages.Proto3.ForeignMessage(); - } - input.ReadMessage(OptionalForeignMessage); - break; - } - case 168: { - OptionalNestedEnum = (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) input.ReadEnum(); - break; - } - case 176: { - OptionalForeignEnum = (global::ProtobufTestMessages.Proto3.ForeignEnum) input.ReadEnum(); - break; - } - case 184: { - OptionalAliasedEnum = (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum) input.ReadEnum(); - break; - } - case 194: { - OptionalStringPiece = input.ReadString(); - break; - } - case 202: { - OptionalCord = input.ReadString(); - break; - } - case 218: { - if (recursiveMessage_ == null) { - RecursiveMessage = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3(); - } - input.ReadMessage(RecursiveMessage); - break; - } - case 250: - case 248: { - repeatedInt32_.AddEntriesFrom(input, _repeated_repeatedInt32_codec); - break; - } - case 258: - case 256: { - repeatedInt64_.AddEntriesFrom(input, _repeated_repeatedInt64_codec); - break; - } - case 266: - case 264: { - repeatedUint32_.AddEntriesFrom(input, _repeated_repeatedUint32_codec); - break; - } - case 274: - case 272: { - repeatedUint64_.AddEntriesFrom(input, _repeated_repeatedUint64_codec); - break; - } - case 282: - case 280: { - repeatedSint32_.AddEntriesFrom(input, _repeated_repeatedSint32_codec); - break; - } - case 290: - case 288: { - repeatedSint64_.AddEntriesFrom(input, _repeated_repeatedSint64_codec); - break; - } - case 298: - case 301: { - repeatedFixed32_.AddEntriesFrom(input, _repeated_repeatedFixed32_codec); - break; - } - case 306: - case 305: { - repeatedFixed64_.AddEntriesFrom(input, _repeated_repeatedFixed64_codec); - break; - } - case 314: - case 317: { - repeatedSfixed32_.AddEntriesFrom(input, _repeated_repeatedSfixed32_codec); - break; - } - case 322: - case 321: { - repeatedSfixed64_.AddEntriesFrom(input, _repeated_repeatedSfixed64_codec); - break; - } - case 330: - case 333: { - repeatedFloat_.AddEntriesFrom(input, _repeated_repeatedFloat_codec); - break; - } - case 338: - case 337: { - repeatedDouble_.AddEntriesFrom(input, _repeated_repeatedDouble_codec); - break; - } - case 346: - case 344: { - repeatedBool_.AddEntriesFrom(input, _repeated_repeatedBool_codec); - break; - } - case 354: { - repeatedString_.AddEntriesFrom(input, _repeated_repeatedString_codec); - break; - } - case 362: { - repeatedBytes_.AddEntriesFrom(input, _repeated_repeatedBytes_codec); - break; - } - case 386: { - repeatedNestedMessage_.AddEntriesFrom(input, _repeated_repeatedNestedMessage_codec); - break; - } - case 394: { - repeatedForeignMessage_.AddEntriesFrom(input, _repeated_repeatedForeignMessage_codec); - break; - } - case 410: - case 408: { - repeatedNestedEnum_.AddEntriesFrom(input, _repeated_repeatedNestedEnum_codec); - break; - } - case 418: - case 416: { - repeatedForeignEnum_.AddEntriesFrom(input, _repeated_repeatedForeignEnum_codec); - break; - } - case 434: { - repeatedStringPiece_.AddEntriesFrom(input, _repeated_repeatedStringPiece_codec); - break; - } - case 442: { - repeatedCord_.AddEntriesFrom(input, _repeated_repeatedCord_codec); - break; - } - case 450: { - mapInt32Int32_.AddEntriesFrom(input, _map_mapInt32Int32_codec); - break; - } - case 458: { - mapInt64Int64_.AddEntriesFrom(input, _map_mapInt64Int64_codec); - break; - } - case 466: { - mapUint32Uint32_.AddEntriesFrom(input, _map_mapUint32Uint32_codec); - break; - } - case 474: { - mapUint64Uint64_.AddEntriesFrom(input, _map_mapUint64Uint64_codec); - break; - } - case 482: { - mapSint32Sint32_.AddEntriesFrom(input, _map_mapSint32Sint32_codec); - break; - } - case 490: { - mapSint64Sint64_.AddEntriesFrom(input, _map_mapSint64Sint64_codec); - break; - } - case 498: { - mapFixed32Fixed32_.AddEntriesFrom(input, _map_mapFixed32Fixed32_codec); - break; - } - case 506: { - mapFixed64Fixed64_.AddEntriesFrom(input, _map_mapFixed64Fixed64_codec); - break; - } - case 514: { - mapSfixed32Sfixed32_.AddEntriesFrom(input, _map_mapSfixed32Sfixed32_codec); - break; - } - case 522: { - mapSfixed64Sfixed64_.AddEntriesFrom(input, _map_mapSfixed64Sfixed64_codec); - break; - } - case 530: { - mapInt32Float_.AddEntriesFrom(input, _map_mapInt32Float_codec); - break; - } - case 538: { - mapInt32Double_.AddEntriesFrom(input, _map_mapInt32Double_codec); - break; - } - case 546: { - mapBoolBool_.AddEntriesFrom(input, _map_mapBoolBool_codec); - break; - } - case 554: { - mapStringString_.AddEntriesFrom(input, _map_mapStringString_codec); - break; - } - case 562: { - mapStringBytes_.AddEntriesFrom(input, _map_mapStringBytes_codec); - break; - } - case 570: { - mapStringNestedMessage_.AddEntriesFrom(input, _map_mapStringNestedMessage_codec); - break; - } - case 578: { - mapStringForeignMessage_.AddEntriesFrom(input, _map_mapStringForeignMessage_codec); - break; - } - case 586: { - mapStringNestedEnum_.AddEntriesFrom(input, _map_mapStringNestedEnum_codec); - break; - } - case 594: { - mapStringForeignEnum_.AddEntriesFrom(input, _map_mapStringForeignEnum_codec); - break; - } - case 888: { - OneofUint32 = input.ReadUInt32(); - break; - } - case 898: { - global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage subBuilder = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - subBuilder.MergeFrom(OneofNestedMessage); - } - input.ReadMessage(subBuilder); - OneofNestedMessage = subBuilder; - break; - } - case 906: { - OneofString = input.ReadString(); - break; - } - case 914: { - OneofBytes = input.ReadBytes(); - break; - } - case 920: { - OneofBool = input.ReadBool(); - break; - } - case 928: { - OneofUint64 = input.ReadUInt64(); - break; - } - case 941: { - OneofFloat = input.ReadFloat(); - break; - } - case 945: { - OneofDouble = input.ReadDouble(); - break; - } - case 952: { - oneofField_ = input.ReadEnum(); - oneofFieldCase_ = OneofFieldOneofCase.OneofEnum; - break; - } - case 1610: { - bool? value = _single_optionalBoolWrapper_codec.Read(input); - if (optionalBoolWrapper_ == null || value != false) { - OptionalBoolWrapper = value; - } - break; - } - case 1618: { - int? value = _single_optionalInt32Wrapper_codec.Read(input); - if (optionalInt32Wrapper_ == null || value != 0) { - OptionalInt32Wrapper = value; - } - break; - } - case 1626: { - long? value = _single_optionalInt64Wrapper_codec.Read(input); - if (optionalInt64Wrapper_ == null || value != 0L) { - OptionalInt64Wrapper = value; - } - break; - } - case 1634: { - uint? value = _single_optionalUint32Wrapper_codec.Read(input); - if (optionalUint32Wrapper_ == null || value != 0) { - OptionalUint32Wrapper = value; - } - break; - } - case 1642: { - ulong? value = _single_optionalUint64Wrapper_codec.Read(input); - if (optionalUint64Wrapper_ == null || value != 0UL) { - OptionalUint64Wrapper = value; - } - break; - } - case 1650: { - float? value = _single_optionalFloatWrapper_codec.Read(input); - if (optionalFloatWrapper_ == null || value != 0F) { - OptionalFloatWrapper = value; - } - break; - } - case 1658: { - double? value = _single_optionalDoubleWrapper_codec.Read(input); - if (optionalDoubleWrapper_ == null || value != 0D) { - OptionalDoubleWrapper = value; - } - break; - } - case 1666: { - string value = _single_optionalStringWrapper_codec.Read(input); - if (optionalStringWrapper_ == null || value != "") { - OptionalStringWrapper = value; - } - break; - } - case 1674: { - pb::ByteString value = _single_optionalBytesWrapper_codec.Read(input); - if (optionalBytesWrapper_ == null || value != pb::ByteString.Empty) { - OptionalBytesWrapper = value; - } - break; - } - case 1690: { - repeatedBoolWrapper_.AddEntriesFrom(input, _repeated_repeatedBoolWrapper_codec); - break; - } - case 1698: { - repeatedInt32Wrapper_.AddEntriesFrom(input, _repeated_repeatedInt32Wrapper_codec); - break; - } - case 1706: { - repeatedInt64Wrapper_.AddEntriesFrom(input, _repeated_repeatedInt64Wrapper_codec); - break; - } - case 1714: { - repeatedUint32Wrapper_.AddEntriesFrom(input, _repeated_repeatedUint32Wrapper_codec); - break; - } - case 1722: { - repeatedUint64Wrapper_.AddEntriesFrom(input, _repeated_repeatedUint64Wrapper_codec); - break; - } - case 1730: { - repeatedFloatWrapper_.AddEntriesFrom(input, _repeated_repeatedFloatWrapper_codec); - break; - } - case 1738: { - repeatedDoubleWrapper_.AddEntriesFrom(input, _repeated_repeatedDoubleWrapper_codec); - break; - } - case 1746: { - repeatedStringWrapper_.AddEntriesFrom(input, _repeated_repeatedStringWrapper_codec); - break; - } - case 1754: { - repeatedBytesWrapper_.AddEntriesFrom(input, _repeated_repeatedBytesWrapper_codec); - break; - } - case 2410: { - if (optionalDuration_ == null) { - OptionalDuration = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - input.ReadMessage(OptionalDuration); - break; - } - case 2418: { - if (optionalTimestamp_ == null) { - OptionalTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(OptionalTimestamp); - break; - } - case 2426: { - if (optionalFieldMask_ == null) { - OptionalFieldMask = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - } - input.ReadMessage(OptionalFieldMask); - break; - } - case 2434: { - if (optionalStruct_ == null) { - OptionalStruct = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - input.ReadMessage(OptionalStruct); - break; - } - case 2442: { - if (optionalAny_ == null) { - OptionalAny = new global::Google.Protobuf.WellKnownTypes.Any(); - } - input.ReadMessage(OptionalAny); - break; - } - case 2450: { - if (optionalValue_ == null) { - OptionalValue = new global::Google.Protobuf.WellKnownTypes.Value(); - } - input.ReadMessage(OptionalValue); - break; - } - case 2490: { - repeatedDuration_.AddEntriesFrom(input, _repeated_repeatedDuration_codec); - break; - } - case 2498: { - repeatedTimestamp_.AddEntriesFrom(input, _repeated_repeatedTimestamp_codec); - break; - } - case 2506: { - repeatedFieldmask_.AddEntriesFrom(input, _repeated_repeatedFieldmask_codec); - break; - } - case 2522: { - repeatedAny_.AddEntriesFrom(input, _repeated_repeatedAny_codec); - break; - } - case 2530: { - repeatedValue_.AddEntriesFrom(input, _repeated_repeatedValue_codec); - break; - } - case 2538: { - repeatedListValue_.AddEntriesFrom(input, _repeated_repeatedListValue_codec); - break; - } - case 2594: { - repeatedStruct_.AddEntriesFrom(input, _repeated_repeatedStruct_codec); - break; - } - case 3208: { - Fieldname1 = input.ReadInt32(); - break; - } - case 3216: { - FieldName2 = input.ReadInt32(); - break; - } - case 3224: { - FieldName3 = input.ReadInt32(); - break; - } - case 3232: { - FieldName4 = input.ReadInt32(); - break; - } - case 3240: { - Field0Name5 = input.ReadInt32(); - break; - } - case 3248: { - Field0Name6 = input.ReadInt32(); - break; - } - case 3256: { - FieldName7 = input.ReadInt32(); - break; - } - case 3264: { - FieldName8 = input.ReadInt32(); - break; - } - case 3272: { - FieldName9 = input.ReadInt32(); - break; - } - case 3280: { - FieldName10 = input.ReadInt32(); - break; - } - case 3288: { - FIELDNAME11 = input.ReadInt32(); - break; - } - case 3296: { - FIELDName12 = input.ReadInt32(); - break; - } - case 3304: { - FieldName13 = input.ReadInt32(); - break; - } - case 3312: { - FieldName14 = input.ReadInt32(); - break; - } - case 3320: { - FieldName15 = input.ReadInt32(); - break; - } - case 3328: { - FieldName16 = input.ReadInt32(); - break; - } - case 3336: { - FieldName17 = input.ReadInt32(); - break; - } - case 3344: { - FieldName18 = input.ReadInt32(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the TestAllTypesProto3 message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum NestedEnum { - [pbr::OriginalName("FOO")] Foo = 0, - [pbr::OriginalName("BAR")] Bar = 1, - [pbr::OriginalName("BAZ")] Baz = 2, - /// - /// Intentionally negative. - /// - [pbr::OriginalName("NEG")] Neg = -1, - } - - public enum AliasedEnum { - [pbr::OriginalName("ALIAS_FOO")] AliasFoo = 0, - [pbr::OriginalName("ALIAS_BAR")] AliasBar = 1, - [pbr::OriginalName("ALIAS_BAZ")] AliasBaz = 2, - [pbr::OriginalName("QUX", PreferredAlias = false)] Qux = 2, - [pbr::OriginalName("qux", PreferredAlias = false)] Qux_ = 2, - [pbr::OriginalName("bAz", PreferredAlias = false)] BAz = 2, - } - - public sealed partial class NestedMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage(NestedMessage other) : this() { - a_ = other.a_; - corecursive_ = other.corecursive_ != null ? other.corecursive_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage Clone() { - return new NestedMessage(this); - } - - /// Field number for the "a" field. - public const int AFieldNumber = 1; - private int a_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int A { - get { return a_; } - set { - a_ = value; - } - } - - /// Field number for the "corecursive" field. - public const int CorecursiveFieldNumber = 2; - private global::ProtobufTestMessages.Proto3.TestAllTypesProto3 corecursive_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::ProtobufTestMessages.Proto3.TestAllTypesProto3 Corecursive { - get { return corecursive_; } - set { - corecursive_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (A != other.A) return false; - if (!object.Equals(Corecursive, other.Corecursive)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (A != 0) hash ^= A.GetHashCode(); - if (corecursive_ != null) hash ^= Corecursive.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (A != 0) { - output.WriteRawTag(8); - output.WriteInt32(A); - } - if (corecursive_ != null) { - output.WriteRawTag(18); - output.WriteMessage(Corecursive); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (A != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(A); - } - if (corecursive_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Corecursive); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedMessage other) { - if (other == null) { - return; - } - if (other.A != 0) { - A = other.A; - } - if (other.corecursive_ != null) { - if (corecursive_ == null) { - Corecursive = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3(); - } - Corecursive.MergeFrom(other.Corecursive); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - A = input.ReadInt32(); - break; - } - case 18: { - if (corecursive_ == null) { - Corecursive = new global::ProtobufTestMessages.Proto3.TestAllTypesProto3(); - } - input.ReadMessage(Corecursive); - break; - } - } - } - } - - } - - } - #endregion - - } - - public sealed partial class ForeignMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ForeignMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::ProtobufTestMessages.Proto3.TestMessagesProto3Reflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage(ForeignMessage other) : this() { - c_ = other.c_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage Clone() { - return new ForeignMessage(this); - } - - /// Field number for the "c" field. - public const int CFieldNumber = 1; - private int c_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int C { - get { return c_; } - set { - c_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ForeignMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ForeignMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (C != other.C) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (C != 0) hash ^= C.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (C != 0) { - output.WriteRawTag(8); - output.WriteInt32(C); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (C != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(C); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ForeignMessage other) { - if (other == null) { - return; - } - if (other.C != 0) { - C = other.C; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - C = input.ReadInt32(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs deleted file mode 100644 index 6b19b5c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestCustomOptionsProto3.cs +++ /dev/null @@ -1,2962 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: unittest_custom_options_proto3.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 UnitTest.Issues.TestProtos { - - /// Holder for reflection information generated from unittest_custom_options_proto3.proto - public static partial class UnittestCustomOptionsProto3Reflection { - - #region Descriptor - /// File descriptor for unittest_custom_options_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestCustomOptionsProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "CiR1bml0dGVzdF9jdXN0b21fb3B0aW9uc19wcm90bzMucHJvdG8SEXByb3Rv", - "YnVmX3VuaXR0ZXN0GiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90", - "byLXAQocVGVzdE1lc3NhZ2VXaXRoQ3VzdG9tT3B0aW9ucxIeCgZmaWVsZDEY", - "ASABKAlCDggBweDDHS3hdQoCAAAAEhUKC29uZW9mX2ZpZWxkGAIgASgFSAAi", - "UwoGQW5FbnVtEhYKEkFORU5VTV9VTlNQRUNJRklFRBAAEg8KC0FORU5VTV9W", - "QUwxEAESFgoLQU5FTlVNX1ZBTDIQAhoFsIb6BXsaCMX2yR3r/P//OhAIAODp", - "wh3I//////////8BQhkKB0FuT25lb2YSDviswx2d//////////8BIhgKFkN1", - "c3RvbU9wdGlvbkZvb1JlcXVlc3QiGQoXQ3VzdG9tT3B0aW9uRm9vUmVzcG9u", - "c2UiHgocQ3VzdG9tT3B0aW9uRm9vQ2xpZW50TWVzc2FnZSIeChxDdXN0b21P", - "cHRpb25Gb29TZXJ2ZXJNZXNzYWdlIo8BChpEdW1teU1lc3NhZ2VDb250YWlu", - "aW5nRW51bSJxCgxUZXN0RW51bVR5cGUSIAocVEVTVF9PUFRJT05fRU5VTV9V", - "TlNQRUNJRklFRBAAEhoKFlRFU1RfT1BUSU9OX0VOVU1fVFlQRTEQFhIjChZU", - "RVNUX09QVElPTl9FTlVNX1RZUEUyEOn//////////wEiIQofRHVtbXlNZXNz", - "YWdlSW52YWxpZEFzT3B0aW9uVHlwZSKKAQocQ3VzdG9tT3B0aW9uTWluSW50", - "ZWdlclZhbHVlczpq0N6yHQDoxrIdgICAgPj/////AbC8sh2AgICAgICAgIAB", - "gJOyHQD49bAdAIDEsB3/////D/iXsB3///////////8BnfWvHQAAAACR7q8d", - "AAAAAAAAAACtja8dAAAAgJnWqB0AAAAAAAAAgCKRAQocQ3VzdG9tT3B0aW9u", - "TWF4SW50ZWdlclZhbHVlczpx0N6yHQHoxrId/////wewvLId//////////9/", - "gJOyHf////8P+PWwHf///////////wGAxLAd/v///w/4l7Ad/v//////////", - "AZ31rx3/////ke6vHf//////////rY2vHf///3+Z1qgd/////////38ibgoX", - "Q3VzdG9tT3B0aW9uT3RoZXJWYWx1ZXM6U+jGsh2c//////////8B9d+jHeeH", - "RUHp3KId+1mMQsrA8z+q3KIdDkhlbGxvLCAiV29ybGQistmiHQtIZWxsbwBX", - "b3JsZIjZoh3p//////////8BIjQKHFNldHRpbmdSZWFsc0Zyb21Qb3NpdGl2", - "ZUludHM6FPXfox0AAEBB6dyiHQAAAAAAQGNAIjQKHFNldHRpbmdSZWFsc0Zy", - "b21OZWdhdGl2ZUludHM6FPXfox0AAEDB6dyiHQAAAAAAQGPAIksKEkNvbXBs", - "ZXhPcHRpb25UeXBlMRILCgNmb28YASABKAUSDAoEZm9vMhgCIAEoBRIMCgRm", - "b28zGAMgASgFEgwKBGZvbzQYBCADKAUigQMKEkNvbXBsZXhPcHRpb25UeXBl", - "MhIyCgNiYXIYASABKAsyJS5wcm90b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0", - "aW9uVHlwZTESCwoDYmF6GAIgASgFEkYKBGZyZWQYAyABKAsyOC5wcm90b2J1", - "Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIuQ29tcGxleE9wdGlvblR5", - "cGU0EkgKBmJhcm5leRgEIAMoCzI4LnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBs", - "ZXhPcHRpb25UeXBlMi5Db21wbGV4T3B0aW9uVHlwZTQalwEKEkNvbXBsZXhP", - "cHRpb25UeXBlNBINCgV3YWxkbxgBIAEoBTJyCgxjb21wbGV4X29wdDQSHy5n", - "b29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYivXRAyABKAsyOC5wcm90", - "b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTIuQ29tcGxleE9wdGlv", - "blR5cGU0IiEKEkNvbXBsZXhPcHRpb25UeXBlMxILCgNxdXgYASABKAUibAoV", - "VmFyaW91c0NvbXBsZXhPcHRpb25zOlOi4pUdAggqouKVHQIgY6LilR0CIFiq", - "/ZAdAxDbB6r9kB0FCgMI5wXSqI8dAwizD6r9kB0FGgMIwQKq/ZAdBCICCGWq", - "/ZAdBSIDCNQB+t6QHQIICSJMCglBZ2dyZWdhdGUSCQoBaRgBIAEoBRIJCgFz", - "GAIgASgJEikKA3N1YhgDIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3Jl", - "Z2F0ZSJZChBBZ2dyZWdhdGVNZXNzYWdlEikKCWZpZWxkbmFtZRgBIAEoBUIW", - "8qGHOxESD0ZpZWxkQW5ub3RhdGlvbjoawtGGOxUIZRIRTWVzc2FnZUFubm90", - "YXRpb24ilwEKEE5lc3RlZE9wdGlvblR5cGUaOwoNTmVzdGVkTWVzc2FnZRIi", - "CgxuZXN0ZWRfZmllbGQYASABKAVCDMHgwx3qAwAAAAAAADoG4OnCHekHIkYK", - "Ck5lc3RlZEVudW0SDwoLVU5TUEVDSUZJRUQQABIdChFORVNURURfRU5VTV9W", - "QUxVRRABGgawhvoF7AcaCMX2yR3rAwAAKlIKCk1ldGhvZE9wdDESGgoWTUVU", - "SE9ET1BUMV9VTlNQRUNJRklFRBAAEhMKD01FVEhPRE9QVDFfVkFMMRABEhMK", - "D01FVEhPRE9QVDFfVkFMMhACKl4KDUFnZ3JlZ2F0ZUVudW0SDwoLVU5TUEVD", - "SUZJRUQQABIlCgVWQUxVRRABGhrK/Ik7FRITRW51bVZhbHVlQW5ub3RhdGlv", - "bhoVkpWIOxASDkVudW1Bbm5vdGF0aW9uMo4BChxUZXN0U2VydmljZVdpdGhD", - "dXN0b21PcHRpb25zEmMKA0ZvbxIpLnByb3RvYnVmX3VuaXR0ZXN0LkN1c3Rv", - "bU9wdGlvbkZvb1JlcXVlc3QaKi5wcm90b2J1Zl91bml0dGVzdC5DdXN0b21P", - "cHRpb25Gb29SZXNwb25zZSIF4PqMHgIaCZCyix7T24DLSTKZAQoQQWdncmVn", - "YXRlU2VydmljZRJrCgZNZXRob2QSIy5wcm90b2J1Zl91bml0dGVzdC5BZ2dy", - "ZWdhdGVNZXNzYWdlGiMucHJvdG9idWZfdW5pdHRlc3QuQWdncmVnYXRlTWVz", - "c2FnZSIXysiWOxISEE1ldGhvZEFubm90YXRpb24aGMr7jjsTEhFTZXJ2aWNl", - "QW5ub3RhdGlvbjoyCglmaWxlX29wdDESHC5nb29nbGUucHJvdG9idWYuRmls", - "ZU9wdGlvbnMYjp3YAyABKAQ6OAoMbWVzc2FnZV9vcHQxEh8uZ29vZ2xlLnBy", - "b3RvYnVmLk1lc3NhZ2VPcHRpb25zGJyt2AMgASgFOjQKCmZpZWxkX29wdDES", - "HS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIi82AMgASgGOjQKCm9u", - "ZW9mX29wdDESHS5nb29nbGUucHJvdG9idWYuT25lb2ZPcHRpb25zGM+12AMg", - "ASgFOjIKCWVudW1fb3B0MRIcLmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9u", - "cxjontkDIAEoDzo8Cg9lbnVtX3ZhbHVlX29wdDESIS5nb29nbGUucHJvdG9i", - "dWYuRW51bVZhbHVlT3B0aW9ucxjmoF8gASgFOjgKDHNlcnZpY2Vfb3B0MRIf", - "Lmdvb2dsZS5wcm90b2J1Zi5TZXJ2aWNlT3B0aW9ucxiituEDIAEoEjpVCgtt", - "ZXRob2Rfb3B0MRIeLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zGKzP", - "4QMgASgOMh0ucHJvdG9idWZfdW5pdHRlc3QuTWV0aG9kT3B0MTo0Cghib29s", - "X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjqq9YDIAEo", - "CDo1CglpbnQzMl9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlv", - "bnMY7ajWAyABKAU6NQoJaW50NjRfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1l", - "c3NhZ2VPcHRpb25zGMan1gMgASgDOjYKCnVpbnQzMl9vcHQSHy5nb29nbGUu", - "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYsKLWAyABKA06NgoKdWludDY0X29w", - "dBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjfjtYDIAEoBDo2", - "CgpzaW50MzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25z", - "GMCI1gMgASgROjYKCnNpbnQ2NF9vcHQSHy5nb29nbGUucHJvdG9idWYuTWVz", - "c2FnZU9wdGlvbnMY/4LWAyABKBI6NwoLZml4ZWQzMl9vcHQSHy5nb29nbGUu", - "cHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY0/7VAyABKAc6NwoLZml4ZWQ2NF9v", - "cHQSHy5nb29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY4v3VAyABKAY6", - "OAoMc2ZpeGVkMzJfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRp", - "b25zGNXx1QMgASgPOjgKDHNmaXhlZDY0X29wdBIfLmdvb2dsZS5wcm90b2J1", - "Zi5NZXNzYWdlT3B0aW9ucxjjitUDIAEoEDo1CglmbG9hdF9vcHQSHy5nb29n", - "bGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMY/rvUAyABKAI6NgoKZG91Ymxl", - "X29wdBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjNq9QDIAEo", - "ATo2CgpzdHJpbmdfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRp", - "b25zGMWr1AMgASgJOjUKCWJ5dGVzX29wdBIfLmdvb2dsZS5wcm90b2J1Zi5N", - "ZXNzYWdlT3B0aW9ucxiWq9QDIAEoDDpwCghlbnVtX29wdBIfLmdvb2dsZS5w", - "cm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiRq9QDIAEoDjI6LnByb3RvYnVmX3Vu", - "aXR0ZXN0LkR1bW15TWVzc2FnZUNvbnRhaW5pbmdFbnVtLlRlc3RFbnVtVHlw", - "ZTpwChBtZXNzYWdlX3R5cGVfb3B0Eh8uZ29vZ2xlLnByb3RvYnVmLk1lc3Nh", - "Z2VPcHRpb25zGK/y0wMgASgLMjIucHJvdG9idWZfdW5pdHRlc3QuRHVtbXlN", - "ZXNzYWdlSW52YWxpZEFzT3B0aW9uVHlwZTpfCgxjb21wbGV4X29wdDESHy5n", - "b29nbGUucHJvdG9idWYuTWVzc2FnZU9wdGlvbnMYpNzSAyABKAsyJS5wcm90", - "b2J1Zl91bml0dGVzdC5Db21wbGV4T3B0aW9uVHlwZTE6XwoMY29tcGxleF9v", - "cHQyEh8uZ29vZ2xlLnByb3RvYnVmLk1lc3NhZ2VPcHRpb25zGNWP0gMgASgL", - "MiUucHJvdG9idWZfdW5pdHRlc3QuQ29tcGxleE9wdGlvblR5cGUyOl8KDGNv", - "bXBsZXhfb3B0MxIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxjv", - "i9IDIAEoCzIlLnByb3RvYnVmX3VuaXR0ZXN0LkNvbXBsZXhPcHRpb25UeXBl", - "MzpOCgdmaWxlb3B0EhwuZ29vZ2xlLnByb3RvYnVmLkZpbGVPcHRpb25zGM/d", - "sAcgASgLMhwucHJvdG9idWZfdW5pdHRlc3QuQWdncmVnYXRlOlAKBm1zZ29w", - "dBIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiY6rAHIAEoCzIc", - "LnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3JlZ2F0ZTpQCghmaWVsZG9wdBIdLmdv", - "b2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlvbnMYnvSwByABKAsyHC5wcm90b2J1", - "Zl91bml0dGVzdC5BZ2dyZWdhdGU6TgoHZW51bW9wdBIcLmdvb2dsZS5wcm90", - "b2J1Zi5FbnVtT3B0aW9ucxjSgrEHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0", - "LkFnZ3JlZ2F0ZTpWCgplbnVtdmFsb3B0EiEuZ29vZ2xlLnByb3RvYnVmLkVu", - "dW1WYWx1ZU9wdGlvbnMYyZ+xByABKAsyHC5wcm90b2J1Zl91bml0dGVzdC5B", - "Z2dyZWdhdGU6VAoKc2VydmljZW9wdBIfLmdvb2dsZS5wcm90b2J1Zi5TZXJ2", - "aWNlT3B0aW9ucxi577EHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3Jl", - "Z2F0ZTpSCgltZXRob2RvcHQSHi5nb29nbGUucHJvdG9idWYuTWV0aG9kT3B0", - "aW9ucxiJ6bIHIAEoCzIcLnByb3RvYnVmX3VuaXR0ZXN0LkFnZ3JlZ2F0ZUJV", - "qgIaVW5pdFRlc3QuSXNzdWVzLlRlc3RQcm90b3Pw6MEd6q3A5ST67IU7Kghk", - "Eg5GaWxlQW5ub3RhdGlvbhoWEhROZXN0ZWRGaWxlQW5ub3RhdGlvbmIGcHJv", - "dG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::UnitTest.Issues.TestProtos.MethodOpt1), typeof(global::UnitTest.Issues.TestProtos.AggregateEnum), }, new pb::Extension[] { UnittestCustomOptionsProto3Extensions.FileOpt1, UnittestCustomOptionsProto3Extensions.MessageOpt1, UnittestCustomOptionsProto3Extensions.FieldOpt1, UnittestCustomOptionsProto3Extensions.OneofOpt1, UnittestCustomOptionsProto3Extensions.EnumOpt1, UnittestCustomOptionsProto3Extensions.EnumValueOpt1, UnittestCustomOptionsProto3Extensions.ServiceOpt1, UnittestCustomOptionsProto3Extensions.MethodOpt1, UnittestCustomOptionsProto3Extensions.BoolOpt, UnittestCustomOptionsProto3Extensions.Int32Opt, UnittestCustomOptionsProto3Extensions.Int64Opt, UnittestCustomOptionsProto3Extensions.Uint32Opt, UnittestCustomOptionsProto3Extensions.Uint64Opt, UnittestCustomOptionsProto3Extensions.Sint32Opt, UnittestCustomOptionsProto3Extensions.Sint64Opt, UnittestCustomOptionsProto3Extensions.Fixed32Opt, UnittestCustomOptionsProto3Extensions.Fixed64Opt, UnittestCustomOptionsProto3Extensions.Sfixed32Opt, UnittestCustomOptionsProto3Extensions.Sfixed64Opt, UnittestCustomOptionsProto3Extensions.FloatOpt, UnittestCustomOptionsProto3Extensions.DoubleOpt, UnittestCustomOptionsProto3Extensions.StringOpt, UnittestCustomOptionsProto3Extensions.BytesOpt, UnittestCustomOptionsProto3Extensions.EnumOpt, UnittestCustomOptionsProto3Extensions.MessageTypeOpt, UnittestCustomOptionsProto3Extensions.ComplexOpt1, UnittestCustomOptionsProto3Extensions.ComplexOpt2, UnittestCustomOptionsProto3Extensions.ComplexOpt3, UnittestCustomOptionsProto3Extensions.Fileopt, UnittestCustomOptionsProto3Extensions.Msgopt, UnittestCustomOptionsProto3Extensions.Fieldopt, UnittestCustomOptionsProto3Extensions.Enumopt, UnittestCustomOptionsProto3Extensions.Enumvalopt, UnittestCustomOptionsProto3Extensions.Serviceopt, UnittestCustomOptionsProto3Extensions.Methodopt }, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions), global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions.Parser, new[]{ "Field1", "OneofField" }, new[]{ "AnOneof" }, new[]{ typeof(global::UnitTest.Issues.TestProtos.TestMessageWithCustomOptions.Types.AnEnum) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooRequest), global::UnitTest.Issues.TestProtos.CustomOptionFooRequest.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooResponse), global::UnitTest.Issues.TestProtos.CustomOptionFooResponse.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooClientMessage), global::UnitTest.Issues.TestProtos.CustomOptionFooClientMessage.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionFooServerMessage), global::UnitTest.Issues.TestProtos.CustomOptionFooServerMessage.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum), global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Parser, null, null, new[]{ typeof(global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType), global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionMinIntegerValues), global::UnitTest.Issues.TestProtos.CustomOptionMinIntegerValues.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionMaxIntegerValues), global::UnitTest.Issues.TestProtos.CustomOptionMaxIntegerValues.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.CustomOptionOtherValues), global::UnitTest.Issues.TestProtos.CustomOptionOtherValues.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.SettingRealsFromPositiveInts), global::UnitTest.Issues.TestProtos.SettingRealsFromPositiveInts.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.SettingRealsFromNegativeInts), global::UnitTest.Issues.TestProtos.SettingRealsFromNegativeInts.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType1), global::UnitTest.Issues.TestProtos.ComplexOptionType1.Parser, new[]{ "Foo", "Foo2", "Foo3", "Foo4" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType2), global::UnitTest.Issues.TestProtos.ComplexOptionType2.Parser, new[]{ "Bar", "Baz", "Fred", "Barney" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4), global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser, new[]{ "Waldo" }, null, null, new pb::Extension[] { global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Extensions.ComplexOpt4 }, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ComplexOptionType3), global::UnitTest.Issues.TestProtos.ComplexOptionType3.Parser, new[]{ "Qux" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.VariousComplexOptions), global::UnitTest.Issues.TestProtos.VariousComplexOptions.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Aggregate), global::UnitTest.Issues.TestProtos.Aggregate.Parser, new[]{ "I", "S", "Sub" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.AggregateMessage), global::UnitTest.Issues.TestProtos.AggregateMessage.Parser, new[]{ "Fieldname" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.NestedOptionType), global::UnitTest.Issues.TestProtos.NestedOptionType.Parser, null, null, new[]{ typeof(global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedMessage), global::UnitTest.Issues.TestProtos.NestedOptionType.Types.NestedMessage.Parser, new[]{ "NestedField" }, null, null, null, null)}) - })); - } - #endregion - - } - /// Holder for extension identifiers generated from the top level of unittest_custom_options_proto3.proto - internal static partial class UnittestCustomOptionsProto3Extensions { - public static readonly pb::Extension FileOpt1 = - new pb::Extension(7736974, pb::FieldCodec.ForUInt64(61895792, 0UL)); - public static readonly pb::Extension MessageOpt1 = - new pb::Extension(7739036, pb::FieldCodec.ForInt32(61912288, 0)); - public static readonly pb::Extension FieldOpt1 = - new pb::Extension(7740936, pb::FieldCodec.ForFixed64(61927489, 0UL)); - public static readonly pb::Extension OneofOpt1 = - new pb::Extension(7740111, pb::FieldCodec.ForInt32(61920888, 0)); - public static readonly pb::Extension EnumOpt1 = - new pb::Extension(7753576, pb::FieldCodec.ForSFixed32(62028613, 0)); - public static readonly pb::Extension EnumValueOpt1 = - new pb::Extension(1560678, pb::FieldCodec.ForInt32(12485424, 0)); - public static readonly pb::Extension ServiceOpt1 = - new pb::Extension(7887650, pb::FieldCodec.ForSInt64(63101200, 0L)); - public static readonly pb::Extension MethodOpt1 = - new pb::Extension(7890860, pb::FieldCodec.ForEnum(63126880, x => (int) x, x => (global::UnitTest.Issues.TestProtos.MethodOpt1) x, global::UnitTest.Issues.TestProtos.MethodOpt1.Unspecified)); - public static readonly pb::Extension BoolOpt = - new pb::Extension(7706090, pb::FieldCodec.ForBool(61648720, false)); - public static readonly pb::Extension Int32Opt = - new pb::Extension(7705709, pb::FieldCodec.ForInt32(61645672, 0)); - public static readonly pb::Extension Int64Opt = - new pb::Extension(7705542, pb::FieldCodec.ForInt64(61644336, 0L)); - public static readonly pb::Extension Uint32Opt = - new pb::Extension(7704880, pb::FieldCodec.ForUInt32(61639040, 0)); - public static readonly pb::Extension Uint64Opt = - new pb::Extension(7702367, pb::FieldCodec.ForUInt64(61618936, 0UL)); - public static readonly pb::Extension Sint32Opt = - new pb::Extension(7701568, pb::FieldCodec.ForSInt32(61612544, 0)); - public static readonly pb::Extension Sint64Opt = - new pb::Extension(7700863, pb::FieldCodec.ForSInt64(61606904, 0L)); - public static readonly pb::Extension Fixed32Opt = - new pb::Extension(7700307, pb::FieldCodec.ForFixed32(61602461, 0)); - public static readonly pb::Extension Fixed64Opt = - new pb::Extension(7700194, pb::FieldCodec.ForFixed64(61601553, 0UL)); - public static readonly pb::Extension Sfixed32Opt = - new pb::Extension(7698645, pb::FieldCodec.ForSFixed32(61589165, 0)); - public static readonly pb::Extension Sfixed64Opt = - new pb::Extension(7685475, pb::FieldCodec.ForSFixed64(61483801, 0L)); - public static readonly pb::Extension FloatOpt = - new pb::Extension(7675390, pb::FieldCodec.ForFloat(61403125, 0F)); - public static readonly pb::Extension DoubleOpt = - new pb::Extension(7673293, pb::FieldCodec.ForDouble(61386345, 0D)); - public static readonly pb::Extension StringOpt = - new pb::Extension(7673285, pb::FieldCodec.ForString(61386282, "")); - public static readonly pb::Extension BytesOpt = - new pb::Extension(7673238, pb::FieldCodec.ForBytes(61385906, pb::ByteString.Empty)); - public static readonly pb::Extension EnumOpt = - new pb::Extension(7673233, pb::FieldCodec.ForEnum(61385864, x => (int) x, x => (global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType) x, global::UnitTest.Issues.TestProtos.DummyMessageContainingEnum.Types.TestEnumType.TestOptionEnumUnspecified)); - public static readonly pb::Extension MessageTypeOpt = - new pb::Extension(7665967, pb::FieldCodec.ForMessage(61327738, global::UnitTest.Issues.TestProtos.DummyMessageInvalidAsOptionType.Parser)); - public static readonly pb::Extension ComplexOpt1 = - new pb::Extension(7646756, pb::FieldCodec.ForMessage(61174050, global::UnitTest.Issues.TestProtos.ComplexOptionType1.Parser)); - public static readonly pb::Extension ComplexOpt2 = - new pb::Extension(7636949, pb::FieldCodec.ForMessage(61095594, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Parser)); - public static readonly pb::Extension ComplexOpt3 = - new pb::Extension(7636463, pb::FieldCodec.ForMessage(61091706, global::UnitTest.Issues.TestProtos.ComplexOptionType3.Parser)); - public static readonly pb::Extension Fileopt = - new pb::Extension(15478479, pb::FieldCodec.ForMessage(123827834, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Msgopt = - new pb::Extension(15480088, pb::FieldCodec.ForMessage(123840706, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Fieldopt = - new pb::Extension(15481374, pb::FieldCodec.ForMessage(123850994, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Enumopt = - new pb::Extension(15483218, pb::FieldCodec.ForMessage(123865746, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Enumvalopt = - new pb::Extension(15486921, pb::FieldCodec.ForMessage(123895370, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Serviceopt = - new pb::Extension(15497145, pb::FieldCodec.ForMessage(123977162, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - public static readonly pb::Extension Methodopt = - new pb::Extension(15512713, pb::FieldCodec.ForMessage(124101706, global::UnitTest.Issues.TestProtos.Aggregate.Parser)); - } - - #region Enums - public enum MethodOpt1 { - [pbr::OriginalName("METHODOPT1_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("METHODOPT1_VAL1")] Val1 = 1, - [pbr::OriginalName("METHODOPT1_VAL2")] Val2 = 2, - } - - public enum AggregateEnum { - [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("VALUE")] Value = 1, - } - - #endregion - - #region Messages - /// - /// A test message with custom options at all possible locations (and also some - /// regular options, to make sure they interact nicely). - /// - public sealed partial class TestMessageWithCustomOptions : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMessageWithCustomOptions()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageWithCustomOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageWithCustomOptions(TestMessageWithCustomOptions other) : this() { - field1_ = other.field1_; - switch (other.AnOneofCase) { - case AnOneofOneofCase.OneofField: - OneofField = other.OneofField; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMessageWithCustomOptions Clone() { - return new TestMessageWithCustomOptions(this); - } - - /// Field number for the "field1" field. - public const int Field1FieldNumber = 1; - private string field1_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Field1 { - get { return field1_; } - set { - field1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "oneof_field" field. - public const int OneofFieldFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OneofField { - get { return anOneofCase_ == AnOneofOneofCase.OneofField ? (int) anOneof_ : 0; } - set { - anOneof_ = value; - anOneofCase_ = AnOneofOneofCase.OneofField; - } - } - - private object anOneof_; - /// Enum of possible cases for the "AnOneof" oneof. - public enum AnOneofOneofCase { - None = 0, - OneofField = 2, - } - private AnOneofOneofCase anOneofCase_ = AnOneofOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AnOneofOneofCase AnOneofCase { - get { return anOneofCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearAnOneof() { - anOneofCase_ = AnOneofOneofCase.None; - anOneof_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMessageWithCustomOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMessageWithCustomOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Field1 != other.Field1) return false; - if (OneofField != other.OneofField) return false; - if (AnOneofCase != other.AnOneofCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Field1.Length != 0) hash ^= Field1.GetHashCode(); - if (anOneofCase_ == AnOneofOneofCase.OneofField) hash ^= OneofField.GetHashCode(); - hash ^= (int) anOneofCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Field1.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Field1); - } - if (anOneofCase_ == AnOneofOneofCase.OneofField) { - output.WriteRawTag(16); - output.WriteInt32(OneofField); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Field1.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Field1); - } - if (anOneofCase_ == AnOneofOneofCase.OneofField) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofField); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMessageWithCustomOptions other) { - if (other == null) { - return; - } - if (other.Field1.Length != 0) { - Field1 = other.Field1; - } - switch (other.AnOneofCase) { - case AnOneofOneofCase.OneofField: - OneofField = other.OneofField; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Field1 = input.ReadString(); - break; - } - case 16: { - OneofField = input.ReadInt32(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the TestMessageWithCustomOptions message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum AnEnum { - [pbr::OriginalName("ANENUM_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("ANENUM_VAL1")] Val1 = 1, - [pbr::OriginalName("ANENUM_VAL2")] Val2 = 2, - } - - } - #endregion - - } - - /// - /// A test RPC service with custom options at all possible locations (and also - /// some regular options, to make sure they interact nicely). - /// - public sealed partial class CustomOptionFooRequest : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionFooRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooRequest(CustomOptionFooRequest other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooRequest Clone() { - return new CustomOptionFooRequest(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionFooRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionFooRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionFooRequest other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionFooResponse : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionFooResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooResponse(CustomOptionFooResponse other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooResponse Clone() { - return new CustomOptionFooResponse(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionFooResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionFooResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionFooResponse other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionFooClientMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionFooClientMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooClientMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooClientMessage(CustomOptionFooClientMessage other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooClientMessage Clone() { - return new CustomOptionFooClientMessage(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionFooClientMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionFooClientMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionFooClientMessage other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionFooServerMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionFooServerMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooServerMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooServerMessage(CustomOptionFooServerMessage other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionFooServerMessage Clone() { - return new CustomOptionFooServerMessage(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionFooServerMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionFooServerMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionFooServerMessage other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class DummyMessageContainingEnum : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DummyMessageContainingEnum()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageContainingEnum() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageContainingEnum(DummyMessageContainingEnum other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageContainingEnum Clone() { - return new DummyMessageContainingEnum(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as DummyMessageContainingEnum); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(DummyMessageContainingEnum other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(DummyMessageContainingEnum other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - #region Nested types - /// Container for nested types declared in the DummyMessageContainingEnum message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum TestEnumType { - [pbr::OriginalName("TEST_OPTION_ENUM_UNSPECIFIED")] TestOptionEnumUnspecified = 0, - [pbr::OriginalName("TEST_OPTION_ENUM_TYPE1")] TestOptionEnumType1 = 22, - [pbr::OriginalName("TEST_OPTION_ENUM_TYPE2")] TestOptionEnumType2 = -23, - } - - } - #endregion - - } - - public sealed partial class DummyMessageInvalidAsOptionType : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DummyMessageInvalidAsOptionType()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageInvalidAsOptionType() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageInvalidAsOptionType(DummyMessageInvalidAsOptionType other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DummyMessageInvalidAsOptionType Clone() { - return new DummyMessageInvalidAsOptionType(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as DummyMessageInvalidAsOptionType); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(DummyMessageInvalidAsOptionType other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(DummyMessageInvalidAsOptionType other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionMinIntegerValues : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionMinIntegerValues()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMinIntegerValues() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMinIntegerValues(CustomOptionMinIntegerValues other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMinIntegerValues Clone() { - return new CustomOptionMinIntegerValues(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionMinIntegerValues); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionMinIntegerValues other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionMinIntegerValues other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionMaxIntegerValues : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionMaxIntegerValues()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[8]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMaxIntegerValues() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMaxIntegerValues(CustomOptionMaxIntegerValues other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionMaxIntegerValues Clone() { - return new CustomOptionMaxIntegerValues(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionMaxIntegerValues); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionMaxIntegerValues other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionMaxIntegerValues other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class CustomOptionOtherValues : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CustomOptionOtherValues()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[9]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionOtherValues() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionOtherValues(CustomOptionOtherValues other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CustomOptionOtherValues Clone() { - return new CustomOptionOtherValues(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CustomOptionOtherValues); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CustomOptionOtherValues other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CustomOptionOtherValues other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class SettingRealsFromPositiveInts : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SettingRealsFromPositiveInts()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[10]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromPositiveInts() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromPositiveInts(SettingRealsFromPositiveInts other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromPositiveInts Clone() { - return new SettingRealsFromPositiveInts(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SettingRealsFromPositiveInts); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SettingRealsFromPositiveInts other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SettingRealsFromPositiveInts other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class SettingRealsFromNegativeInts : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SettingRealsFromNegativeInts()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[11]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromNegativeInts() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromNegativeInts(SettingRealsFromNegativeInts other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SettingRealsFromNegativeInts Clone() { - return new SettingRealsFromNegativeInts(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SettingRealsFromNegativeInts); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SettingRealsFromNegativeInts other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SettingRealsFromNegativeInts other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class ComplexOptionType1 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ComplexOptionType1()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[12]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType1() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType1(ComplexOptionType1 other) : this() { - foo_ = other.foo_; - foo2_ = other.foo2_; - foo3_ = other.foo3_; - foo4_ = other.foo4_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType1 Clone() { - return new ComplexOptionType1(this); - } - - /// Field number for the "foo" field. - public const int FooFieldNumber = 1; - private int foo_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Foo { - get { return foo_; } - set { - foo_ = value; - } - } - - /// Field number for the "foo2" field. - public const int Foo2FieldNumber = 2; - private int foo2_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Foo2 { - get { return foo2_; } - set { - foo2_ = value; - } - } - - /// Field number for the "foo3" field. - public const int Foo3FieldNumber = 3; - private int foo3_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Foo3 { - get { return foo3_; } - set { - foo3_ = value; - } - } - - /// Field number for the "foo4" field. - public const int Foo4FieldNumber = 4; - private static readonly pb::FieldCodec _repeated_foo4_codec - = pb::FieldCodec.ForInt32(34); - private readonly pbc::RepeatedField foo4_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Foo4 { - get { return foo4_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ComplexOptionType1); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ComplexOptionType1 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Foo != other.Foo) return false; - if (Foo2 != other.Foo2) return false; - if (Foo3 != other.Foo3) return false; - if(!foo4_.Equals(other.foo4_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Foo != 0) hash ^= Foo.GetHashCode(); - if (Foo2 != 0) hash ^= Foo2.GetHashCode(); - if (Foo3 != 0) hash ^= Foo3.GetHashCode(); - hash ^= foo4_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Foo != 0) { - output.WriteRawTag(8); - output.WriteInt32(Foo); - } - if (Foo2 != 0) { - output.WriteRawTag(16); - output.WriteInt32(Foo2); - } - if (Foo3 != 0) { - output.WriteRawTag(24); - output.WriteInt32(Foo3); - } - foo4_.WriteTo(output, _repeated_foo4_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Foo != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo); - } - if (Foo2 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo2); - } - if (Foo3 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Foo3); - } - size += foo4_.CalculateSize(_repeated_foo4_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ComplexOptionType1 other) { - if (other == null) { - return; - } - if (other.Foo != 0) { - Foo = other.Foo; - } - if (other.Foo2 != 0) { - Foo2 = other.Foo2; - } - if (other.Foo3 != 0) { - Foo3 = other.Foo3; - } - foo4_.Add(other.foo4_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Foo = input.ReadInt32(); - break; - } - case 16: { - Foo2 = input.ReadInt32(); - break; - } - case 24: { - Foo3 = input.ReadInt32(); - break; - } - case 34: - case 32: { - foo4_.AddEntriesFrom(input, _repeated_foo4_codec); - break; - } - } - } - } - - } - - public sealed partial class ComplexOptionType2 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ComplexOptionType2()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[13]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType2() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType2(ComplexOptionType2 other) : this() { - bar_ = other.bar_ != null ? other.bar_.Clone() : null; - baz_ = other.baz_; - fred_ = other.fred_ != null ? other.fred_.Clone() : null; - barney_ = other.barney_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType2 Clone() { - return new ComplexOptionType2(this); - } - - /// Field number for the "bar" field. - public const int BarFieldNumber = 1; - private global::UnitTest.Issues.TestProtos.ComplexOptionType1 bar_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.ComplexOptionType1 Bar { - get { return bar_; } - set { - bar_ = value; - } - } - - /// Field number for the "baz" field. - public const int BazFieldNumber = 2; - private int baz_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Baz { - get { return baz_; } - set { - baz_ = value; - } - } - - /// Field number for the "fred" field. - public const int FredFieldNumber = 3; - private global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 fred_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4 Fred { - get { return fred_; } - set { - fred_ = value; - } - } - - /// Field number for the "barney" field. - public const int BarneyFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_barney_codec - = pb::FieldCodec.ForMessage(34, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser); - private readonly pbc::RepeatedField barney_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Barney { - get { return barney_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ComplexOptionType2); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ComplexOptionType2 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(Bar, other.Bar)) return false; - if (Baz != other.Baz) return false; - if (!object.Equals(Fred, other.Fred)) return false; - if(!barney_.Equals(other.barney_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (bar_ != null) hash ^= Bar.GetHashCode(); - if (Baz != 0) hash ^= Baz.GetHashCode(); - if (fred_ != null) hash ^= Fred.GetHashCode(); - hash ^= barney_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (bar_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Bar); - } - if (Baz != 0) { - output.WriteRawTag(16); - output.WriteInt32(Baz); - } - if (fred_ != null) { - output.WriteRawTag(26); - output.WriteMessage(Fred); - } - barney_.WriteTo(output, _repeated_barney_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (bar_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bar); - } - if (Baz != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Baz); - } - if (fred_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Fred); - } - size += barney_.CalculateSize(_repeated_barney_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ComplexOptionType2 other) { - if (other == null) { - return; - } - if (other.bar_ != null) { - if (bar_ == null) { - Bar = new global::UnitTest.Issues.TestProtos.ComplexOptionType1(); - } - Bar.MergeFrom(other.Bar); - } - if (other.Baz != 0) { - Baz = other.Baz; - } - if (other.fred_ != null) { - if (fred_ == null) { - Fred = new global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4(); - } - Fred.MergeFrom(other.Fred); - } - barney_.Add(other.barney_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (bar_ == null) { - Bar = new global::UnitTest.Issues.TestProtos.ComplexOptionType1(); - } - input.ReadMessage(Bar); - break; - } - case 16: { - Baz = input.ReadInt32(); - break; - } - case 26: { - if (fred_ == null) { - Fred = new global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4(); - } - input.ReadMessage(Fred); - break; - } - case 34: { - barney_.AddEntriesFrom(input, _repeated_barney_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the ComplexOptionType2 message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public sealed partial class ComplexOptionType4 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ComplexOptionType4()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.ComplexOptionType2.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType4() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType4(ComplexOptionType4 other) : this() { - waldo_ = other.waldo_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType4 Clone() { - return new ComplexOptionType4(this); - } - - /// Field number for the "waldo" field. - public const int WaldoFieldNumber = 1; - private int waldo_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Waldo { - get { return waldo_; } - set { - waldo_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ComplexOptionType4); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ComplexOptionType4 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Waldo != other.Waldo) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Waldo != 0) hash ^= Waldo.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Waldo != 0) { - output.WriteRawTag(8); - output.WriteInt32(Waldo); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Waldo != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Waldo); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ComplexOptionType4 other) { - if (other == null) { - return; - } - if (other.Waldo != 0) { - Waldo = other.Waldo; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Waldo = input.ReadInt32(); - break; - } - } - } - } - - #region Extensions - /// Container for extensions for other messages declared in the ComplexOptionType4 message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - internal static partial class Extensions { - public static readonly pb::Extension ComplexOpt4 = - new pb::Extension(7633546, pb::FieldCodec.ForMessage(61068370, global::UnitTest.Issues.TestProtos.ComplexOptionType2.Types.ComplexOptionType4.Parser)); - } - #endregion - - } - - } - #endregion - - } - - public sealed partial class ComplexOptionType3 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ComplexOptionType3()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[14]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType3() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType3(ComplexOptionType3 other) : this() { - qux_ = other.qux_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ComplexOptionType3 Clone() { - return new ComplexOptionType3(this); - } - - /// Field number for the "qux" field. - public const int QuxFieldNumber = 1; - private int qux_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Qux { - get { return qux_; } - set { - qux_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ComplexOptionType3); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ComplexOptionType3 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Qux != other.Qux) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Qux != 0) hash ^= Qux.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Qux != 0) { - output.WriteRawTag(8); - output.WriteInt32(Qux); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Qux != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Qux); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ComplexOptionType3 other) { - if (other == null) { - return; - } - if (other.Qux != 0) { - Qux = other.Qux; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Qux = input.ReadInt32(); - break; - } - } - } - } - - } - - /// - /// Note that we try various different ways of naming the same extension. - /// - public sealed partial class VariousComplexOptions : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new VariousComplexOptions()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[15]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VariousComplexOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VariousComplexOptions(VariousComplexOptions other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public VariousComplexOptions Clone() { - return new VariousComplexOptions(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as VariousComplexOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(VariousComplexOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(VariousComplexOptions other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - /// - /// A helper type used to test aggregate option parsing - /// - public sealed partial class Aggregate : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Aggregate()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[16]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Aggregate() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Aggregate(Aggregate other) : this() { - i_ = other.i_; - s_ = other.s_; - sub_ = other.sub_ != null ? other.sub_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Aggregate Clone() { - return new Aggregate(this); - } - - /// Field number for the "i" field. - public const int IFieldNumber = 1; - private int i_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int I { - get { return i_; } - set { - i_ = value; - } - } - - /// Field number for the "s" field. - public const int SFieldNumber = 2; - private string s_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string S { - get { return s_; } - set { - s_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "sub" field. - public const int SubFieldNumber = 3; - private global::UnitTest.Issues.TestProtos.Aggregate sub_; - /// - /// A nested object - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.Aggregate Sub { - get { return sub_; } - set { - sub_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Aggregate); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Aggregate other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (I != other.I) return false; - if (S != other.S) return false; - if (!object.Equals(Sub, other.Sub)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (I != 0) hash ^= I.GetHashCode(); - if (S.Length != 0) hash ^= S.GetHashCode(); - if (sub_ != null) hash ^= Sub.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (I != 0) { - output.WriteRawTag(8); - output.WriteInt32(I); - } - if (S.Length != 0) { - output.WriteRawTag(18); - output.WriteString(S); - } - if (sub_ != null) { - output.WriteRawTag(26); - output.WriteMessage(Sub); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (I != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(I); - } - if (S.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(S); - } - if (sub_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Sub); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Aggregate other) { - if (other == null) { - return; - } - if (other.I != 0) { - I = other.I; - } - if (other.S.Length != 0) { - S = other.S; - } - if (other.sub_ != null) { - if (sub_ == null) { - Sub = new global::UnitTest.Issues.TestProtos.Aggregate(); - } - Sub.MergeFrom(other.Sub); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - I = input.ReadInt32(); - break; - } - case 18: { - S = input.ReadString(); - break; - } - case 26: { - if (sub_ == null) { - Sub = new global::UnitTest.Issues.TestProtos.Aggregate(); - } - input.ReadMessage(Sub); - break; - } - } - } - } - - } - - public sealed partial class AggregateMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new AggregateMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[17]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AggregateMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AggregateMessage(AggregateMessage other) : this() { - fieldname_ = other.fieldname_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public AggregateMessage Clone() { - return new AggregateMessage(this); - } - - /// Field number for the "fieldname" field. - public const int FieldnameFieldNumber = 1; - private int fieldname_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Fieldname { - get { return fieldname_; } - set { - fieldname_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as AggregateMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(AggregateMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Fieldname != other.Fieldname) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Fieldname != 0) hash ^= Fieldname.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Fieldname != 0) { - output.WriteRawTag(8); - output.WriteInt32(Fieldname); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Fieldname != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Fieldname); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(AggregateMessage other) { - if (other == null) { - return; - } - if (other.Fieldname != 0) { - Fieldname = other.Fieldname; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Fieldname = input.ReadInt32(); - break; - } - } - } - } - - } - - /// - /// Test custom options for nested type. - /// - public sealed partial class NestedOptionType : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedOptionType()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestCustomOptionsProto3Reflection.Descriptor.MessageTypes[18]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOptionType() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOptionType(NestedOptionType other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOptionType Clone() { - return new NestedOptionType(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedOptionType); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedOptionType other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedOptionType other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - #region Nested types - /// Container for nested types declared in the NestedOptionType message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum NestedEnum { - [pbr::OriginalName("UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("NESTED_ENUM_VALUE")] Value = 1, - } - - public sealed partial class NestedMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.NestedOptionType.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage(NestedMessage other) : this() { - nestedField_ = other.nestedField_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage Clone() { - return new NestedMessage(this); - } - - /// Field number for the "nested_field" field. - public const int NestedFieldFieldNumber = 1; - private int nestedField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int NestedField { - get { return nestedField_; } - set { - nestedField_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (NestedField != other.NestedField) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (NestedField != 0) hash ^= NestedField.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (NestedField != 0) { - output.WriteRawTag(8); - output.WriteInt32(NestedField); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (NestedField != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(NestedField); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedMessage other) { - if (other == null) { - return; - } - if (other.NestedField != 0) { - NestedField = other.NestedField; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - NestedField = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs deleted file mode 100644 index 19a1a34..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportProto3.cs +++ /dev/null @@ -1,186 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: unittest_import_proto3.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.TestProtos { - - /// Holder for reflection information generated from unittest_import_proto3.proto - public static partial class UnittestImportProto3Reflection { - - #region Descriptor - /// File descriptor for unittest_import_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestImportProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chx1bml0dGVzdF9pbXBvcnRfcHJvdG8zLnByb3RvEhhwcm90b2J1Zl91bml0", - "dGVzdF9pbXBvcnQaI3VuaXR0ZXN0X2ltcG9ydF9wdWJsaWNfcHJvdG8zLnBy", - "b3RvIhoKDUltcG9ydE1lc3NhZ2USCQoBZBgBIAEoBSpZCgpJbXBvcnRFbnVt", - "EhsKF0lNUE9SVF9FTlVNX1VOU1BFQ0lGSUVEEAASDgoKSU1QT1JUX0ZPTxAH", - "Eg4KCklNUE9SVF9CQVIQCBIOCgpJTVBPUlRfQkFaEAlCHaoCGkdvb2dsZS5Q", - "cm90b2J1Zi5UZXN0UHJvdG9zUABiBnByb3RvMw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.TestProtos.UnittestImportPublicProto3Reflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.TestProtos.ImportEnum), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.ImportMessage), global::Google.Protobuf.TestProtos.ImportMessage.Parser, new[]{ "D" }, null, null, null, null) - })); - } - #endregion - - } - #region Enums - public enum ImportEnum { - [pbr::OriginalName("IMPORT_ENUM_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("IMPORT_FOO")] ImportFoo = 7, - [pbr::OriginalName("IMPORT_BAR")] ImportBar = 8, - [pbr::OriginalName("IMPORT_BAZ")] ImportBaz = 9, - } - - #endregion - - #region Messages - public sealed partial class ImportMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ImportMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestImportProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ImportMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ImportMessage(ImportMessage other) : this() { - d_ = other.d_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ImportMessage Clone() { - return new ImportMessage(this); - } - - /// Field number for the "d" field. - public const int DFieldNumber = 1; - private int d_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int D { - get { return d_; } - set { - d_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ImportMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ImportMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (D != other.D) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (D != 0) hash ^= D.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (D != 0) { - output.WriteRawTag(8); - output.WriteInt32(D); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (D != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(D); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ImportMessage other) { - if (other == null) { - return; - } - if (other.D != 0) { - D = other.D; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - D = input.ReadInt32(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs deleted file mode 100644 index a455655..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestImportPublicProto3.cs +++ /dev/null @@ -1,174 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: unittest_import_public_proto3.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.TestProtos { - - /// Holder for reflection information generated from unittest_import_public_proto3.proto - public static partial class UnittestImportPublicProto3Reflection { - - #region Descriptor - /// File descriptor for unittest_import_public_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestImportPublicProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "CiN1bml0dGVzdF9pbXBvcnRfcHVibGljX3Byb3RvMy5wcm90bxIYcHJvdG9i", - "dWZfdW5pdHRlc3RfaW1wb3J0IiAKE1B1YmxpY0ltcG9ydE1lc3NhZ2USCQoB", - "ZRgBIAEoBUIdqgIaR29vZ2xlLlByb3RvYnVmLlRlc3RQcm90b3NiBnByb3Rv", - "Mw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.PublicImportMessage), global::Google.Protobuf.TestProtos.PublicImportMessage.Parser, new[]{ "E" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - public sealed partial class PublicImportMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new PublicImportMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestImportPublicProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PublicImportMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PublicImportMessage(PublicImportMessage other) : this() { - e_ = other.e_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public PublicImportMessage Clone() { - return new PublicImportMessage(this); - } - - /// Field number for the "e" field. - public const int EFieldNumber = 1; - private int e_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int E { - get { return e_; } - set { - e_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as PublicImportMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(PublicImportMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (E != other.E) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (E != 0) hash ^= E.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (E != 0) { - output.WriteRawTag(8); - output.WriteInt32(E); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (E != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(E); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(PublicImportMessage other) { - if (other == null) { - return; - } - if (other.E != 0) { - E = other.E; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - E = input.ReadInt32(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs deleted file mode 100644 index f3f40c6..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestIssues.cs +++ /dev/null @@ -1,2239 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: unittest_issues.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 UnitTest.Issues.TestProtos { - - /// Holder for reflection information generated from unittest_issues.proto - public static partial class UnittestIssuesReflection { - - #region Descriptor - /// File descriptor for unittest_issues.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestIssuesReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChV1bml0dGVzdF9pc3N1ZXMucHJvdG8SD3VuaXR0ZXN0X2lzc3VlcyInCghJ", - "c3N1ZTMwNxobCgpOZXN0ZWRPbmNlGg0KC05lc3RlZFR3aWNlIrABChNOZWdh", - "dGl2ZUVudW1NZXNzYWdlEiwKBXZhbHVlGAEgASgOMh0udW5pdHRlc3RfaXNz", - "dWVzLk5lZ2F0aXZlRW51bRIxCgZ2YWx1ZXMYAiADKA4yHS51bml0dGVzdF9p", - "c3N1ZXMuTmVnYXRpdmVFbnVtQgIQABI4Cg1wYWNrZWRfdmFsdWVzGAMgAygO", - "Mh0udW5pdHRlc3RfaXNzdWVzLk5lZ2F0aXZlRW51bUICEAEiEQoPRGVwcmVj", - "YXRlZENoaWxkIrkCChdEZXByZWNhdGVkRmllbGRzTWVzc2FnZRIaCg5Qcmlt", - "aXRpdmVWYWx1ZRgBIAEoBUICGAESGgoOUHJpbWl0aXZlQXJyYXkYAiADKAVC", - "AhgBEjoKDE1lc3NhZ2VWYWx1ZRgDIAEoCzIgLnVuaXR0ZXN0X2lzc3Vlcy5E", - "ZXByZWNhdGVkQ2hpbGRCAhgBEjoKDE1lc3NhZ2VBcnJheRgEIAMoCzIgLnVu", - "aXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVkQ2hpbGRCAhgBEjYKCUVudW1WYWx1", - "ZRgFIAEoDjIfLnVuaXR0ZXN0X2lzc3Vlcy5EZXByZWNhdGVkRW51bUICGAES", - "NgoJRW51bUFycmF5GAYgAygOMh8udW5pdHRlc3RfaXNzdWVzLkRlcHJlY2F0", - "ZWRFbnVtQgIYASIZCglJdGVtRmllbGQSDAoEaXRlbRgBIAEoBSJECg1SZXNl", - "cnZlZE5hbWVzEg0KBXR5cGVzGAEgASgFEhIKCmRlc2NyaXB0b3IYAiABKAUa", - "EAoOU29tZU5lc3RlZFR5cGUioAEKFVRlc3RKc29uRmllbGRPcmRlcmluZxIT", - "CgtwbGFpbl9pbnQzMhgEIAEoBRITCglvMV9zdHJpbmcYAiABKAlIABISCghv", - "MV9pbnQzMhgFIAEoBUgAEhQKDHBsYWluX3N0cmluZxgBIAEoCRISCghvMl9p", - "bnQzMhgGIAEoBUgBEhMKCW8yX3N0cmluZxgDIAEoCUgBQgQKAm8xQgQKAm8y", - "IksKDFRlc3RKc29uTmFtZRIMCgRuYW1lGAEgASgJEhkKC2Rlc2NyaXB0aW9u", - "GAIgASgJUgRkZXNjEhIKBGd1aWQYAyABKAlSBGV4aWQifwoMT25lb2ZNZXJn", - "aW5nEg4KBHRleHQYASABKAlIABI2CgZuZXN0ZWQYAiABKAsyJC51bml0dGVz", - "dF9pc3N1ZXMuT25lb2ZNZXJnaW5nLk5lc3RlZEgAGh4KBk5lc3RlZBIJCgF4", - "GAEgASgFEgkKAXkYAiABKAVCBwoFdmFsdWUqVQoMTmVnYXRpdmVFbnVtEhYK", - "Ek5FR0FUSVZFX0VOVU1fWkVSTxAAEhYKCUZpdmVCZWxvdxD7//////////8B", - "EhUKCE1pbnVzT25lEP///////////wEqLgoORGVwcmVjYXRlZEVudW0SEwoP", - "REVQUkVDQVRFRF9aRVJPEAASBwoDb25lEAFCHaoCGlVuaXRUZXN0Lklzc3Vl", - "cy5UZXN0UHJvdG9zYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::UnitTest.Issues.TestProtos.NegativeEnum), typeof(global::UnitTest.Issues.TestProtos.DeprecatedEnum), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Issue307), global::UnitTest.Issues.TestProtos.Issue307.Parser, null, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce), global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Parser, null, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Types.NestedTwice), global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Types.NestedTwice.Parser, null, null, null, null, null)})}), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.NegativeEnumMessage), global::UnitTest.Issues.TestProtos.NegativeEnumMessage.Parser, new[]{ "Value", "Values", "PackedValues" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DeprecatedChild), global::UnitTest.Issues.TestProtos.DeprecatedChild.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage), global::UnitTest.Issues.TestProtos.DeprecatedFieldsMessage.Parser, new[]{ "PrimitiveValue", "PrimitiveArray", "MessageValue", "MessageArray", "EnumValue", "EnumArray" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ItemField), global::UnitTest.Issues.TestProtos.ItemField.Parser, new[]{ "Item" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ReservedNames), global::UnitTest.Issues.TestProtos.ReservedNames.Parser, new[]{ "Types_", "Descriptor_" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.ReservedNames.Types.SomeNestedType), global::UnitTest.Issues.TestProtos.ReservedNames.Types.SomeNestedType.Parser, null, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.TestJsonFieldOrdering), global::UnitTest.Issues.TestProtos.TestJsonFieldOrdering.Parser, new[]{ "PlainInt32", "O1String", "O1Int32", "PlainString", "O2Int32", "O2String" }, new[]{ "O1", "O2" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.TestJsonName), global::UnitTest.Issues.TestProtos.TestJsonName.Parser, new[]{ "Name", "Description", "Guid" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.OneofMerging), global::UnitTest.Issues.TestProtos.OneofMerging.Parser, new[]{ "Text", "Nested" }, new[]{ "Value" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested), global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested.Parser, new[]{ "X", "Y" }, null, null, null, null)}) - })); - } - #endregion - - } - #region Enums - public enum NegativeEnum { - [pbr::OriginalName("NEGATIVE_ENUM_ZERO")] Zero = 0, - [pbr::OriginalName("FiveBelow")] FiveBelow = -5, - [pbr::OriginalName("MinusOne")] MinusOne = -1, - } - - public enum DeprecatedEnum { - [pbr::OriginalName("DEPRECATED_ZERO")] DeprecatedZero = 0, - [pbr::OriginalName("one")] One = 1, - } - - #endregion - - #region Messages - /// - /// Issue 307: when generating doubly-nested types, any references - /// should be of the form A.Types.B.Types.C. - /// - public sealed partial class Issue307 : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Issue307()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Issue307() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Issue307(Issue307 other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Issue307 Clone() { - return new Issue307(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Issue307); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Issue307 other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Issue307 other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - #region Nested types - /// Container for nested types declared in the Issue307 message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public sealed partial class NestedOnce : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedOnce()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.Issue307.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOnce() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOnce(NestedOnce other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedOnce Clone() { - return new NestedOnce(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedOnce); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedOnce other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedOnce other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - #region Nested types - /// Container for nested types declared in the NestedOnce message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public sealed partial class NestedTwice : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedTwice()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.Issue307.Types.NestedOnce.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTwice() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTwice(NestedTwice other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTwice Clone() { - return new NestedTwice(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedTwice); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedTwice other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedTwice other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - } - #endregion - - } - - } - #endregion - - } - - public sealed partial class NegativeEnumMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NegativeEnumMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NegativeEnumMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NegativeEnumMessage(NegativeEnumMessage other) : this() { - value_ = other.value_; - values_ = other.values_.Clone(); - packedValues_ = other.packedValues_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NegativeEnumMessage Clone() { - return new NegativeEnumMessage(this); - } - - /// Field number for the "value" field. - public const int ValueFieldNumber = 1; - private global::UnitTest.Issues.TestProtos.NegativeEnum value_ = global::UnitTest.Issues.TestProtos.NegativeEnum.Zero; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.NegativeEnum Value { - get { return value_; } - set { - value_ = value; - } - } - - /// Field number for the "values" field. - public const int ValuesFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_values_codec - = pb::FieldCodec.ForEnum(16, x => (int) x, x => (global::UnitTest.Issues.TestProtos.NegativeEnum) x); - private readonly pbc::RepeatedField values_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Values { - get { return values_; } - } - - /// Field number for the "packed_values" field. - public const int PackedValuesFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_packedValues_codec - = pb::FieldCodec.ForEnum(26, x => (int) x, x => (global::UnitTest.Issues.TestProtos.NegativeEnum) x); - private readonly pbc::RepeatedField packedValues_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedValues { - get { return packedValues_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NegativeEnumMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NegativeEnumMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Value != other.Value) return false; - if(!values_.Equals(other.values_)) return false; - if(!packedValues_.Equals(other.packedValues_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.Zero) hash ^= Value.GetHashCode(); - hash ^= values_.GetHashCode(); - hash ^= packedValues_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.Zero) { - output.WriteRawTag(8); - output.WriteEnum((int) Value); - } - values_.WriteTo(output, _repeated_values_codec); - packedValues_.WriteTo(output, _repeated_packedValues_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Value != global::UnitTest.Issues.TestProtos.NegativeEnum.Zero) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value); - } - size += values_.CalculateSize(_repeated_values_codec); - size += packedValues_.CalculateSize(_repeated_packedValues_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NegativeEnumMessage other) { - if (other == null) { - return; - } - if (other.Value != global::UnitTest.Issues.TestProtos.NegativeEnum.Zero) { - Value = other.Value; - } - values_.Add(other.values_); - packedValues_.Add(other.packedValues_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Value = (global::UnitTest.Issues.TestProtos.NegativeEnum) input.ReadEnum(); - break; - } - case 18: - case 16: { - values_.AddEntriesFrom(input, _repeated_values_codec); - break; - } - case 26: - case 24: { - packedValues_.AddEntriesFrom(input, _repeated_packedValues_codec); - break; - } - } - } - } - - } - - public sealed partial class DeprecatedChild : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DeprecatedChild()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedChild() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedChild(DeprecatedChild other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedChild Clone() { - return new DeprecatedChild(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as DeprecatedChild); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(DeprecatedChild other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(DeprecatedChild other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class DeprecatedFieldsMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DeprecatedFieldsMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedFieldsMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedFieldsMessage(DeprecatedFieldsMessage other) : this() { - primitiveValue_ = other.primitiveValue_; - primitiveArray_ = other.primitiveArray_.Clone(); - messageValue_ = other.messageValue_ != null ? other.messageValue_.Clone() : null; - messageArray_ = other.messageArray_.Clone(); - enumValue_ = other.enumValue_; - enumArray_ = other.enumArray_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DeprecatedFieldsMessage Clone() { - return new DeprecatedFieldsMessage(this); - } - - /// Field number for the "PrimitiveValue" field. - public const int PrimitiveValueFieldNumber = 1; - private int primitiveValue_; - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int PrimitiveValue { - get { return primitiveValue_; } - set { - primitiveValue_ = value; - } - } - - /// Field number for the "PrimitiveArray" field. - public const int PrimitiveArrayFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_primitiveArray_codec - = pb::FieldCodec.ForInt32(18); - private readonly pbc::RepeatedField primitiveArray_ = new pbc::RepeatedField(); - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PrimitiveArray { - get { return primitiveArray_; } - } - - /// Field number for the "MessageValue" field. - public const int MessageValueFieldNumber = 3; - private global::UnitTest.Issues.TestProtos.DeprecatedChild messageValue_; - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.DeprecatedChild MessageValue { - get { return messageValue_; } - set { - messageValue_ = value; - } - } - - /// Field number for the "MessageArray" field. - public const int MessageArrayFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_messageArray_codec - = pb::FieldCodec.ForMessage(34, global::UnitTest.Issues.TestProtos.DeprecatedChild.Parser); - private readonly pbc::RepeatedField messageArray_ = new pbc::RepeatedField(); - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField MessageArray { - get { return messageArray_; } - } - - /// Field number for the "EnumValue" field. - public const int EnumValueFieldNumber = 5; - private global::UnitTest.Issues.TestProtos.DeprecatedEnum enumValue_ = global::UnitTest.Issues.TestProtos.DeprecatedEnum.DeprecatedZero; - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.DeprecatedEnum EnumValue { - get { return enumValue_; } - set { - enumValue_ = value; - } - } - - /// Field number for the "EnumArray" field. - public const int EnumArrayFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_enumArray_codec - = pb::FieldCodec.ForEnum(50, x => (int) x, x => (global::UnitTest.Issues.TestProtos.DeprecatedEnum) x); - private readonly pbc::RepeatedField enumArray_ = new pbc::RepeatedField(); - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField EnumArray { - get { return enumArray_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as DeprecatedFieldsMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(DeprecatedFieldsMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (PrimitiveValue != other.PrimitiveValue) return false; - if(!primitiveArray_.Equals(other.primitiveArray_)) return false; - if (!object.Equals(MessageValue, other.MessageValue)) return false; - if(!messageArray_.Equals(other.messageArray_)) return false; - if (EnumValue != other.EnumValue) return false; - if(!enumArray_.Equals(other.enumArray_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (PrimitiveValue != 0) hash ^= PrimitiveValue.GetHashCode(); - hash ^= primitiveArray_.GetHashCode(); - if (messageValue_ != null) hash ^= MessageValue.GetHashCode(); - hash ^= messageArray_.GetHashCode(); - if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DeprecatedZero) hash ^= EnumValue.GetHashCode(); - hash ^= enumArray_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (PrimitiveValue != 0) { - output.WriteRawTag(8); - output.WriteInt32(PrimitiveValue); - } - primitiveArray_.WriteTo(output, _repeated_primitiveArray_codec); - if (messageValue_ != null) { - output.WriteRawTag(26); - output.WriteMessage(MessageValue); - } - messageArray_.WriteTo(output, _repeated_messageArray_codec); - if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DeprecatedZero) { - output.WriteRawTag(40); - output.WriteEnum((int) EnumValue); - } - enumArray_.WriteTo(output, _repeated_enumArray_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (PrimitiveValue != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(PrimitiveValue); - } - size += primitiveArray_.CalculateSize(_repeated_primitiveArray_codec); - if (messageValue_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageValue); - } - size += messageArray_.CalculateSize(_repeated_messageArray_codec); - if (EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DeprecatedZero) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumValue); - } - size += enumArray_.CalculateSize(_repeated_enumArray_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(DeprecatedFieldsMessage other) { - if (other == null) { - return; - } - if (other.PrimitiveValue != 0) { - PrimitiveValue = other.PrimitiveValue; - } - primitiveArray_.Add(other.primitiveArray_); - if (other.messageValue_ != null) { - if (messageValue_ == null) { - MessageValue = new global::UnitTest.Issues.TestProtos.DeprecatedChild(); - } - MessageValue.MergeFrom(other.MessageValue); - } - messageArray_.Add(other.messageArray_); - if (other.EnumValue != global::UnitTest.Issues.TestProtos.DeprecatedEnum.DeprecatedZero) { - EnumValue = other.EnumValue; - } - enumArray_.Add(other.enumArray_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - PrimitiveValue = input.ReadInt32(); - break; - } - case 18: - case 16: { - primitiveArray_.AddEntriesFrom(input, _repeated_primitiveArray_codec); - break; - } - case 26: { - if (messageValue_ == null) { - MessageValue = new global::UnitTest.Issues.TestProtos.DeprecatedChild(); - } - input.ReadMessage(MessageValue); - break; - } - case 34: { - messageArray_.AddEntriesFrom(input, _repeated_messageArray_codec); - break; - } - case 40: { - EnumValue = (global::UnitTest.Issues.TestProtos.DeprecatedEnum) input.ReadEnum(); - break; - } - case 50: - case 48: { - enumArray_.AddEntriesFrom(input, _repeated_enumArray_codec); - break; - } - } - } - } - - } - - /// - /// Issue 45: http://code.google.com/p/protobuf-csharp-port/issues/detail?id=45 - /// - public sealed partial class ItemField : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ItemField()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ItemField() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ItemField(ItemField other) : this() { - item_ = other.item_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ItemField Clone() { - return new ItemField(this); - } - - /// Field number for the "item" field. - public const int ItemFieldNumber = 1; - private int item_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Item { - get { return item_; } - set { - item_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ItemField); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ItemField other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Item != other.Item) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Item != 0) hash ^= Item.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Item != 0) { - output.WriteRawTag(8); - output.WriteInt32(Item); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Item != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Item); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ItemField other) { - if (other == null) { - return; - } - if (other.Item != 0) { - Item = other.Item; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Item = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class ReservedNames : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ReservedNames()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedNames() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedNames(ReservedNames other) : this() { - types_ = other.types_; - descriptor_ = other.descriptor_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedNames Clone() { - return new ReservedNames(this); - } - - /// Field number for the "types" field. - public const int Types_FieldNumber = 1; - private int types_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Types_ { - get { return types_; } - set { - types_ = value; - } - } - - /// Field number for the "descriptor" field. - public const int Descriptor_FieldNumber = 2; - private int descriptor_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Descriptor_ { - get { return descriptor_; } - set { - descriptor_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ReservedNames); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ReservedNames other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Types_ != other.Types_) return false; - if (Descriptor_ != other.Descriptor_) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Types_ != 0) hash ^= Types_.GetHashCode(); - if (Descriptor_ != 0) hash ^= Descriptor_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Types_ != 0) { - output.WriteRawTag(8); - output.WriteInt32(Types_); - } - if (Descriptor_ != 0) { - output.WriteRawTag(16); - output.WriteInt32(Descriptor_); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Types_ != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Types_); - } - if (Descriptor_ != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Descriptor_); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ReservedNames other) { - if (other == null) { - return; - } - if (other.Types_ != 0) { - Types_ = other.Types_; - } - if (other.Descriptor_ != 0) { - Descriptor_ = other.Descriptor_; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Types_ = input.ReadInt32(); - break; - } - case 16: { - Descriptor_ = input.ReadInt32(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the ReservedNames message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Force a nested type called Types - /// - public sealed partial class SomeNestedType : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SomeNestedType()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.ReservedNames.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SomeNestedType() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SomeNestedType(SomeNestedType other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SomeNestedType Clone() { - return new SomeNestedType(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SomeNestedType); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SomeNestedType other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SomeNestedType other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - } - #endregion - - } - - /// - /// These fields are deliberately not declared in numeric - /// order, and the oneof fields aren't contiguous either. - /// This allows for reasonably robust tests of JSON output - /// ordering. - /// TestFieldOrderings in unittest_proto3.proto is similar, - /// but doesn't include oneofs. - /// TODO: Consider adding oneofs to TestFieldOrderings, although - /// that will require fixing other tests in multiple platforms. - /// Alternatively, consider just adding this to - /// unittest_proto3.proto if multiple platforms want it. - /// - public sealed partial class TestJsonFieldOrdering : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestJsonFieldOrdering()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonFieldOrdering() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonFieldOrdering(TestJsonFieldOrdering other) : this() { - plainInt32_ = other.plainInt32_; - plainString_ = other.plainString_; - switch (other.O1Case) { - case O1OneofCase.O1String: - O1String = other.O1String; - break; - case O1OneofCase.O1Int32: - O1Int32 = other.O1Int32; - break; - } - - switch (other.O2Case) { - case O2OneofCase.O2Int32: - O2Int32 = other.O2Int32; - break; - case O2OneofCase.O2String: - O2String = other.O2String; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonFieldOrdering Clone() { - return new TestJsonFieldOrdering(this); - } - - /// Field number for the "plain_int32" field. - public const int PlainInt32FieldNumber = 4; - private int plainInt32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int PlainInt32 { - get { return plainInt32_; } - set { - plainInt32_ = value; - } - } - - /// Field number for the "o1_string" field. - public const int O1StringFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string O1String { - get { return o1Case_ == O1OneofCase.O1String ? (string) o1_ : ""; } - set { - o1_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - o1Case_ = O1OneofCase.O1String; - } - } - - /// Field number for the "o1_int32" field. - public const int O1Int32FieldNumber = 5; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int O1Int32 { - get { return o1Case_ == O1OneofCase.O1Int32 ? (int) o1_ : 0; } - set { - o1_ = value; - o1Case_ = O1OneofCase.O1Int32; - } - } - - /// Field number for the "plain_string" field. - public const int PlainStringFieldNumber = 1; - private string plainString_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string PlainString { - get { return plainString_; } - set { - plainString_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "o2_int32" field. - public const int O2Int32FieldNumber = 6; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int O2Int32 { - get { return o2Case_ == O2OneofCase.O2Int32 ? (int) o2_ : 0; } - set { - o2_ = value; - o2Case_ = O2OneofCase.O2Int32; - } - } - - /// Field number for the "o2_string" field. - public const int O2StringFieldNumber = 3; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string O2String { - get { return o2Case_ == O2OneofCase.O2String ? (string) o2_ : ""; } - set { - o2_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - o2Case_ = O2OneofCase.O2String; - } - } - - private object o1_; - /// Enum of possible cases for the "o1" oneof. - public enum O1OneofCase { - None = 0, - O1String = 2, - O1Int32 = 5, - } - private O1OneofCase o1Case_ = O1OneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public O1OneofCase O1Case { - get { return o1Case_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearO1() { - o1Case_ = O1OneofCase.None; - o1_ = null; - } - - private object o2_; - /// Enum of possible cases for the "o2" oneof. - public enum O2OneofCase { - None = 0, - O2Int32 = 6, - O2String = 3, - } - private O2OneofCase o2Case_ = O2OneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public O2OneofCase O2Case { - get { return o2Case_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearO2() { - o2Case_ = O2OneofCase.None; - o2_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestJsonFieldOrdering); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestJsonFieldOrdering other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (PlainInt32 != other.PlainInt32) return false; - if (O1String != other.O1String) return false; - if (O1Int32 != other.O1Int32) return false; - if (PlainString != other.PlainString) return false; - if (O2Int32 != other.O2Int32) return false; - if (O2String != other.O2String) return false; - if (O1Case != other.O1Case) return false; - if (O2Case != other.O2Case) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (PlainInt32 != 0) hash ^= PlainInt32.GetHashCode(); - if (o1Case_ == O1OneofCase.O1String) hash ^= O1String.GetHashCode(); - if (o1Case_ == O1OneofCase.O1Int32) hash ^= O1Int32.GetHashCode(); - if (PlainString.Length != 0) hash ^= PlainString.GetHashCode(); - if (o2Case_ == O2OneofCase.O2Int32) hash ^= O2Int32.GetHashCode(); - if (o2Case_ == O2OneofCase.O2String) hash ^= O2String.GetHashCode(); - hash ^= (int) o1Case_; - hash ^= (int) o2Case_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (PlainString.Length != 0) { - output.WriteRawTag(10); - output.WriteString(PlainString); - } - if (o1Case_ == O1OneofCase.O1String) { - output.WriteRawTag(18); - output.WriteString(O1String); - } - if (o2Case_ == O2OneofCase.O2String) { - output.WriteRawTag(26); - output.WriteString(O2String); - } - if (PlainInt32 != 0) { - output.WriteRawTag(32); - output.WriteInt32(PlainInt32); - } - if (o1Case_ == O1OneofCase.O1Int32) { - output.WriteRawTag(40); - output.WriteInt32(O1Int32); - } - if (o2Case_ == O2OneofCase.O2Int32) { - output.WriteRawTag(48); - output.WriteInt32(O2Int32); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (PlainInt32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(PlainInt32); - } - if (o1Case_ == O1OneofCase.O1String) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(O1String); - } - if (o1Case_ == O1OneofCase.O1Int32) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(O1Int32); - } - if (PlainString.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(PlainString); - } - if (o2Case_ == O2OneofCase.O2Int32) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(O2Int32); - } - if (o2Case_ == O2OneofCase.O2String) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(O2String); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestJsonFieldOrdering other) { - if (other == null) { - return; - } - if (other.PlainInt32 != 0) { - PlainInt32 = other.PlainInt32; - } - if (other.PlainString.Length != 0) { - PlainString = other.PlainString; - } - switch (other.O1Case) { - case O1OneofCase.O1String: - O1String = other.O1String; - break; - case O1OneofCase.O1Int32: - O1Int32 = other.O1Int32; - break; - } - - switch (other.O2Case) { - case O2OneofCase.O2Int32: - O2Int32 = other.O2Int32; - break; - case O2OneofCase.O2String: - O2String = other.O2String; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - PlainString = input.ReadString(); - break; - } - case 18: { - O1String = input.ReadString(); - break; - } - case 26: { - O2String = input.ReadString(); - break; - } - case 32: { - PlainInt32 = input.ReadInt32(); - break; - } - case 40: { - O1Int32 = input.ReadInt32(); - break; - } - case 48: { - O2Int32 = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class TestJsonName : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestJsonName()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonName() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonName(TestJsonName other) : this() { - name_ = other.name_; - description_ = other.description_; - guid_ = other.guid_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestJsonName Clone() { - return new TestJsonName(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// Message for testing the effects for of the json_name option - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "description" field. - public const int DescriptionFieldNumber = 2; - private string description_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Description { - get { return description_; } - set { - description_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "guid" field. - public const int GuidFieldNumber = 3; - private string guid_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Guid { - get { return guid_; } - set { - guid_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestJsonName); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestJsonName other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Description != other.Description) return false; - if (Guid != other.Guid) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Description.Length != 0) hash ^= Description.GetHashCode(); - if (Guid.Length != 0) hash ^= Guid.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Description.Length != 0) { - output.WriteRawTag(18); - output.WriteString(Description); - } - if (Guid.Length != 0) { - output.WriteRawTag(26); - output.WriteString(Guid); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (Description.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Description); - } - if (Guid.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Guid); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestJsonName other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.Description.Length != 0) { - Description = other.Description; - } - if (other.Guid.Length != 0) { - Guid = other.Guid; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - Description = input.ReadString(); - break; - } - case 26: { - Guid = input.ReadString(); - break; - } - } - } - } - - } - - /// - /// Issue 3200: When merging two messages which use the same - /// oneof case, which is itself a message type, the submessages should - /// be merged. - /// - public sealed partial class OneofMerging : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneofMerging()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.UnittestIssuesReflection.Descriptor.MessageTypes[8]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofMerging() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofMerging(OneofMerging other) : this() { - switch (other.ValueCase) { - case ValueOneofCase.Text: - Text = other.Text; - break; - case ValueOneofCase.Nested: - Nested = other.Nested.Clone(); - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofMerging Clone() { - return new OneofMerging(this); - } - - /// Field number for the "text" field. - public const int TextFieldNumber = 1; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Text { - get { return valueCase_ == ValueOneofCase.Text ? (string) value_ : ""; } - set { - value_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - valueCase_ = ValueOneofCase.Text; - } - } - - /// Field number for the "nested" field. - public const int NestedFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested Nested { - get { return valueCase_ == ValueOneofCase.Nested ? (global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested) value_ : null; } - set { - value_ = value; - valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Nested; - } - } - - private object value_; - /// Enum of possible cases for the "value" oneof. - public enum ValueOneofCase { - None = 0, - Text = 1, - Nested = 2, - } - private ValueOneofCase valueCase_ = ValueOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ValueOneofCase ValueCase { - get { return valueCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearValue() { - valueCase_ = ValueOneofCase.None; - value_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneofMerging); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneofMerging other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Text != other.Text) return false; - if (!object.Equals(Nested, other.Nested)) return false; - if (ValueCase != other.ValueCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (valueCase_ == ValueOneofCase.Text) hash ^= Text.GetHashCode(); - if (valueCase_ == ValueOneofCase.Nested) hash ^= Nested.GetHashCode(); - hash ^= (int) valueCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (valueCase_ == ValueOneofCase.Text) { - output.WriteRawTag(10); - output.WriteString(Text); - } - if (valueCase_ == ValueOneofCase.Nested) { - output.WriteRawTag(18); - output.WriteMessage(Nested); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (valueCase_ == ValueOneofCase.Text) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Text); - } - if (valueCase_ == ValueOneofCase.Nested) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Nested); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneofMerging other) { - if (other == null) { - return; - } - switch (other.ValueCase) { - case ValueOneofCase.Text: - Text = other.Text; - break; - case ValueOneofCase.Nested: - if (Nested == null) { - Nested = new global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested(); - } - Nested.MergeFrom(other.Nested); - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Text = input.ReadString(); - break; - } - case 18: { - global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested subBuilder = new global::UnitTest.Issues.TestProtos.OneofMerging.Types.Nested(); - if (valueCase_ == ValueOneofCase.Nested) { - subBuilder.MergeFrom(Nested); - } - input.ReadMessage(subBuilder); - Nested = subBuilder; - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the OneofMerging message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public sealed partial class Nested : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Nested()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::UnitTest.Issues.TestProtos.OneofMerging.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Nested() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Nested(Nested other) : this() { - x_ = other.x_; - y_ = other.y_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Nested Clone() { - return new Nested(this); - } - - /// Field number for the "x" field. - public const int XFieldNumber = 1; - private int x_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int X { - get { return x_; } - set { - x_ = value; - } - } - - /// Field number for the "y" field. - public const int YFieldNumber = 2; - private int y_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Y { - get { return y_; } - set { - y_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Nested); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Nested other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (X != other.X) return false; - if (Y != other.Y) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (X != 0) hash ^= X.GetHashCode(); - if (Y != 0) hash ^= Y.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (X != 0) { - output.WriteRawTag(8); - output.WriteInt32(X); - } - if (Y != 0) { - output.WriteRawTag(16); - output.WriteInt32(Y); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (X != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(X); - } - if (Y != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Y); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Nested other) { - if (other == null) { - return; - } - if (other.X != 0) { - X = other.X; - } - if (other.Y != 0) { - Y = other.Y; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - X = input.ReadInt32(); - break; - } - case 16: { - Y = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs deleted file mode 100644 index 2f489ad..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestProto3.cs +++ /dev/null @@ -1,7609 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: unittest_proto3.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.TestProtos { - - /// Holder for reflection information generated from unittest_proto3.proto - public static partial class UnittestProto3Reflection { - - #region Descriptor - /// File descriptor for unittest_proto3.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestProto3Reflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "ChV1bml0dGVzdF9wcm90bzMucHJvdG8SEnByb3RvYnVmX3VuaXR0ZXN0Mxoc", - "dW5pdHRlc3RfaW1wb3J0X3Byb3RvMy5wcm90byL5DwoMVGVzdEFsbFR5cGVz", - "EhQKDHNpbmdsZV9pbnQzMhgBIAEoBRIUCgxzaW5nbGVfaW50NjQYAiABKAMS", - "FQoNc2luZ2xlX3VpbnQzMhgDIAEoDRIVCg1zaW5nbGVfdWludDY0GAQgASgE", - "EhUKDXNpbmdsZV9zaW50MzIYBSABKBESFQoNc2luZ2xlX3NpbnQ2NBgGIAEo", - "EhIWCg5zaW5nbGVfZml4ZWQzMhgHIAEoBxIWCg5zaW5nbGVfZml4ZWQ2NBgI", - "IAEoBhIXCg9zaW5nbGVfc2ZpeGVkMzIYCSABKA8SFwoPc2luZ2xlX3NmaXhl", - "ZDY0GAogASgQEhQKDHNpbmdsZV9mbG9hdBgLIAEoAhIVCg1zaW5nbGVfZG91", - "YmxlGAwgASgBEhMKC3NpbmdsZV9ib29sGA0gASgIEhUKDXNpbmdsZV9zdHJp", - "bmcYDiABKAkSFAoMc2luZ2xlX2J5dGVzGA8gASgMEk0KFXNpbmdsZV9uZXN0", - "ZWRfbWVzc2FnZRgSIAEoCzIuLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxs", - "VHlwZXMuTmVzdGVkTWVzc2FnZRJCChZzaW5nbGVfZm9yZWlnbl9tZXNzYWdl", - "GBMgASgLMiIucHJvdG9idWZfdW5pdHRlc3QzLkZvcmVpZ25NZXNzYWdlEkYK", - "FXNpbmdsZV9pbXBvcnRfbWVzc2FnZRgUIAEoCzInLnByb3RvYnVmX3VuaXR0", - "ZXN0X2ltcG9ydC5JbXBvcnRNZXNzYWdlEkcKEnNpbmdsZV9uZXN0ZWRfZW51", - "bRgVIAEoDjIrLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlwZXMuTmVz", - "dGVkRW51bRI8ChNzaW5nbGVfZm9yZWlnbl9lbnVtGBYgASgOMh8ucHJvdG9i", - "dWZfdW5pdHRlc3QzLkZvcmVpZ25FbnVtEkAKEnNpbmdsZV9pbXBvcnRfZW51", - "bRgXIAEoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVt", - "ElMKHHNpbmdsZV9wdWJsaWNfaW1wb3J0X21lc3NhZ2UYGiABKAsyLS5wcm90", - "b2J1Zl91bml0dGVzdF9pbXBvcnQuUHVibGljSW1wb3J0TWVzc2FnZRIWCg5y", - "ZXBlYXRlZF9pbnQzMhgfIAMoBRIWCg5yZXBlYXRlZF9pbnQ2NBggIAMoAxIX", - "Cg9yZXBlYXRlZF91aW50MzIYISADKA0SFwoPcmVwZWF0ZWRfdWludDY0GCIg", - "AygEEhcKD3JlcGVhdGVkX3NpbnQzMhgjIAMoERIXCg9yZXBlYXRlZF9zaW50", - "NjQYJCADKBISGAoQcmVwZWF0ZWRfZml4ZWQzMhglIAMoBxIYChByZXBlYXRl", - "ZF9maXhlZDY0GCYgAygGEhkKEXJlcGVhdGVkX3NmaXhlZDMyGCcgAygPEhkK", - "EXJlcGVhdGVkX3NmaXhlZDY0GCggAygQEhYKDnJlcGVhdGVkX2Zsb2F0GCkg", - "AygCEhcKD3JlcGVhdGVkX2RvdWJsZRgqIAMoARIVCg1yZXBlYXRlZF9ib29s", - "GCsgAygIEhcKD3JlcGVhdGVkX3N0cmluZxgsIAMoCRIWCg5yZXBlYXRlZF9i", - "eXRlcxgtIAMoDBJPChdyZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZRgwIAMoCzIu", - "LnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2Fn", - "ZRJEChhyZXBlYXRlZF9mb3JlaWduX21lc3NhZ2UYMSADKAsyIi5wcm90b2J1", - "Zl91bml0dGVzdDMuRm9yZWlnbk1lc3NhZ2USSAoXcmVwZWF0ZWRfaW1wb3J0", - "X21lc3NhZ2UYMiADKAsyJy5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1w", - "b3J0TWVzc2FnZRJJChRyZXBlYXRlZF9uZXN0ZWRfZW51bRgzIAMoDjIrLnBy", - "b3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlwZXMuTmVzdGVkRW51bRI+ChVy", - "ZXBlYXRlZF9mb3JlaWduX2VudW0YNCADKA4yHy5wcm90b2J1Zl91bml0dGVz", - "dDMuRm9yZWlnbkVudW0SQgoUcmVwZWF0ZWRfaW1wb3J0X2VudW0YNSADKA4y", - "JC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bRJVCh5yZXBl", - "YXRlZF9wdWJsaWNfaW1wb3J0X21lc3NhZ2UYNiADKAsyLS5wcm90b2J1Zl91", - "bml0dGVzdF9pbXBvcnQuUHVibGljSW1wb3J0TWVzc2FnZRIWCgxvbmVvZl91", - "aW50MzIYbyABKA1IABJOChRvbmVvZl9uZXN0ZWRfbWVzc2FnZRhwIAEoCzIu", - "LnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2Fn", - "ZUgAEhYKDG9uZW9mX3N0cmluZxhxIAEoCUgAEhUKC29uZW9mX2J5dGVzGHIg", - "ASgMSAAaGwoNTmVzdGVkTWVzc2FnZRIKCgJiYhgBIAEoBSJWCgpOZXN0ZWRF", - "bnVtEhsKF05FU1RFRF9FTlVNX1VOU1BFQ0lGSUVEEAASBwoDRk9PEAESBwoD", - "QkFSEAISBwoDQkFaEAMSEAoDTkVHEP///////////wFCDQoLb25lb2ZfZmll", - "bGQivgEKEk5lc3RlZFRlc3RBbGxUeXBlcxI1CgVjaGlsZBgBIAEoCzImLnBy", - "b3RvYnVmX3VuaXR0ZXN0My5OZXN0ZWRUZXN0QWxsVHlwZXMSMQoHcGF5bG9h", - "ZBgCIAEoCzIgLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlwZXMSPgoO", - "cmVwZWF0ZWRfY2hpbGQYAyADKAsyJi5wcm90b2J1Zl91bml0dGVzdDMuTmVz", - "dGVkVGVzdEFsbFR5cGVzIjQKFFRlc3REZXByZWNhdGVkRmllbGRzEhwKEGRl", - "cHJlY2F0ZWRfaW50MzIYASABKAVCAhgBIhsKDkZvcmVpZ25NZXNzYWdlEgkK", - "AWMYASABKAUiMAoSVGVzdFJlc2VydmVkRmllbGRzSgQIAhADSgQIDxAQSgQI", - "CRAMUgNiYXJSA2JheiJbChFUZXN0Rm9yZWlnbk5lc3RlZBJGCg5mb3JlaWdu", - "X25lc3RlZBgBIAEoCzIuLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0QWxsVHlw", - "ZXMuTmVzdGVkTWVzc2FnZSI0ChhUZXN0UmVhbGx5TGFyZ2VUYWdOdW1iZXIS", - "CQoBYRgBIAEoBRINCgJiYhj///9/IAEoBSJWChRUZXN0UmVjdXJzaXZlTWVz", - "c2FnZRIzCgFhGAEgASgLMigucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RSZWN1", - "cnNpdmVNZXNzYWdlEgkKAWkYAiABKAUiTAoUVGVzdE11dHVhbFJlY3Vyc2lv", - "bkESNAoCYmIYASABKAsyKC5wcm90b2J1Zl91bml0dGVzdDMuVGVzdE11dHVh", - "bFJlY3Vyc2lvbkIiYwoUVGVzdE11dHVhbFJlY3Vyc2lvbkISMwoBYRgBIAEo", - "CzIoLnByb3RvYnVmX3VuaXR0ZXN0My5UZXN0TXV0dWFsUmVjdXJzaW9uQRIW", - "Cg5vcHRpb25hbF9pbnQzMhgCIAEoBSJNChJUZXN0RW51bUFsbG93QWxpYXMS", - "NwoFdmFsdWUYASABKA4yKC5wcm90b2J1Zl91bml0dGVzdDMuVGVzdEVudW1X", - "aXRoRHVwVmFsdWUi7wIKF1Rlc3RDYW1lbENhc2VGaWVsZE5hbWVzEhYKDlBy", - "aW1pdGl2ZUZpZWxkGAEgASgFEhMKC1N0cmluZ0ZpZWxkGAIgASgJEjIKCUVu", - "dW1GaWVsZBgDIAEoDjIfLnByb3RvYnVmX3VuaXR0ZXN0My5Gb3JlaWduRW51", - "bRI4CgxNZXNzYWdlRmllbGQYBCABKAsyIi5wcm90b2J1Zl91bml0dGVzdDMu", - "Rm9yZWlnbk1lc3NhZ2USHgoWUmVwZWF0ZWRQcmltaXRpdmVGaWVsZBgHIAMo", - "BRIbChNSZXBlYXRlZFN0cmluZ0ZpZWxkGAggAygJEjoKEVJlcGVhdGVkRW51", - "bUZpZWxkGAkgAygOMh8ucHJvdG9idWZfdW5pdHRlc3QzLkZvcmVpZ25FbnVt", - "EkAKFFJlcGVhdGVkTWVzc2FnZUZpZWxkGAogAygLMiIucHJvdG9idWZfdW5p", - "dHRlc3QzLkZvcmVpZ25NZXNzYWdlIsgBChJUZXN0RmllbGRPcmRlcmluZ3MS", - "EQoJbXlfc3RyaW5nGAsgASgJEg4KBm15X2ludBgBIAEoAxIQCghteV9mbG9h", - "dBhlIAEoAhJUChVzaW5nbGVfbmVzdGVkX21lc3NhZ2UYyAEgASgLMjQucHJv", - "dG9idWZfdW5pdHRlc3QzLlRlc3RGaWVsZE9yZGVyaW5ncy5OZXN0ZWRNZXNz", - "YWdlGicKDU5lc3RlZE1lc3NhZ2USCgoCb28YAiABKAMSCgoCYmIYASABKAUi", - "TAoRU3BhcnNlRW51bU1lc3NhZ2USNwoLc3BhcnNlX2VudW0YASABKA4yIi5w", - "cm90b2J1Zl91bml0dGVzdDMuVGVzdFNwYXJzZUVudW0iGQoJT25lU3RyaW5n", - "EgwKBGRhdGEYASABKAkiGgoKTW9yZVN0cmluZxIMCgRkYXRhGAEgAygJIhgK", - "CE9uZUJ5dGVzEgwKBGRhdGEYASABKAwiGQoJTW9yZUJ5dGVzEgwKBGRhdGEY", - "ASABKAwiHAoMSW50MzJNZXNzYWdlEgwKBGRhdGEYASABKAUiHQoNVWludDMy", - "TWVzc2FnZRIMCgRkYXRhGAEgASgNIhwKDEludDY0TWVzc2FnZRIMCgRkYXRh", - "GAEgASgDIh0KDVVpbnQ2NE1lc3NhZ2USDAoEZGF0YRgBIAEoBCIbCgtCb29s", - "TWVzc2FnZRIMCgRkYXRhGAEgASgIInQKCVRlc3RPbmVvZhIRCgdmb29faW50", - "GAEgASgFSAASFAoKZm9vX3N0cmluZxgCIAEoCUgAEjcKC2Zvb19tZXNzYWdl", - "GAMgASgLMiAucHJvdG9idWZfdW5pdHRlc3QzLlRlc3RBbGxUeXBlc0gAQgUK", - "A2ZvbyKrAwoPVGVzdFBhY2tlZFR5cGVzEhgKDHBhY2tlZF9pbnQzMhhaIAMo", - "BUICEAESGAoMcGFja2VkX2ludDY0GFsgAygDQgIQARIZCg1wYWNrZWRfdWlu", - "dDMyGFwgAygNQgIQARIZCg1wYWNrZWRfdWludDY0GF0gAygEQgIQARIZCg1w", - "YWNrZWRfc2ludDMyGF4gAygRQgIQARIZCg1wYWNrZWRfc2ludDY0GF8gAygS", - "QgIQARIaCg5wYWNrZWRfZml4ZWQzMhhgIAMoB0ICEAESGgoOcGFja2VkX2Zp", - "eGVkNjQYYSADKAZCAhABEhsKD3BhY2tlZF9zZml4ZWQzMhhiIAMoD0ICEAES", - "GwoPcGFja2VkX3NmaXhlZDY0GGMgAygQQgIQARIYCgxwYWNrZWRfZmxvYXQY", - "ZCADKAJCAhABEhkKDXBhY2tlZF9kb3VibGUYZSADKAFCAhABEhcKC3BhY2tl", - "ZF9ib29sGGYgAygIQgIQARI4CgtwYWNrZWRfZW51bRhnIAMoDjIfLnByb3Rv", - "YnVmX3VuaXR0ZXN0My5Gb3JlaWduRW51bUICEAEiyQMKEVRlc3RVbnBhY2tl", - "ZFR5cGVzEhoKDnVucGFja2VkX2ludDMyGFogAygFQgIQABIaCg51bnBhY2tl", - "ZF9pbnQ2NBhbIAMoA0ICEAASGwoPdW5wYWNrZWRfdWludDMyGFwgAygNQgIQ", - "ABIbCg91bnBhY2tlZF91aW50NjQYXSADKARCAhAAEhsKD3VucGFja2VkX3Np", - "bnQzMhheIAMoEUICEAASGwoPdW5wYWNrZWRfc2ludDY0GF8gAygSQgIQABIc", - "ChB1bnBhY2tlZF9maXhlZDMyGGAgAygHQgIQABIcChB1bnBhY2tlZF9maXhl", - "ZDY0GGEgAygGQgIQABIdChF1bnBhY2tlZF9zZml4ZWQzMhhiIAMoD0ICEAAS", - "HQoRdW5wYWNrZWRfc2ZpeGVkNjQYYyADKBBCAhAAEhoKDnVucGFja2VkX2Zs", - "b2F0GGQgAygCQgIQABIbCg91bnBhY2tlZF9kb3VibGUYZSADKAFCAhAAEhkK", - "DXVucGFja2VkX2Jvb2wYZiADKAhCAhAAEjoKDXVucGFja2VkX2VudW0YZyAD", - "KA4yHy5wcm90b2J1Zl91bml0dGVzdDMuRm9yZWlnbkVudW1CAhAAIsABCiNU", - "ZXN0UmVwZWF0ZWRTY2FsYXJEaWZmZXJlbnRUYWdTaXplcxIYChByZXBlYXRl", - "ZF9maXhlZDMyGAwgAygHEhYKDnJlcGVhdGVkX2ludDMyGA0gAygFEhkKEHJl", - "cGVhdGVkX2ZpeGVkNjQY/g8gAygGEhcKDnJlcGVhdGVkX2ludDY0GP8PIAMo", - "AxIYCg5yZXBlYXRlZF9mbG9hdBj+/w8gAygCEhkKD3JlcGVhdGVkX3VpbnQ2", - "NBj//w8gAygEIigKG1Rlc3RDb21tZW50SW5qZWN0aW9uTWVzc2FnZRIJCgFh", - "GAEgASgJIgwKCkZvb1JlcXVlc3QiDQoLRm9vUmVzcG9uc2UiEgoQRm9vQ2xp", - "ZW50TWVzc2FnZSISChBGb29TZXJ2ZXJNZXNzYWdlIgwKCkJhclJlcXVlc3Qi", - "DQoLQmFyUmVzcG9uc2UiEgoQVGVzdEVtcHR5TWVzc2FnZSJwCg5Db21tZW50", - "TWVzc2FnZRIMCgR0ZXh0GAEgASgJGisKFE5lc3RlZENvbW1lbnRNZXNzYWdl", - "EhMKC25lc3RlZF90ZXh0GAEgASgJIiMKEU5lc3RlZENvbW1lbnRFbnVtEg4K", - "ClpFUk9fVkFMVUUQACpZCgtGb3JlaWduRW51bRIXChNGT1JFSUdOX1VOU1BF", - "Q0lGSUVEEAASDwoLRk9SRUlHTl9GT08QBBIPCgtGT1JFSUdOX0JBUhAFEg8K", - "C0ZPUkVJR05fQkFaEAYqdQoUVGVzdEVudW1XaXRoRHVwVmFsdWUSKAokVEVT", - "VF9FTlVNX1dJVEhfRFVQX1ZBTFVFX1VOU1BFQ0lGSUVEEAASCAoERk9PMRAB", - "EggKBEJBUjEQAhIHCgNCQVoQAxIICgRGT08yEAESCAoEQkFSMhACGgIQASqd", - "AQoOVGVzdFNwYXJzZUVudW0SIAocVEVTVF9TUEFSU0VfRU5VTV9VTlNQRUNJ", - "RklFRBAAEgwKCFNQQVJTRV9BEHsSDgoIU1BBUlNFX0IQpucDEg8KCFNQQVJT", - "RV9DELKxgAYSFQoIU1BBUlNFX0QQ8f//////////ARIVCghTUEFSU0VfRRC0", - "3vz///////8BEgwKCFNQQVJTRV9HEAIqHQoLQ29tbWVudEVudW0SDgoKWkVS", - "T19WQUxVRRAAMp0BCgtUZXN0U2VydmljZRJGCgNGb28SHi5wcm90b2J1Zl91", - "bml0dGVzdDMuRm9vUmVxdWVzdBofLnByb3RvYnVmX3VuaXR0ZXN0My5Gb29S", - "ZXNwb25zZRJGCgNCYXISHi5wcm90b2J1Zl91bml0dGVzdDMuQmFyUmVxdWVz", - "dBofLnByb3RvYnVmX3VuaXR0ZXN0My5CYXJSZXNwb25zZUIsQg1Vbml0dGVz", - "dFByb3RvqgIaR29vZ2xlLlByb3RvYnVmLlRlc3RQcm90b3NiBnByb3RvMw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.TestProtos.UnittestImportProto3Reflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.TestProtos.ForeignEnum), typeof(global::Google.Protobuf.TestProtos.TestEnumWithDupValue), typeof(global::Google.Protobuf.TestProtos.TestSparseEnum), typeof(global::Google.Protobuf.TestProtos.CommentEnum), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestAllTypes), global::Google.Protobuf.TestProtos.TestAllTypes.Parser, new[]{ "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[]{ "OneofField" }, new[]{ typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage), global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage.Parser, new[]{ "Bb" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.NestedTestAllTypes), global::Google.Protobuf.TestProtos.NestedTestAllTypes.Parser, new[]{ "Child", "Payload", "RepeatedChild" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestDeprecatedFields), global::Google.Protobuf.TestProtos.TestDeprecatedFields.Parser, new[]{ "DeprecatedInt32" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.ForeignMessage), global::Google.Protobuf.TestProtos.ForeignMessage.Parser, new[]{ "C" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestReservedFields), global::Google.Protobuf.TestProtos.TestReservedFields.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestForeignNested), global::Google.Protobuf.TestProtos.TestForeignNested.Parser, new[]{ "ForeignNested" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber), global::Google.Protobuf.TestProtos.TestReallyLargeTagNumber.Parser, new[]{ "A", "Bb" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestRecursiveMessage), global::Google.Protobuf.TestProtos.TestRecursiveMessage.Parser, new[]{ "A", "I" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionA), global::Google.Protobuf.TestProtos.TestMutualRecursionA.Parser, new[]{ "Bb" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestMutualRecursionB), global::Google.Protobuf.TestProtos.TestMutualRecursionB.Parser, new[]{ "A", "OptionalInt32" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestEnumAllowAlias), global::Google.Protobuf.TestProtos.TestEnumAllowAlias.Parser, new[]{ "Value" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames), global::Google.Protobuf.TestProtos.TestCamelCaseFieldNames.Parser, new[]{ "PrimitiveField", "StringField", "EnumField", "MessageField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings), global::Google.Protobuf.TestProtos.TestFieldOrderings.Parser, new[]{ "MyString", "MyInt", "MyFloat", "SingleNestedMessage" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage), global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage.Parser, new[]{ "Oo", "Bb" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.SparseEnumMessage), global::Google.Protobuf.TestProtos.SparseEnumMessage.Parser, new[]{ "SparseEnum" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneString), global::Google.Protobuf.TestProtos.OneString.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MoreString), global::Google.Protobuf.TestProtos.MoreString.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneBytes), global::Google.Protobuf.TestProtos.OneBytes.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MoreBytes), global::Google.Protobuf.TestProtos.MoreBytes.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Int32Message), global::Google.Protobuf.TestProtos.Int32Message.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Uint32Message), global::Google.Protobuf.TestProtos.Uint32Message.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Int64Message), global::Google.Protobuf.TestProtos.Int64Message.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.Uint64Message), global::Google.Protobuf.TestProtos.Uint64Message.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BoolMessage), global::Google.Protobuf.TestProtos.BoolMessage.Parser, new[]{ "Data" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestOneof), global::Google.Protobuf.TestProtos.TestOneof.Parser, new[]{ "FooInt", "FooString", "FooMessage" }, new[]{ "Foo" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestPackedTypes), global::Google.Protobuf.TestProtos.TestPackedTypes.Parser, new[]{ "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestUnpackedTypes), global::Google.Protobuf.TestProtos.TestUnpackedTypes.Parser, new[]{ "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes), global::Google.Protobuf.TestProtos.TestRepeatedScalarDifferentTagSizes.Parser, new[]{ "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestCommentInjectionMessage), global::Google.Protobuf.TestProtos.TestCommentInjectionMessage.Parser, new[]{ "A" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooRequest), global::Google.Protobuf.TestProtos.FooRequest.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooResponse), global::Google.Protobuf.TestProtos.FooResponse.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooClientMessage), global::Google.Protobuf.TestProtos.FooClientMessage.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.FooServerMessage), global::Google.Protobuf.TestProtos.FooServerMessage.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BarRequest), global::Google.Protobuf.TestProtos.BarRequest.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.BarResponse), global::Google.Protobuf.TestProtos.BarResponse.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestEmptyMessage), global::Google.Protobuf.TestProtos.TestEmptyMessage.Parser, null, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.CommentMessage), global::Google.Protobuf.TestProtos.CommentMessage.Parser, new[]{ "Text" }, null, new[]{ typeof(global::Google.Protobuf.TestProtos.CommentMessage.Types.NestedCommentEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.CommentMessage.Types.NestedCommentMessage), global::Google.Protobuf.TestProtos.CommentMessage.Types.NestedCommentMessage.Parser, new[]{ "NestedText" }, null, null, null, null)}) - })); - } - #endregion - - } - #region Enums - public enum ForeignEnum { - [pbr::OriginalName("FOREIGN_UNSPECIFIED")] ForeignUnspecified = 0, - [pbr::OriginalName("FOREIGN_FOO")] ForeignFoo = 4, - [pbr::OriginalName("FOREIGN_BAR")] ForeignBar = 5, - [pbr::OriginalName("FOREIGN_BAZ")] ForeignBaz = 6, - } - - /// - /// Test an enum that has multiple values with the same number. - /// - public enum TestEnumWithDupValue { - [pbr::OriginalName("TEST_ENUM_WITH_DUP_VALUE_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("FOO1")] Foo1 = 1, - [pbr::OriginalName("BAR1")] Bar1 = 2, - [pbr::OriginalName("BAZ")] Baz = 3, - [pbr::OriginalName("FOO2", PreferredAlias = false)] Foo2 = 1, - [pbr::OriginalName("BAR2", PreferredAlias = false)] Bar2 = 2, - } - - /// - /// Test an enum with large, unordered values. - /// - public enum TestSparseEnum { - [pbr::OriginalName("TEST_SPARSE_ENUM_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("SPARSE_A")] SparseA = 123, - [pbr::OriginalName("SPARSE_B")] SparseB = 62374, - [pbr::OriginalName("SPARSE_C")] SparseC = 12589234, - [pbr::OriginalName("SPARSE_D")] SparseD = -15, - [pbr::OriginalName("SPARSE_E")] SparseE = -53452, - /// - /// In proto3, value 0 must be the first one specified - /// SPARSE_F = 0; - /// - [pbr::OriginalName("SPARSE_G")] SparseG = 2, - } - - /// - /// Leading enum comment - /// - public enum CommentEnum { - /// - /// Zero value comment - /// - [pbr::OriginalName("ZERO_VALUE")] ZeroValue = 0, - } - - #endregion - - #region Messages - /// - /// This proto includes every type of field in both singular and repeated - /// forms. - /// - public sealed partial class TestAllTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestAllTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypes(TestAllTypes other) : this() { - singleInt32_ = other.singleInt32_; - singleInt64_ = other.singleInt64_; - singleUint32_ = other.singleUint32_; - singleUint64_ = other.singleUint64_; - singleSint32_ = other.singleSint32_; - singleSint64_ = other.singleSint64_; - singleFixed32_ = other.singleFixed32_; - singleFixed64_ = other.singleFixed64_; - singleSfixed32_ = other.singleSfixed32_; - singleSfixed64_ = other.singleSfixed64_; - singleFloat_ = other.singleFloat_; - singleDouble_ = other.singleDouble_; - singleBool_ = other.singleBool_; - singleString_ = other.singleString_; - singleBytes_ = other.singleBytes_; - singleNestedMessage_ = other.singleNestedMessage_ != null ? other.singleNestedMessage_.Clone() : null; - singleForeignMessage_ = other.singleForeignMessage_ != null ? other.singleForeignMessage_.Clone() : null; - singleImportMessage_ = other.singleImportMessage_ != null ? other.singleImportMessage_.Clone() : null; - singleNestedEnum_ = other.singleNestedEnum_; - singleForeignEnum_ = other.singleForeignEnum_; - singleImportEnum_ = other.singleImportEnum_; - singlePublicImportMessage_ = other.singlePublicImportMessage_ != null ? other.singlePublicImportMessage_.Clone() : null; - repeatedInt32_ = other.repeatedInt32_.Clone(); - repeatedInt64_ = other.repeatedInt64_.Clone(); - repeatedUint32_ = other.repeatedUint32_.Clone(); - repeatedUint64_ = other.repeatedUint64_.Clone(); - repeatedSint32_ = other.repeatedSint32_.Clone(); - repeatedSint64_ = other.repeatedSint64_.Clone(); - repeatedFixed32_ = other.repeatedFixed32_.Clone(); - repeatedFixed64_ = other.repeatedFixed64_.Clone(); - repeatedSfixed32_ = other.repeatedSfixed32_.Clone(); - repeatedSfixed64_ = other.repeatedSfixed64_.Clone(); - repeatedFloat_ = other.repeatedFloat_.Clone(); - repeatedDouble_ = other.repeatedDouble_.Clone(); - repeatedBool_ = other.repeatedBool_.Clone(); - repeatedString_ = other.repeatedString_.Clone(); - repeatedBytes_ = other.repeatedBytes_.Clone(); - repeatedNestedMessage_ = other.repeatedNestedMessage_.Clone(); - repeatedForeignMessage_ = other.repeatedForeignMessage_.Clone(); - repeatedImportMessage_ = other.repeatedImportMessage_.Clone(); - repeatedNestedEnum_ = other.repeatedNestedEnum_.Clone(); - repeatedForeignEnum_ = other.repeatedForeignEnum_.Clone(); - repeatedImportEnum_ = other.repeatedImportEnum_.Clone(); - repeatedPublicImportMessage_ = other.repeatedPublicImportMessage_.Clone(); - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.OneofUint32: - OneofUint32 = other.OneofUint32; - break; - case OneofFieldOneofCase.OneofNestedMessage: - OneofNestedMessage = other.OneofNestedMessage.Clone(); - break; - case OneofFieldOneofCase.OneofString: - OneofString = other.OneofString; - break; - case OneofFieldOneofCase.OneofBytes: - OneofBytes = other.OneofBytes; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestAllTypes Clone() { - return new TestAllTypes(this); - } - - /// Field number for the "single_int32" field. - public const int SingleInt32FieldNumber = 1; - private int singleInt32_; - /// - /// Singular - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int SingleInt32 { - get { return singleInt32_; } - set { - singleInt32_ = value; - } - } - - /// Field number for the "single_int64" field. - public const int SingleInt64FieldNumber = 2; - private long singleInt64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long SingleInt64 { - get { return singleInt64_; } - set { - singleInt64_ = value; - } - } - - /// Field number for the "single_uint32" field. - public const int SingleUint32FieldNumber = 3; - private uint singleUint32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint SingleUint32 { - get { return singleUint32_; } - set { - singleUint32_ = value; - } - } - - /// Field number for the "single_uint64" field. - public const int SingleUint64FieldNumber = 4; - private ulong singleUint64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong SingleUint64 { - get { return singleUint64_; } - set { - singleUint64_ = value; - } - } - - /// Field number for the "single_sint32" field. - public const int SingleSint32FieldNumber = 5; - private int singleSint32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int SingleSint32 { - get { return singleSint32_; } - set { - singleSint32_ = value; - } - } - - /// Field number for the "single_sint64" field. - public const int SingleSint64FieldNumber = 6; - private long singleSint64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long SingleSint64 { - get { return singleSint64_; } - set { - singleSint64_ = value; - } - } - - /// Field number for the "single_fixed32" field. - public const int SingleFixed32FieldNumber = 7; - private uint singleFixed32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint SingleFixed32 { - get { return singleFixed32_; } - set { - singleFixed32_ = value; - } - } - - /// Field number for the "single_fixed64" field. - public const int SingleFixed64FieldNumber = 8; - private ulong singleFixed64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong SingleFixed64 { - get { return singleFixed64_; } - set { - singleFixed64_ = value; - } - } - - /// Field number for the "single_sfixed32" field. - public const int SingleSfixed32FieldNumber = 9; - private int singleSfixed32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int SingleSfixed32 { - get { return singleSfixed32_; } - set { - singleSfixed32_ = value; - } - } - - /// Field number for the "single_sfixed64" field. - public const int SingleSfixed64FieldNumber = 10; - private long singleSfixed64_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long SingleSfixed64 { - get { return singleSfixed64_; } - set { - singleSfixed64_ = value; - } - } - - /// Field number for the "single_float" field. - public const int SingleFloatFieldNumber = 11; - private float singleFloat_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float SingleFloat { - get { return singleFloat_; } - set { - singleFloat_ = value; - } - } - - /// Field number for the "single_double" field. - public const int SingleDoubleFieldNumber = 12; - private double singleDouble_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double SingleDouble { - get { return singleDouble_; } - set { - singleDouble_ = value; - } - } - - /// Field number for the "single_bool" field. - public const int SingleBoolFieldNumber = 13; - private bool singleBool_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool SingleBool { - get { return singleBool_; } - set { - singleBool_ = value; - } - } - - /// Field number for the "single_string" field. - public const int SingleStringFieldNumber = 14; - private string singleString_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string SingleString { - get { return singleString_; } - set { - singleString_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "single_bytes" field. - public const int SingleBytesFieldNumber = 15; - private pb::ByteString singleBytes_ = pb::ByteString.Empty; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString SingleBytes { - get { return singleBytes_; } - set { - singleBytes_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "single_nested_message" field. - public const int SingleNestedMessageFieldNumber = 18; - private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage singleNestedMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage SingleNestedMessage { - get { return singleNestedMessage_; } - set { - singleNestedMessage_ = value; - } - } - - /// Field number for the "single_foreign_message" field. - public const int SingleForeignMessageFieldNumber = 19; - private global::Google.Protobuf.TestProtos.ForeignMessage singleForeignMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ForeignMessage SingleForeignMessage { - get { return singleForeignMessage_; } - set { - singleForeignMessage_ = value; - } - } - - /// Field number for the "single_import_message" field. - public const int SingleImportMessageFieldNumber = 20; - private global::Google.Protobuf.TestProtos.ImportMessage singleImportMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ImportMessage SingleImportMessage { - get { return singleImportMessage_; } - set { - singleImportMessage_ = value; - } - } - - /// Field number for the "single_nested_enum" field. - public const int SingleNestedEnumFieldNumber = 21; - private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum singleNestedEnum_ = global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.Unspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum SingleNestedEnum { - get { return singleNestedEnum_; } - set { - singleNestedEnum_ = value; - } - } - - /// Field number for the "single_foreign_enum" field. - public const int SingleForeignEnumFieldNumber = 22; - private global::Google.Protobuf.TestProtos.ForeignEnum singleForeignEnum_ = global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ForeignEnum SingleForeignEnum { - get { return singleForeignEnum_; } - set { - singleForeignEnum_ = value; - } - } - - /// Field number for the "single_import_enum" field. - public const int SingleImportEnumFieldNumber = 23; - private global::Google.Protobuf.TestProtos.ImportEnum singleImportEnum_ = global::Google.Protobuf.TestProtos.ImportEnum.Unspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ImportEnum SingleImportEnum { - get { return singleImportEnum_; } - set { - singleImportEnum_ = value; - } - } - - /// Field number for the "single_public_import_message" field. - public const int SinglePublicImportMessageFieldNumber = 26; - private global::Google.Protobuf.TestProtos.PublicImportMessage singlePublicImportMessage_; - /// - /// Defined in unittest_import_public.proto - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.PublicImportMessage SinglePublicImportMessage { - get { return singlePublicImportMessage_; } - set { - singlePublicImportMessage_ = value; - } - } - - /// Field number for the "repeated_int32" field. - public const int RepeatedInt32FieldNumber = 31; - private static readonly pb::FieldCodec _repeated_repeatedInt32_codec - = pb::FieldCodec.ForInt32(250); - private readonly pbc::RepeatedField repeatedInt32_ = new pbc::RepeatedField(); - /// - /// Repeated - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt32 { - get { return repeatedInt32_; } - } - - /// Field number for the "repeated_int64" field. - public const int RepeatedInt64FieldNumber = 32; - private static readonly pb::FieldCodec _repeated_repeatedInt64_codec - = pb::FieldCodec.ForInt64(258); - private readonly pbc::RepeatedField repeatedInt64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt64 { - get { return repeatedInt64_; } - } - - /// Field number for the "repeated_uint32" field. - public const int RepeatedUint32FieldNumber = 33; - private static readonly pb::FieldCodec _repeated_repeatedUint32_codec - = pb::FieldCodec.ForUInt32(266); - private readonly pbc::RepeatedField repeatedUint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint32 { - get { return repeatedUint32_; } - } - - /// Field number for the "repeated_uint64" field. - public const int RepeatedUint64FieldNumber = 34; - private static readonly pb::FieldCodec _repeated_repeatedUint64_codec - = pb::FieldCodec.ForUInt64(274); - private readonly pbc::RepeatedField repeatedUint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint64 { - get { return repeatedUint64_; } - } - - /// Field number for the "repeated_sint32" field. - public const int RepeatedSint32FieldNumber = 35; - private static readonly pb::FieldCodec _repeated_repeatedSint32_codec - = pb::FieldCodec.ForSInt32(282); - private readonly pbc::RepeatedField repeatedSint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSint32 { - get { return repeatedSint32_; } - } - - /// Field number for the "repeated_sint64" field. - public const int RepeatedSint64FieldNumber = 36; - private static readonly pb::FieldCodec _repeated_repeatedSint64_codec - = pb::FieldCodec.ForSInt64(290); - private readonly pbc::RepeatedField repeatedSint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSint64 { - get { return repeatedSint64_; } - } - - /// Field number for the "repeated_fixed32" field. - public const int RepeatedFixed32FieldNumber = 37; - private static readonly pb::FieldCodec _repeated_repeatedFixed32_codec - = pb::FieldCodec.ForFixed32(298); - private readonly pbc::RepeatedField repeatedFixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed32 { - get { return repeatedFixed32_; } - } - - /// Field number for the "repeated_fixed64" field. - public const int RepeatedFixed64FieldNumber = 38; - private static readonly pb::FieldCodec _repeated_repeatedFixed64_codec - = pb::FieldCodec.ForFixed64(306); - private readonly pbc::RepeatedField repeatedFixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed64 { - get { return repeatedFixed64_; } - } - - /// Field number for the "repeated_sfixed32" field. - public const int RepeatedSfixed32FieldNumber = 39; - private static readonly pb::FieldCodec _repeated_repeatedSfixed32_codec - = pb::FieldCodec.ForSFixed32(314); - private readonly pbc::RepeatedField repeatedSfixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSfixed32 { - get { return repeatedSfixed32_; } - } - - /// Field number for the "repeated_sfixed64" field. - public const int RepeatedSfixed64FieldNumber = 40; - private static readonly pb::FieldCodec _repeated_repeatedSfixed64_codec - = pb::FieldCodec.ForSFixed64(322); - private readonly pbc::RepeatedField repeatedSfixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedSfixed64 { - get { return repeatedSfixed64_; } - } - - /// Field number for the "repeated_float" field. - public const int RepeatedFloatFieldNumber = 41; - private static readonly pb::FieldCodec _repeated_repeatedFloat_codec - = pb::FieldCodec.ForFloat(330); - private readonly pbc::RepeatedField repeatedFloat_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFloat { - get { return repeatedFloat_; } - } - - /// Field number for the "repeated_double" field. - public const int RepeatedDoubleFieldNumber = 42; - private static readonly pb::FieldCodec _repeated_repeatedDouble_codec - = pb::FieldCodec.ForDouble(338); - private readonly pbc::RepeatedField repeatedDouble_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedDouble { - get { return repeatedDouble_; } - } - - /// Field number for the "repeated_bool" field. - public const int RepeatedBoolFieldNumber = 43; - private static readonly pb::FieldCodec _repeated_repeatedBool_codec - = pb::FieldCodec.ForBool(346); - private readonly pbc::RepeatedField repeatedBool_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBool { - get { return repeatedBool_; } - } - - /// Field number for the "repeated_string" field. - public const int RepeatedStringFieldNumber = 44; - private static readonly pb::FieldCodec _repeated_repeatedString_codec - = pb::FieldCodec.ForString(354); - private readonly pbc::RepeatedField repeatedString_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedString { - get { return repeatedString_; } - } - - /// Field number for the "repeated_bytes" field. - public const int RepeatedBytesFieldNumber = 45; - private static readonly pb::FieldCodec _repeated_repeatedBytes_codec - = pb::FieldCodec.ForBytes(362); - private readonly pbc::RepeatedField repeatedBytes_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedBytes { - get { return repeatedBytes_; } - } - - /// Field number for the "repeated_nested_message" field. - public const int RepeatedNestedMessageFieldNumber = 48; - private static readonly pb::FieldCodec _repeated_repeatedNestedMessage_codec - = pb::FieldCodec.ForMessage(386, global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage.Parser); - private readonly pbc::RepeatedField repeatedNestedMessage_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedNestedMessage { - get { return repeatedNestedMessage_; } - } - - /// Field number for the "repeated_foreign_message" field. - public const int RepeatedForeignMessageFieldNumber = 49; - private static readonly pb::FieldCodec _repeated_repeatedForeignMessage_codec - = pb::FieldCodec.ForMessage(394, global::Google.Protobuf.TestProtos.ForeignMessage.Parser); - private readonly pbc::RepeatedField repeatedForeignMessage_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedForeignMessage { - get { return repeatedForeignMessage_; } - } - - /// Field number for the "repeated_import_message" field. - public const int RepeatedImportMessageFieldNumber = 50; - private static readonly pb::FieldCodec _repeated_repeatedImportMessage_codec - = pb::FieldCodec.ForMessage(402, global::Google.Protobuf.TestProtos.ImportMessage.Parser); - private readonly pbc::RepeatedField repeatedImportMessage_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedImportMessage { - get { return repeatedImportMessage_; } - } - - /// Field number for the "repeated_nested_enum" field. - public const int RepeatedNestedEnumFieldNumber = 51; - private static readonly pb::FieldCodec _repeated_repeatedNestedEnum_codec - = pb::FieldCodec.ForEnum(410, x => (int) x, x => (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) x); - private readonly pbc::RepeatedField repeatedNestedEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedNestedEnum { - get { return repeatedNestedEnum_; } - } - - /// Field number for the "repeated_foreign_enum" field. - public const int RepeatedForeignEnumFieldNumber = 52; - private static readonly pb::FieldCodec _repeated_repeatedForeignEnum_codec - = pb::FieldCodec.ForEnum(418, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x); - private readonly pbc::RepeatedField repeatedForeignEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedForeignEnum { - get { return repeatedForeignEnum_; } - } - - /// Field number for the "repeated_import_enum" field. - public const int RepeatedImportEnumFieldNumber = 53; - private static readonly pb::FieldCodec _repeated_repeatedImportEnum_codec - = pb::FieldCodec.ForEnum(426, x => (int) x, x => (global::Google.Protobuf.TestProtos.ImportEnum) x); - private readonly pbc::RepeatedField repeatedImportEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedImportEnum { - get { return repeatedImportEnum_; } - } - - /// Field number for the "repeated_public_import_message" field. - public const int RepeatedPublicImportMessageFieldNumber = 54; - private static readonly pb::FieldCodec _repeated_repeatedPublicImportMessage_codec - = pb::FieldCodec.ForMessage(434, global::Google.Protobuf.TestProtos.PublicImportMessage.Parser); - private readonly pbc::RepeatedField repeatedPublicImportMessage_ = new pbc::RepeatedField(); - /// - /// Defined in unittest_import_public.proto - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedPublicImportMessage { - get { return repeatedPublicImportMessage_; } - } - - /// Field number for the "oneof_uint32" field. - public const int OneofUint32FieldNumber = 111; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint OneofUint32 { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } - set { - oneofField_ = value; - oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; - } - } - - /// Field number for the "oneof_nested_message" field. - public const int OneofNestedMessageFieldNumber = 112; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.OneofNestedMessage; - } - } - - /// Field number for the "oneof_string" field. - public const int OneofStringFieldNumber = 113; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OneofString { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } - set { - oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - oneofFieldCase_ = OneofFieldOneofCase.OneofString; - } - } - - /// Field number for the "oneof_bytes" field. - public const int OneofBytesFieldNumber = 114; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString OneofBytes { - get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; } - set { - oneofField_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; - } - } - - private object oneofField_; - /// Enum of possible cases for the "oneof_field" oneof. - public enum OneofFieldOneofCase { - None = 0, - OneofUint32 = 111, - OneofNestedMessage = 112, - OneofString = 113, - OneofBytes = 114, - } - private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofFieldOneofCase OneofFieldCase { - get { return oneofFieldCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOneofField() { - oneofFieldCase_ = OneofFieldOneofCase.None; - oneofField_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestAllTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestAllTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (SingleInt32 != other.SingleInt32) return false; - if (SingleInt64 != other.SingleInt64) return false; - if (SingleUint32 != other.SingleUint32) return false; - if (SingleUint64 != other.SingleUint64) return false; - if (SingleSint32 != other.SingleSint32) return false; - if (SingleSint64 != other.SingleSint64) return false; - if (SingleFixed32 != other.SingleFixed32) return false; - if (SingleFixed64 != other.SingleFixed64) return false; - if (SingleSfixed32 != other.SingleSfixed32) return false; - if (SingleSfixed64 != other.SingleSfixed64) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(SingleFloat, other.SingleFloat)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(SingleDouble, other.SingleDouble)) return false; - if (SingleBool != other.SingleBool) return false; - if (SingleString != other.SingleString) return false; - if (SingleBytes != other.SingleBytes) return false; - if (!object.Equals(SingleNestedMessage, other.SingleNestedMessage)) return false; - if (!object.Equals(SingleForeignMessage, other.SingleForeignMessage)) return false; - if (!object.Equals(SingleImportMessage, other.SingleImportMessage)) return false; - if (SingleNestedEnum != other.SingleNestedEnum) return false; - if (SingleForeignEnum != other.SingleForeignEnum) return false; - if (SingleImportEnum != other.SingleImportEnum) return false; - if (!object.Equals(SinglePublicImportMessage, other.SinglePublicImportMessage)) return false; - if(!repeatedInt32_.Equals(other.repeatedInt32_)) return false; - if(!repeatedInt64_.Equals(other.repeatedInt64_)) return false; - if(!repeatedUint32_.Equals(other.repeatedUint32_)) return false; - if(!repeatedUint64_.Equals(other.repeatedUint64_)) return false; - if(!repeatedSint32_.Equals(other.repeatedSint32_)) return false; - if(!repeatedSint64_.Equals(other.repeatedSint64_)) return false; - if(!repeatedFixed32_.Equals(other.repeatedFixed32_)) return false; - if(!repeatedFixed64_.Equals(other.repeatedFixed64_)) return false; - if(!repeatedSfixed32_.Equals(other.repeatedSfixed32_)) return false; - if(!repeatedSfixed64_.Equals(other.repeatedSfixed64_)) return false; - if(!repeatedFloat_.Equals(other.repeatedFloat_)) return false; - if(!repeatedDouble_.Equals(other.repeatedDouble_)) return false; - if(!repeatedBool_.Equals(other.repeatedBool_)) return false; - if(!repeatedString_.Equals(other.repeatedString_)) return false; - if(!repeatedBytes_.Equals(other.repeatedBytes_)) return false; - if(!repeatedNestedMessage_.Equals(other.repeatedNestedMessage_)) return false; - if(!repeatedForeignMessage_.Equals(other.repeatedForeignMessage_)) return false; - if(!repeatedImportMessage_.Equals(other.repeatedImportMessage_)) return false; - if(!repeatedNestedEnum_.Equals(other.repeatedNestedEnum_)) return false; - if(!repeatedForeignEnum_.Equals(other.repeatedForeignEnum_)) return false; - if(!repeatedImportEnum_.Equals(other.repeatedImportEnum_)) return false; - if(!repeatedPublicImportMessage_.Equals(other.repeatedPublicImportMessage_)) return false; - if (OneofUint32 != other.OneofUint32) return false; - if (!object.Equals(OneofNestedMessage, other.OneofNestedMessage)) return false; - if (OneofString != other.OneofString) return false; - if (OneofBytes != other.OneofBytes) return false; - if (OneofFieldCase != other.OneofFieldCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (SingleInt32 != 0) hash ^= SingleInt32.GetHashCode(); - if (SingleInt64 != 0L) hash ^= SingleInt64.GetHashCode(); - if (SingleUint32 != 0) hash ^= SingleUint32.GetHashCode(); - if (SingleUint64 != 0UL) hash ^= SingleUint64.GetHashCode(); - if (SingleSint32 != 0) hash ^= SingleSint32.GetHashCode(); - if (SingleSint64 != 0L) hash ^= SingleSint64.GetHashCode(); - if (SingleFixed32 != 0) hash ^= SingleFixed32.GetHashCode(); - if (SingleFixed64 != 0UL) hash ^= SingleFixed64.GetHashCode(); - if (SingleSfixed32 != 0) hash ^= SingleSfixed32.GetHashCode(); - if (SingleSfixed64 != 0L) hash ^= SingleSfixed64.GetHashCode(); - if (SingleFloat != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(SingleFloat); - if (SingleDouble != 0D) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(SingleDouble); - if (SingleBool != false) hash ^= SingleBool.GetHashCode(); - if (SingleString.Length != 0) hash ^= SingleString.GetHashCode(); - if (SingleBytes.Length != 0) hash ^= SingleBytes.GetHashCode(); - if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode(); - if (singleForeignMessage_ != null) hash ^= SingleForeignMessage.GetHashCode(); - if (singleImportMessage_ != null) hash ^= SingleImportMessage.GetHashCode(); - if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.Unspecified) hash ^= SingleNestedEnum.GetHashCode(); - if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) hash ^= SingleForeignEnum.GetHashCode(); - if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.Unspecified) hash ^= SingleImportEnum.GetHashCode(); - if (singlePublicImportMessage_ != null) hash ^= SinglePublicImportMessage.GetHashCode(); - hash ^= repeatedInt32_.GetHashCode(); - hash ^= repeatedInt64_.GetHashCode(); - hash ^= repeatedUint32_.GetHashCode(); - hash ^= repeatedUint64_.GetHashCode(); - hash ^= repeatedSint32_.GetHashCode(); - hash ^= repeatedSint64_.GetHashCode(); - hash ^= repeatedFixed32_.GetHashCode(); - hash ^= repeatedFixed64_.GetHashCode(); - hash ^= repeatedSfixed32_.GetHashCode(); - hash ^= repeatedSfixed64_.GetHashCode(); - hash ^= repeatedFloat_.GetHashCode(); - hash ^= repeatedDouble_.GetHashCode(); - hash ^= repeatedBool_.GetHashCode(); - hash ^= repeatedString_.GetHashCode(); - hash ^= repeatedBytes_.GetHashCode(); - hash ^= repeatedNestedMessage_.GetHashCode(); - hash ^= repeatedForeignMessage_.GetHashCode(); - hash ^= repeatedImportMessage_.GetHashCode(); - hash ^= repeatedNestedEnum_.GetHashCode(); - hash ^= repeatedForeignEnum_.GetHashCode(); - hash ^= repeatedImportEnum_.GetHashCode(); - hash ^= repeatedPublicImportMessage_.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) hash ^= OneofUint32.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) hash ^= OneofNestedMessage.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) hash ^= OneofString.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) hash ^= OneofBytes.GetHashCode(); - hash ^= (int) oneofFieldCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (SingleInt32 != 0) { - output.WriteRawTag(8); - output.WriteInt32(SingleInt32); - } - if (SingleInt64 != 0L) { - output.WriteRawTag(16); - output.WriteInt64(SingleInt64); - } - if (SingleUint32 != 0) { - output.WriteRawTag(24); - output.WriteUInt32(SingleUint32); - } - if (SingleUint64 != 0UL) { - output.WriteRawTag(32); - output.WriteUInt64(SingleUint64); - } - if (SingleSint32 != 0) { - output.WriteRawTag(40); - output.WriteSInt32(SingleSint32); - } - if (SingleSint64 != 0L) { - output.WriteRawTag(48); - output.WriteSInt64(SingleSint64); - } - if (SingleFixed32 != 0) { - output.WriteRawTag(61); - output.WriteFixed32(SingleFixed32); - } - if (SingleFixed64 != 0UL) { - output.WriteRawTag(65); - output.WriteFixed64(SingleFixed64); - } - if (SingleSfixed32 != 0) { - output.WriteRawTag(77); - output.WriteSFixed32(SingleSfixed32); - } - if (SingleSfixed64 != 0L) { - output.WriteRawTag(81); - output.WriteSFixed64(SingleSfixed64); - } - if (SingleFloat != 0F) { - output.WriteRawTag(93); - output.WriteFloat(SingleFloat); - } - if (SingleDouble != 0D) { - output.WriteRawTag(97); - output.WriteDouble(SingleDouble); - } - if (SingleBool != false) { - output.WriteRawTag(104); - output.WriteBool(SingleBool); - } - if (SingleString.Length != 0) { - output.WriteRawTag(114); - output.WriteString(SingleString); - } - if (SingleBytes.Length != 0) { - output.WriteRawTag(122); - output.WriteBytes(SingleBytes); - } - if (singleNestedMessage_ != null) { - output.WriteRawTag(146, 1); - output.WriteMessage(SingleNestedMessage); - } - if (singleForeignMessage_ != null) { - output.WriteRawTag(154, 1); - output.WriteMessage(SingleForeignMessage); - } - if (singleImportMessage_ != null) { - output.WriteRawTag(162, 1); - output.WriteMessage(SingleImportMessage); - } - if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.Unspecified) { - output.WriteRawTag(168, 1); - output.WriteEnum((int) SingleNestedEnum); - } - if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - output.WriteRawTag(176, 1); - output.WriteEnum((int) SingleForeignEnum); - } - if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.Unspecified) { - output.WriteRawTag(184, 1); - output.WriteEnum((int) SingleImportEnum); - } - if (singlePublicImportMessage_ != null) { - output.WriteRawTag(210, 1); - output.WriteMessage(SinglePublicImportMessage); - } - repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec); - repeatedInt64_.WriteTo(output, _repeated_repeatedInt64_codec); - repeatedUint32_.WriteTo(output, _repeated_repeatedUint32_codec); - repeatedUint64_.WriteTo(output, _repeated_repeatedUint64_codec); - repeatedSint32_.WriteTo(output, _repeated_repeatedSint32_codec); - repeatedSint64_.WriteTo(output, _repeated_repeatedSint64_codec); - repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec); - repeatedFixed64_.WriteTo(output, _repeated_repeatedFixed64_codec); - repeatedSfixed32_.WriteTo(output, _repeated_repeatedSfixed32_codec); - repeatedSfixed64_.WriteTo(output, _repeated_repeatedSfixed64_codec); - repeatedFloat_.WriteTo(output, _repeated_repeatedFloat_codec); - repeatedDouble_.WriteTo(output, _repeated_repeatedDouble_codec); - repeatedBool_.WriteTo(output, _repeated_repeatedBool_codec); - repeatedString_.WriteTo(output, _repeated_repeatedString_codec); - repeatedBytes_.WriteTo(output, _repeated_repeatedBytes_codec); - repeatedNestedMessage_.WriteTo(output, _repeated_repeatedNestedMessage_codec); - repeatedForeignMessage_.WriteTo(output, _repeated_repeatedForeignMessage_codec); - repeatedImportMessage_.WriteTo(output, _repeated_repeatedImportMessage_codec); - repeatedNestedEnum_.WriteTo(output, _repeated_repeatedNestedEnum_codec); - repeatedForeignEnum_.WriteTo(output, _repeated_repeatedForeignEnum_codec); - repeatedImportEnum_.WriteTo(output, _repeated_repeatedImportEnum_codec); - repeatedPublicImportMessage_.WriteTo(output, _repeated_repeatedPublicImportMessage_codec); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { - output.WriteRawTag(248, 6); - output.WriteUInt32(OneofUint32); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - output.WriteRawTag(130, 7); - output.WriteMessage(OneofNestedMessage); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { - output.WriteRawTag(138, 7); - output.WriteString(OneofString); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { - output.WriteRawTag(146, 7); - output.WriteBytes(OneofBytes); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (SingleInt32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(SingleInt32); - } - if (SingleInt64 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(SingleInt64); - } - if (SingleUint32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(SingleUint32); - } - if (SingleUint64 != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(SingleUint64); - } - if (SingleSint32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeSInt32Size(SingleSint32); - } - if (SingleSint64 != 0L) { - size += 1 + pb::CodedOutputStream.ComputeSInt64Size(SingleSint64); - } - if (SingleFixed32 != 0) { - size += 1 + 4; - } - if (SingleFixed64 != 0UL) { - size += 1 + 8; - } - if (SingleSfixed32 != 0) { - size += 1 + 4; - } - if (SingleSfixed64 != 0L) { - size += 1 + 8; - } - if (SingleFloat != 0F) { - size += 1 + 4; - } - if (SingleDouble != 0D) { - size += 1 + 8; - } - if (SingleBool != false) { - size += 1 + 1; - } - if (SingleString.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(SingleString); - } - if (SingleBytes.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(SingleBytes); - } - if (singleNestedMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleNestedMessage); - } - if (singleForeignMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleForeignMessage); - } - if (singleImportMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleImportMessage); - } - if (SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.Unspecified) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleNestedEnum); - } - if (SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleForeignEnum); - } - if (SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.Unspecified) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) SingleImportEnum); - } - if (singlePublicImportMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(SinglePublicImportMessage); - } - size += repeatedInt32_.CalculateSize(_repeated_repeatedInt32_codec); - size += repeatedInt64_.CalculateSize(_repeated_repeatedInt64_codec); - size += repeatedUint32_.CalculateSize(_repeated_repeatedUint32_codec); - size += repeatedUint64_.CalculateSize(_repeated_repeatedUint64_codec); - size += repeatedSint32_.CalculateSize(_repeated_repeatedSint32_codec); - size += repeatedSint64_.CalculateSize(_repeated_repeatedSint64_codec); - size += repeatedFixed32_.CalculateSize(_repeated_repeatedFixed32_codec); - size += repeatedFixed64_.CalculateSize(_repeated_repeatedFixed64_codec); - size += repeatedSfixed32_.CalculateSize(_repeated_repeatedSfixed32_codec); - size += repeatedSfixed64_.CalculateSize(_repeated_repeatedSfixed64_codec); - size += repeatedFloat_.CalculateSize(_repeated_repeatedFloat_codec); - size += repeatedDouble_.CalculateSize(_repeated_repeatedDouble_codec); - size += repeatedBool_.CalculateSize(_repeated_repeatedBool_codec); - size += repeatedString_.CalculateSize(_repeated_repeatedString_codec); - size += repeatedBytes_.CalculateSize(_repeated_repeatedBytes_codec); - size += repeatedNestedMessage_.CalculateSize(_repeated_repeatedNestedMessage_codec); - size += repeatedForeignMessage_.CalculateSize(_repeated_repeatedForeignMessage_codec); - size += repeatedImportMessage_.CalculateSize(_repeated_repeatedImportMessage_codec); - size += repeatedNestedEnum_.CalculateSize(_repeated_repeatedNestedEnum_codec); - size += repeatedForeignEnum_.CalculateSize(_repeated_repeatedForeignEnum_codec); - size += repeatedImportEnum_.CalculateSize(_repeated_repeatedImportEnum_codec); - size += repeatedPublicImportMessage_.CalculateSize(_repeated_repeatedPublicImportMessage_codec); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { - size += 2 + pb::CodedOutputStream.ComputeUInt32Size(OneofUint32); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(OneofNestedMessage); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(OneofString); - } - if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { - size += 2 + pb::CodedOutputStream.ComputeBytesSize(OneofBytes); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestAllTypes other) { - if (other == null) { - return; - } - if (other.SingleInt32 != 0) { - SingleInt32 = other.SingleInt32; - } - if (other.SingleInt64 != 0L) { - SingleInt64 = other.SingleInt64; - } - if (other.SingleUint32 != 0) { - SingleUint32 = other.SingleUint32; - } - if (other.SingleUint64 != 0UL) { - SingleUint64 = other.SingleUint64; - } - if (other.SingleSint32 != 0) { - SingleSint32 = other.SingleSint32; - } - if (other.SingleSint64 != 0L) { - SingleSint64 = other.SingleSint64; - } - if (other.SingleFixed32 != 0) { - SingleFixed32 = other.SingleFixed32; - } - if (other.SingleFixed64 != 0UL) { - SingleFixed64 = other.SingleFixed64; - } - if (other.SingleSfixed32 != 0) { - SingleSfixed32 = other.SingleSfixed32; - } - if (other.SingleSfixed64 != 0L) { - SingleSfixed64 = other.SingleSfixed64; - } - if (other.SingleFloat != 0F) { - SingleFloat = other.SingleFloat; - } - if (other.SingleDouble != 0D) { - SingleDouble = other.SingleDouble; - } - if (other.SingleBool != false) { - SingleBool = other.SingleBool; - } - if (other.SingleString.Length != 0) { - SingleString = other.SingleString; - } - if (other.SingleBytes.Length != 0) { - SingleBytes = other.SingleBytes; - } - if (other.singleNestedMessage_ != null) { - if (singleNestedMessage_ == null) { - SingleNestedMessage = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - } - SingleNestedMessage.MergeFrom(other.SingleNestedMessage); - } - if (other.singleForeignMessage_ != null) { - if (singleForeignMessage_ == null) { - SingleForeignMessage = new global::Google.Protobuf.TestProtos.ForeignMessage(); - } - SingleForeignMessage.MergeFrom(other.SingleForeignMessage); - } - if (other.singleImportMessage_ != null) { - if (singleImportMessage_ == null) { - SingleImportMessage = new global::Google.Protobuf.TestProtos.ImportMessage(); - } - SingleImportMessage.MergeFrom(other.SingleImportMessage); - } - if (other.SingleNestedEnum != global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum.Unspecified) { - SingleNestedEnum = other.SingleNestedEnum; - } - if (other.SingleForeignEnum != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - SingleForeignEnum = other.SingleForeignEnum; - } - if (other.SingleImportEnum != global::Google.Protobuf.TestProtos.ImportEnum.Unspecified) { - SingleImportEnum = other.SingleImportEnum; - } - if (other.singlePublicImportMessage_ != null) { - if (singlePublicImportMessage_ == null) { - SinglePublicImportMessage = new global::Google.Protobuf.TestProtos.PublicImportMessage(); - } - SinglePublicImportMessage.MergeFrom(other.SinglePublicImportMessage); - } - repeatedInt32_.Add(other.repeatedInt32_); - repeatedInt64_.Add(other.repeatedInt64_); - repeatedUint32_.Add(other.repeatedUint32_); - repeatedUint64_.Add(other.repeatedUint64_); - repeatedSint32_.Add(other.repeatedSint32_); - repeatedSint64_.Add(other.repeatedSint64_); - repeatedFixed32_.Add(other.repeatedFixed32_); - repeatedFixed64_.Add(other.repeatedFixed64_); - repeatedSfixed32_.Add(other.repeatedSfixed32_); - repeatedSfixed64_.Add(other.repeatedSfixed64_); - repeatedFloat_.Add(other.repeatedFloat_); - repeatedDouble_.Add(other.repeatedDouble_); - repeatedBool_.Add(other.repeatedBool_); - repeatedString_.Add(other.repeatedString_); - repeatedBytes_.Add(other.repeatedBytes_); - repeatedNestedMessage_.Add(other.repeatedNestedMessage_); - repeatedForeignMessage_.Add(other.repeatedForeignMessage_); - repeatedImportMessage_.Add(other.repeatedImportMessage_); - repeatedNestedEnum_.Add(other.repeatedNestedEnum_); - repeatedForeignEnum_.Add(other.repeatedForeignEnum_); - repeatedImportEnum_.Add(other.repeatedImportEnum_); - repeatedPublicImportMessage_.Add(other.repeatedPublicImportMessage_); - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.OneofUint32: - OneofUint32 = other.OneofUint32; - break; - case OneofFieldOneofCase.OneofNestedMessage: - if (OneofNestedMessage == null) { - OneofNestedMessage = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - } - OneofNestedMessage.MergeFrom(other.OneofNestedMessage); - break; - case OneofFieldOneofCase.OneofString: - OneofString = other.OneofString; - break; - case OneofFieldOneofCase.OneofBytes: - OneofBytes = other.OneofBytes; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - SingleInt32 = input.ReadInt32(); - break; - } - case 16: { - SingleInt64 = input.ReadInt64(); - break; - } - case 24: { - SingleUint32 = input.ReadUInt32(); - break; - } - case 32: { - SingleUint64 = input.ReadUInt64(); - break; - } - case 40: { - SingleSint32 = input.ReadSInt32(); - break; - } - case 48: { - SingleSint64 = input.ReadSInt64(); - break; - } - case 61: { - SingleFixed32 = input.ReadFixed32(); - break; - } - case 65: { - SingleFixed64 = input.ReadFixed64(); - break; - } - case 77: { - SingleSfixed32 = input.ReadSFixed32(); - break; - } - case 81: { - SingleSfixed64 = input.ReadSFixed64(); - break; - } - case 93: { - SingleFloat = input.ReadFloat(); - break; - } - case 97: { - SingleDouble = input.ReadDouble(); - break; - } - case 104: { - SingleBool = input.ReadBool(); - break; - } - case 114: { - SingleString = input.ReadString(); - break; - } - case 122: { - SingleBytes = input.ReadBytes(); - break; - } - case 146: { - if (singleNestedMessage_ == null) { - SingleNestedMessage = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - } - input.ReadMessage(SingleNestedMessage); - break; - } - case 154: { - if (singleForeignMessage_ == null) { - SingleForeignMessage = new global::Google.Protobuf.TestProtos.ForeignMessage(); - } - input.ReadMessage(SingleForeignMessage); - break; - } - case 162: { - if (singleImportMessage_ == null) { - SingleImportMessage = new global::Google.Protobuf.TestProtos.ImportMessage(); - } - input.ReadMessage(SingleImportMessage); - break; - } - case 168: { - SingleNestedEnum = (global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedEnum) input.ReadEnum(); - break; - } - case 176: { - SingleForeignEnum = (global::Google.Protobuf.TestProtos.ForeignEnum) input.ReadEnum(); - break; - } - case 184: { - SingleImportEnum = (global::Google.Protobuf.TestProtos.ImportEnum) input.ReadEnum(); - break; - } - case 210: { - if (singlePublicImportMessage_ == null) { - SinglePublicImportMessage = new global::Google.Protobuf.TestProtos.PublicImportMessage(); - } - input.ReadMessage(SinglePublicImportMessage); - break; - } - case 250: - case 248: { - repeatedInt32_.AddEntriesFrom(input, _repeated_repeatedInt32_codec); - break; - } - case 258: - case 256: { - repeatedInt64_.AddEntriesFrom(input, _repeated_repeatedInt64_codec); - break; - } - case 266: - case 264: { - repeatedUint32_.AddEntriesFrom(input, _repeated_repeatedUint32_codec); - break; - } - case 274: - case 272: { - repeatedUint64_.AddEntriesFrom(input, _repeated_repeatedUint64_codec); - break; - } - case 282: - case 280: { - repeatedSint32_.AddEntriesFrom(input, _repeated_repeatedSint32_codec); - break; - } - case 290: - case 288: { - repeatedSint64_.AddEntriesFrom(input, _repeated_repeatedSint64_codec); - break; - } - case 298: - case 301: { - repeatedFixed32_.AddEntriesFrom(input, _repeated_repeatedFixed32_codec); - break; - } - case 306: - case 305: { - repeatedFixed64_.AddEntriesFrom(input, _repeated_repeatedFixed64_codec); - break; - } - case 314: - case 317: { - repeatedSfixed32_.AddEntriesFrom(input, _repeated_repeatedSfixed32_codec); - break; - } - case 322: - case 321: { - repeatedSfixed64_.AddEntriesFrom(input, _repeated_repeatedSfixed64_codec); - break; - } - case 330: - case 333: { - repeatedFloat_.AddEntriesFrom(input, _repeated_repeatedFloat_codec); - break; - } - case 338: - case 337: { - repeatedDouble_.AddEntriesFrom(input, _repeated_repeatedDouble_codec); - break; - } - case 346: - case 344: { - repeatedBool_.AddEntriesFrom(input, _repeated_repeatedBool_codec); - break; - } - case 354: { - repeatedString_.AddEntriesFrom(input, _repeated_repeatedString_codec); - break; - } - case 362: { - repeatedBytes_.AddEntriesFrom(input, _repeated_repeatedBytes_codec); - break; - } - case 386: { - repeatedNestedMessage_.AddEntriesFrom(input, _repeated_repeatedNestedMessage_codec); - break; - } - case 394: { - repeatedForeignMessage_.AddEntriesFrom(input, _repeated_repeatedForeignMessage_codec); - break; - } - case 402: { - repeatedImportMessage_.AddEntriesFrom(input, _repeated_repeatedImportMessage_codec); - break; - } - case 410: - case 408: { - repeatedNestedEnum_.AddEntriesFrom(input, _repeated_repeatedNestedEnum_codec); - break; - } - case 418: - case 416: { - repeatedForeignEnum_.AddEntriesFrom(input, _repeated_repeatedForeignEnum_codec); - break; - } - case 426: - case 424: { - repeatedImportEnum_.AddEntriesFrom(input, _repeated_repeatedImportEnum_codec); - break; - } - case 434: { - repeatedPublicImportMessage_.AddEntriesFrom(input, _repeated_repeatedPublicImportMessage_codec); - break; - } - case 888: { - OneofUint32 = input.ReadUInt32(); - break; - } - case 898: { - global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage subBuilder = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { - subBuilder.MergeFrom(OneofNestedMessage); - } - input.ReadMessage(subBuilder); - OneofNestedMessage = subBuilder; - break; - } - case 906: { - OneofString = input.ReadString(); - break; - } - case 914: { - OneofBytes = input.ReadBytes(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the TestAllTypes message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public enum NestedEnum { - [pbr::OriginalName("NESTED_ENUM_UNSPECIFIED")] Unspecified = 0, - [pbr::OriginalName("FOO")] Foo = 1, - [pbr::OriginalName("BAR")] Bar = 2, - [pbr::OriginalName("BAZ")] Baz = 3, - /// - /// Intentionally negative. - /// - [pbr::OriginalName("NEG")] Neg = -1, - } - - public sealed partial class NestedMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.TestAllTypes.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage(NestedMessage other) : this() { - bb_ = other.bb_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage Clone() { - return new NestedMessage(this); - } - - /// Field number for the "bb" field. - public const int BbFieldNumber = 1; - private int bb_; - /// - /// The field name "b" fails to compile in proto1 because it conflicts with - /// a local variable named "b" in one of the generated methods. Doh. - /// This file needs to compile in proto1 to test backwards-compatibility. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Bb { - get { return bb_; } - set { - bb_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Bb != other.Bb) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Bb != 0) hash ^= Bb.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Bb != 0) { - output.WriteRawTag(8); - output.WriteInt32(Bb); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Bb != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Bb); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedMessage other) { - if (other == null) { - return; - } - if (other.Bb != 0) { - Bb = other.Bb; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Bb = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - /// - /// This proto includes a recusively nested message. - /// - public sealed partial class NestedTestAllTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedTestAllTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTestAllTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTestAllTypes(NestedTestAllTypes other) : this() { - child_ = other.child_ != null ? other.child_.Clone() : null; - payload_ = other.payload_ != null ? other.payload_.Clone() : null; - repeatedChild_ = other.repeatedChild_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedTestAllTypes Clone() { - return new NestedTestAllTypes(this); - } - - /// Field number for the "child" field. - public const int ChildFieldNumber = 1; - private global::Google.Protobuf.TestProtos.NestedTestAllTypes child_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.NestedTestAllTypes Child { - get { return child_; } - set { - child_ = value; - } - } - - /// Field number for the "payload" field. - public const int PayloadFieldNumber = 2; - private global::Google.Protobuf.TestProtos.TestAllTypes payload_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes Payload { - get { return payload_; } - set { - payload_ = value; - } - } - - /// Field number for the "repeated_child" field. - public const int RepeatedChildFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_repeatedChild_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.TestProtos.NestedTestAllTypes.Parser); - private readonly pbc::RepeatedField repeatedChild_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedChild { - get { return repeatedChild_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedTestAllTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedTestAllTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(Child, other.Child)) return false; - if (!object.Equals(Payload, other.Payload)) return false; - if(!repeatedChild_.Equals(other.repeatedChild_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (child_ != null) hash ^= Child.GetHashCode(); - if (payload_ != null) hash ^= Payload.GetHashCode(); - hash ^= repeatedChild_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (child_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Child); - } - if (payload_ != null) { - output.WriteRawTag(18); - output.WriteMessage(Payload); - } - repeatedChild_.WriteTo(output, _repeated_repeatedChild_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (child_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Child); - } - if (payload_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Payload); - } - size += repeatedChild_.CalculateSize(_repeated_repeatedChild_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedTestAllTypes other) { - if (other == null) { - return; - } - if (other.child_ != null) { - if (child_ == null) { - Child = new global::Google.Protobuf.TestProtos.NestedTestAllTypes(); - } - Child.MergeFrom(other.Child); - } - if (other.payload_ != null) { - if (payload_ == null) { - Payload = new global::Google.Protobuf.TestProtos.TestAllTypes(); - } - Payload.MergeFrom(other.Payload); - } - repeatedChild_.Add(other.repeatedChild_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (child_ == null) { - Child = new global::Google.Protobuf.TestProtos.NestedTestAllTypes(); - } - input.ReadMessage(Child); - break; - } - case 18: { - if (payload_ == null) { - Payload = new global::Google.Protobuf.TestProtos.TestAllTypes(); - } - input.ReadMessage(Payload); - break; - } - case 26: { - repeatedChild_.AddEntriesFrom(input, _repeated_repeatedChild_codec); - break; - } - } - } - } - - } - - public sealed partial class TestDeprecatedFields : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestDeprecatedFields()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestDeprecatedFields() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestDeprecatedFields(TestDeprecatedFields other) : this() { - deprecatedInt32_ = other.deprecatedInt32_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestDeprecatedFields Clone() { - return new TestDeprecatedFields(this); - } - - /// Field number for the "deprecated_int32" field. - public const int DeprecatedInt32FieldNumber = 1; - private int deprecatedInt32_; - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int DeprecatedInt32 { - get { return deprecatedInt32_; } - set { - deprecatedInt32_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestDeprecatedFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestDeprecatedFields other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (DeprecatedInt32 != other.DeprecatedInt32) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (DeprecatedInt32 != 0) hash ^= DeprecatedInt32.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (DeprecatedInt32 != 0) { - output.WriteRawTag(8); - output.WriteInt32(DeprecatedInt32); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (DeprecatedInt32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(DeprecatedInt32); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestDeprecatedFields other) { - if (other == null) { - return; - } - if (other.DeprecatedInt32 != 0) { - DeprecatedInt32 = other.DeprecatedInt32; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - DeprecatedInt32 = input.ReadInt32(); - break; - } - } - } - } - - } - - /// - /// Define these after TestAllTypes to make sure the compiler can handle - /// that. - /// - public sealed partial class ForeignMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ForeignMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage(ForeignMessage other) : this() { - c_ = other.c_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ForeignMessage Clone() { - return new ForeignMessage(this); - } - - /// Field number for the "c" field. - public const int CFieldNumber = 1; - private int c_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int C { - get { return c_; } - set { - c_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ForeignMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ForeignMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (C != other.C) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (C != 0) hash ^= C.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (C != 0) { - output.WriteRawTag(8); - output.WriteInt32(C); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (C != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(C); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ForeignMessage other) { - if (other == null) { - return; - } - if (other.C != 0) { - C = other.C; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - C = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class TestReservedFields : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestReservedFields()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReservedFields() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReservedFields(TestReservedFields other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReservedFields Clone() { - return new TestReservedFields(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestReservedFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestReservedFields other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestReservedFields other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - /// - /// Test that we can use NestedMessage from outside TestAllTypes. - /// - public sealed partial class TestForeignNested : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestForeignNested()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestForeignNested() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestForeignNested(TestForeignNested other) : this() { - foreignNested_ = other.foreignNested_ != null ? other.foreignNested_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestForeignNested Clone() { - return new TestForeignNested(this); - } - - /// Field number for the "foreign_nested" field. - public const int ForeignNestedFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage foreignNested_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage ForeignNested { - get { return foreignNested_; } - set { - foreignNested_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestForeignNested); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestForeignNested other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(ForeignNested, other.ForeignNested)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (foreignNested_ != null) hash ^= ForeignNested.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (foreignNested_ != null) { - output.WriteRawTag(10); - output.WriteMessage(ForeignNested); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (foreignNested_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(ForeignNested); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestForeignNested other) { - if (other == null) { - return; - } - if (other.foreignNested_ != null) { - if (foreignNested_ == null) { - ForeignNested = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - } - ForeignNested.MergeFrom(other.ForeignNested); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (foreignNested_ == null) { - ForeignNested = new global::Google.Protobuf.TestProtos.TestAllTypes.Types.NestedMessage(); - } - input.ReadMessage(ForeignNested); - break; - } - } - } - } - - } - - /// - /// Test that really large tag numbers don't break anything. - /// - public sealed partial class TestReallyLargeTagNumber : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestReallyLargeTagNumber()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReallyLargeTagNumber() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReallyLargeTagNumber(TestReallyLargeTagNumber other) : this() { - a_ = other.a_; - bb_ = other.bb_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestReallyLargeTagNumber Clone() { - return new TestReallyLargeTagNumber(this); - } - - /// Field number for the "a" field. - public const int AFieldNumber = 1; - private int a_; - /// - /// The largest possible tag number is 2^28 - 1, since the wire format uses - /// three bits to communicate wire type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int A { - get { return a_; } - set { - a_ = value; - } - } - - /// Field number for the "bb" field. - public const int BbFieldNumber = 268435455; - private int bb_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Bb { - get { return bb_; } - set { - bb_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestReallyLargeTagNumber); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestReallyLargeTagNumber other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (A != other.A) return false; - if (Bb != other.Bb) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (A != 0) hash ^= A.GetHashCode(); - if (Bb != 0) hash ^= Bb.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (A != 0) { - output.WriteRawTag(8); - output.WriteInt32(A); - } - if (Bb != 0) { - output.WriteRawTag(248, 255, 255, 255, 7); - output.WriteInt32(Bb); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (A != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(A); - } - if (Bb != 0) { - size += 5 + pb::CodedOutputStream.ComputeInt32Size(Bb); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestReallyLargeTagNumber other) { - if (other == null) { - return; - } - if (other.A != 0) { - A = other.A; - } - if (other.Bb != 0) { - Bb = other.Bb; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - A = input.ReadInt32(); - break; - } - case 2147483640: { - Bb = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class TestRecursiveMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestRecursiveMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRecursiveMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRecursiveMessage(TestRecursiveMessage other) : this() { - a_ = other.a_ != null ? other.a_.Clone() : null; - i_ = other.i_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRecursiveMessage Clone() { - return new TestRecursiveMessage(this); - } - - /// Field number for the "a" field. - public const int AFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestRecursiveMessage a_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestRecursiveMessage A { - get { return a_; } - set { - a_ = value; - } - } - - /// Field number for the "i" field. - public const int IFieldNumber = 2; - private int i_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int I { - get { return i_; } - set { - i_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestRecursiveMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestRecursiveMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(A, other.A)) return false; - if (I != other.I) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (a_ != null) hash ^= A.GetHashCode(); - if (I != 0) hash ^= I.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (a_ != null) { - output.WriteRawTag(10); - output.WriteMessage(A); - } - if (I != 0) { - output.WriteRawTag(16); - output.WriteInt32(I); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (a_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(A); - } - if (I != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(I); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestRecursiveMessage other) { - if (other == null) { - return; - } - if (other.a_ != null) { - if (a_ == null) { - A = new global::Google.Protobuf.TestProtos.TestRecursiveMessage(); - } - A.MergeFrom(other.A); - } - if (other.I != 0) { - I = other.I; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (a_ == null) { - A = new global::Google.Protobuf.TestProtos.TestRecursiveMessage(); - } - input.ReadMessage(A); - break; - } - case 16: { - I = input.ReadInt32(); - break; - } - } - } - } - - } - - /// - /// Test that mutual recursion works. - /// - public sealed partial class TestMutualRecursionA : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMutualRecursionA()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[8]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionA() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionA(TestMutualRecursionA other) : this() { - bb_ = other.bb_ != null ? other.bb_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionA Clone() { - return new TestMutualRecursionA(this); - } - - /// Field number for the "bb" field. - public const int BbFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestMutualRecursionB bb_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestMutualRecursionB Bb { - get { return bb_; } - set { - bb_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMutualRecursionA); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMutualRecursionA other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(Bb, other.Bb)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (bb_ != null) hash ^= Bb.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (bb_ != null) { - output.WriteRawTag(10); - output.WriteMessage(Bb); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (bb_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Bb); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMutualRecursionA other) { - if (other == null) { - return; - } - if (other.bb_ != null) { - if (bb_ == null) { - Bb = new global::Google.Protobuf.TestProtos.TestMutualRecursionB(); - } - Bb.MergeFrom(other.Bb); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (bb_ == null) { - Bb = new global::Google.Protobuf.TestProtos.TestMutualRecursionB(); - } - input.ReadMessage(Bb); - break; - } - } - } - } - - } - - public sealed partial class TestMutualRecursionB : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestMutualRecursionB()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[9]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionB() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionB(TestMutualRecursionB other) : this() { - a_ = other.a_ != null ? other.a_.Clone() : null; - optionalInt32_ = other.optionalInt32_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestMutualRecursionB Clone() { - return new TestMutualRecursionB(this); - } - - /// Field number for the "a" field. - public const int AFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestMutualRecursionA a_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestMutualRecursionA A { - get { return a_; } - set { - a_ = value; - } - } - - /// Field number for the "optional_int32" field. - public const int OptionalInt32FieldNumber = 2; - private int optionalInt32_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OptionalInt32 { - get { return optionalInt32_; } - set { - optionalInt32_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestMutualRecursionB); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestMutualRecursionB other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(A, other.A)) return false; - if (OptionalInt32 != other.OptionalInt32) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (a_ != null) hash ^= A.GetHashCode(); - if (OptionalInt32 != 0) hash ^= OptionalInt32.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (a_ != null) { - output.WriteRawTag(10); - output.WriteMessage(A); - } - if (OptionalInt32 != 0) { - output.WriteRawTag(16); - output.WriteInt32(OptionalInt32); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (a_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(A); - } - if (OptionalInt32 != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(OptionalInt32); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestMutualRecursionB other) { - if (other == null) { - return; - } - if (other.a_ != null) { - if (a_ == null) { - A = new global::Google.Protobuf.TestProtos.TestMutualRecursionA(); - } - A.MergeFrom(other.A); - } - if (other.OptionalInt32 != 0) { - OptionalInt32 = other.OptionalInt32; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (a_ == null) { - A = new global::Google.Protobuf.TestProtos.TestMutualRecursionA(); - } - input.ReadMessage(A); - break; - } - case 16: { - OptionalInt32 = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class TestEnumAllowAlias : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestEnumAllowAlias()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[10]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEnumAllowAlias() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEnumAllowAlias(TestEnumAllowAlias other) : this() { - value_ = other.value_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEnumAllowAlias Clone() { - return new TestEnumAllowAlias(this); - } - - /// Field number for the "value" field. - public const int ValueFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestEnumWithDupValue value_ = global::Google.Protobuf.TestProtos.TestEnumWithDupValue.Unspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestEnumWithDupValue Value { - get { return value_; } - set { - value_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestEnumAllowAlias); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestEnumAllowAlias other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Value != other.Value) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Value != global::Google.Protobuf.TestProtos.TestEnumWithDupValue.Unspecified) hash ^= Value.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Value != global::Google.Protobuf.TestProtos.TestEnumWithDupValue.Unspecified) { - output.WriteRawTag(8); - output.WriteEnum((int) Value); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Value != global::Google.Protobuf.TestProtos.TestEnumWithDupValue.Unspecified) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Value); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestEnumAllowAlias other) { - if (other == null) { - return; - } - if (other.Value != global::Google.Protobuf.TestProtos.TestEnumWithDupValue.Unspecified) { - Value = other.Value; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Value = (global::Google.Protobuf.TestProtos.TestEnumWithDupValue) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// Test message with CamelCase field names. This violates Protocol Buffer - /// standard style. - /// - public sealed partial class TestCamelCaseFieldNames : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestCamelCaseFieldNames()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[11]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCamelCaseFieldNames() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCamelCaseFieldNames(TestCamelCaseFieldNames other) : this() { - primitiveField_ = other.primitiveField_; - stringField_ = other.stringField_; - enumField_ = other.enumField_; - messageField_ = other.messageField_ != null ? other.messageField_.Clone() : null; - repeatedPrimitiveField_ = other.repeatedPrimitiveField_.Clone(); - repeatedStringField_ = other.repeatedStringField_.Clone(); - repeatedEnumField_ = other.repeatedEnumField_.Clone(); - repeatedMessageField_ = other.repeatedMessageField_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCamelCaseFieldNames Clone() { - return new TestCamelCaseFieldNames(this); - } - - /// Field number for the "PrimitiveField" field. - public const int PrimitiveFieldFieldNumber = 1; - private int primitiveField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int PrimitiveField { - get { return primitiveField_; } - set { - primitiveField_ = value; - } - } - - /// Field number for the "StringField" field. - public const int StringFieldFieldNumber = 2; - private string stringField_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string StringField { - get { return stringField_; } - set { - stringField_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "EnumField" field. - public const int EnumFieldFieldNumber = 3; - private global::Google.Protobuf.TestProtos.ForeignEnum enumField_ = global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ForeignEnum EnumField { - get { return enumField_; } - set { - enumField_ = value; - } - } - - /// Field number for the "MessageField" field. - public const int MessageFieldFieldNumber = 4; - private global::Google.Protobuf.TestProtos.ForeignMessage messageField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.ForeignMessage MessageField { - get { return messageField_; } - set { - messageField_ = value; - } - } - - /// Field number for the "RepeatedPrimitiveField" field. - public const int RepeatedPrimitiveFieldFieldNumber = 7; - private static readonly pb::FieldCodec _repeated_repeatedPrimitiveField_codec - = pb::FieldCodec.ForInt32(58); - private readonly pbc::RepeatedField repeatedPrimitiveField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedPrimitiveField { - get { return repeatedPrimitiveField_; } - } - - /// Field number for the "RepeatedStringField" field. - public const int RepeatedStringFieldFieldNumber = 8; - private static readonly pb::FieldCodec _repeated_repeatedStringField_codec - = pb::FieldCodec.ForString(66); - private readonly pbc::RepeatedField repeatedStringField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedStringField { - get { return repeatedStringField_; } - } - - /// Field number for the "RepeatedEnumField" field. - public const int RepeatedEnumFieldFieldNumber = 9; - private static readonly pb::FieldCodec _repeated_repeatedEnumField_codec - = pb::FieldCodec.ForEnum(74, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x); - private readonly pbc::RepeatedField repeatedEnumField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedEnumField { - get { return repeatedEnumField_; } - } - - /// Field number for the "RepeatedMessageField" field. - public const int RepeatedMessageFieldFieldNumber = 10; - private static readonly pb::FieldCodec _repeated_repeatedMessageField_codec - = pb::FieldCodec.ForMessage(82, global::Google.Protobuf.TestProtos.ForeignMessage.Parser); - private readonly pbc::RepeatedField repeatedMessageField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedMessageField { - get { return repeatedMessageField_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestCamelCaseFieldNames); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestCamelCaseFieldNames other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (PrimitiveField != other.PrimitiveField) return false; - if (StringField != other.StringField) return false; - if (EnumField != other.EnumField) return false; - if (!object.Equals(MessageField, other.MessageField)) return false; - if(!repeatedPrimitiveField_.Equals(other.repeatedPrimitiveField_)) return false; - if(!repeatedStringField_.Equals(other.repeatedStringField_)) return false; - if(!repeatedEnumField_.Equals(other.repeatedEnumField_)) return false; - if(!repeatedMessageField_.Equals(other.repeatedMessageField_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (PrimitiveField != 0) hash ^= PrimitiveField.GetHashCode(); - if (StringField.Length != 0) hash ^= StringField.GetHashCode(); - if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) hash ^= EnumField.GetHashCode(); - if (messageField_ != null) hash ^= MessageField.GetHashCode(); - hash ^= repeatedPrimitiveField_.GetHashCode(); - hash ^= repeatedStringField_.GetHashCode(); - hash ^= repeatedEnumField_.GetHashCode(); - hash ^= repeatedMessageField_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (PrimitiveField != 0) { - output.WriteRawTag(8); - output.WriteInt32(PrimitiveField); - } - if (StringField.Length != 0) { - output.WriteRawTag(18); - output.WriteString(StringField); - } - if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - output.WriteRawTag(24); - output.WriteEnum((int) EnumField); - } - if (messageField_ != null) { - output.WriteRawTag(34); - output.WriteMessage(MessageField); - } - repeatedPrimitiveField_.WriteTo(output, _repeated_repeatedPrimitiveField_codec); - repeatedStringField_.WriteTo(output, _repeated_repeatedStringField_codec); - repeatedEnumField_.WriteTo(output, _repeated_repeatedEnumField_codec); - repeatedMessageField_.WriteTo(output, _repeated_repeatedMessageField_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (PrimitiveField != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(PrimitiveField); - } - if (StringField.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(StringField); - } - if (EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) EnumField); - } - if (messageField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(MessageField); - } - size += repeatedPrimitiveField_.CalculateSize(_repeated_repeatedPrimitiveField_codec); - size += repeatedStringField_.CalculateSize(_repeated_repeatedStringField_codec); - size += repeatedEnumField_.CalculateSize(_repeated_repeatedEnumField_codec); - size += repeatedMessageField_.CalculateSize(_repeated_repeatedMessageField_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestCamelCaseFieldNames other) { - if (other == null) { - return; - } - if (other.PrimitiveField != 0) { - PrimitiveField = other.PrimitiveField; - } - if (other.StringField.Length != 0) { - StringField = other.StringField; - } - if (other.EnumField != global::Google.Protobuf.TestProtos.ForeignEnum.ForeignUnspecified) { - EnumField = other.EnumField; - } - if (other.messageField_ != null) { - if (messageField_ == null) { - MessageField = new global::Google.Protobuf.TestProtos.ForeignMessage(); - } - MessageField.MergeFrom(other.MessageField); - } - repeatedPrimitiveField_.Add(other.repeatedPrimitiveField_); - repeatedStringField_.Add(other.repeatedStringField_); - repeatedEnumField_.Add(other.repeatedEnumField_); - repeatedMessageField_.Add(other.repeatedMessageField_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - PrimitiveField = input.ReadInt32(); - break; - } - case 18: { - StringField = input.ReadString(); - break; - } - case 24: { - EnumField = (global::Google.Protobuf.TestProtos.ForeignEnum) input.ReadEnum(); - break; - } - case 34: { - if (messageField_ == null) { - MessageField = new global::Google.Protobuf.TestProtos.ForeignMessage(); - } - input.ReadMessage(MessageField); - break; - } - case 58: - case 56: { - repeatedPrimitiveField_.AddEntriesFrom(input, _repeated_repeatedPrimitiveField_codec); - break; - } - case 66: { - repeatedStringField_.AddEntriesFrom(input, _repeated_repeatedStringField_codec); - break; - } - case 74: - case 72: { - repeatedEnumField_.AddEntriesFrom(input, _repeated_repeatedEnumField_codec); - break; - } - case 82: { - repeatedMessageField_.AddEntriesFrom(input, _repeated_repeatedMessageField_codec); - break; - } - } - } - } - - } - - /// - /// We list fields out of order, to ensure that we're using field number and not - /// field index to determine serialization order. - /// - public sealed partial class TestFieldOrderings : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestFieldOrderings()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[12]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestFieldOrderings() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestFieldOrderings(TestFieldOrderings other) : this() { - myString_ = other.myString_; - myInt_ = other.myInt_; - myFloat_ = other.myFloat_; - singleNestedMessage_ = other.singleNestedMessage_ != null ? other.singleNestedMessage_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestFieldOrderings Clone() { - return new TestFieldOrderings(this); - } - - /// Field number for the "my_string" field. - public const int MyStringFieldNumber = 11; - private string myString_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string MyString { - get { return myString_; } - set { - myString_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "my_int" field. - public const int MyIntFieldNumber = 1; - private long myInt_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long MyInt { - get { return myInt_; } - set { - myInt_ = value; - } - } - - /// Field number for the "my_float" field. - public const int MyFloatFieldNumber = 101; - private float myFloat_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float MyFloat { - get { return myFloat_; } - set { - myFloat_ = value; - } - } - - /// Field number for the "single_nested_message" field. - public const int SingleNestedMessageFieldNumber = 200; - private global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage singleNestedMessage_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage SingleNestedMessage { - get { return singleNestedMessage_; } - set { - singleNestedMessage_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestFieldOrderings); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestFieldOrderings other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (MyString != other.MyString) return false; - if (MyInt != other.MyInt) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(MyFloat, other.MyFloat)) return false; - if (!object.Equals(SingleNestedMessage, other.SingleNestedMessage)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (MyString.Length != 0) hash ^= MyString.GetHashCode(); - if (MyInt != 0L) hash ^= MyInt.GetHashCode(); - if (MyFloat != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(MyFloat); - if (singleNestedMessage_ != null) hash ^= SingleNestedMessage.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (MyInt != 0L) { - output.WriteRawTag(8); - output.WriteInt64(MyInt); - } - if (MyString.Length != 0) { - output.WriteRawTag(90); - output.WriteString(MyString); - } - if (MyFloat != 0F) { - output.WriteRawTag(173, 6); - output.WriteFloat(MyFloat); - } - if (singleNestedMessage_ != null) { - output.WriteRawTag(194, 12); - output.WriteMessage(SingleNestedMessage); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (MyString.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(MyString); - } - if (MyInt != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(MyInt); - } - if (MyFloat != 0F) { - size += 2 + 4; - } - if (singleNestedMessage_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(SingleNestedMessage); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestFieldOrderings other) { - if (other == null) { - return; - } - if (other.MyString.Length != 0) { - MyString = other.MyString; - } - if (other.MyInt != 0L) { - MyInt = other.MyInt; - } - if (other.MyFloat != 0F) { - MyFloat = other.MyFloat; - } - if (other.singleNestedMessage_ != null) { - if (singleNestedMessage_ == null) { - SingleNestedMessage = new global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage(); - } - SingleNestedMessage.MergeFrom(other.SingleNestedMessage); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - MyInt = input.ReadInt64(); - break; - } - case 90: { - MyString = input.ReadString(); - break; - } - case 813: { - MyFloat = input.ReadFloat(); - break; - } - case 1602: { - if (singleNestedMessage_ == null) { - SingleNestedMessage = new global::Google.Protobuf.TestProtos.TestFieldOrderings.Types.NestedMessage(); - } - input.ReadMessage(SingleNestedMessage); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the TestFieldOrderings message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - public sealed partial class NestedMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.TestFieldOrderings.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage(NestedMessage other) : this() { - oo_ = other.oo_; - bb_ = other.bb_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedMessage Clone() { - return new NestedMessage(this); - } - - /// Field number for the "oo" field. - public const int OoFieldNumber = 2; - private long oo_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Oo { - get { return oo_; } - set { - oo_ = value; - } - } - - /// Field number for the "bb" field. - public const int BbFieldNumber = 1; - private int bb_; - /// - /// The field name "b" fails to compile in proto1 because it conflicts with - /// a local variable named "b" in one of the generated methods. Doh. - /// This file needs to compile in proto1 to test backwards-compatibility. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Bb { - get { return bb_; } - set { - bb_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Oo != other.Oo) return false; - if (Bb != other.Bb) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Oo != 0L) hash ^= Oo.GetHashCode(); - if (Bb != 0) hash ^= Bb.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Bb != 0) { - output.WriteRawTag(8); - output.WriteInt32(Bb); - } - if (Oo != 0L) { - output.WriteRawTag(16); - output.WriteInt64(Oo); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Oo != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Oo); - } - if (Bb != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Bb); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedMessage other) { - if (other == null) { - return; - } - if (other.Oo != 0L) { - Oo = other.Oo; - } - if (other.Bb != 0) { - Bb = other.Bb; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Bb = input.ReadInt32(); - break; - } - case 16: { - Oo = input.ReadInt64(); - break; - } - } - } - } - - } - - } - #endregion - - } - - public sealed partial class SparseEnumMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SparseEnumMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[13]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SparseEnumMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SparseEnumMessage(SparseEnumMessage other) : this() { - sparseEnum_ = other.sparseEnum_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SparseEnumMessage Clone() { - return new SparseEnumMessage(this); - } - - /// Field number for the "sparse_enum" field. - public const int SparseEnumFieldNumber = 1; - private global::Google.Protobuf.TestProtos.TestSparseEnum sparseEnum_ = global::Google.Protobuf.TestProtos.TestSparseEnum.Unspecified; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestSparseEnum SparseEnum { - get { return sparseEnum_; } - set { - sparseEnum_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SparseEnumMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SparseEnumMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (SparseEnum != other.SparseEnum) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.Unspecified) hash ^= SparseEnum.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.Unspecified) { - output.WriteRawTag(8); - output.WriteEnum((int) SparseEnum); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.Unspecified) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SparseEnum); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SparseEnumMessage other) { - if (other == null) { - return; - } - if (other.SparseEnum != global::Google.Protobuf.TestProtos.TestSparseEnum.Unspecified) { - SparseEnum = other.SparseEnum; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - SparseEnum = (global::Google.Protobuf.TestProtos.TestSparseEnum) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// Test String and Bytes: string is for valid UTF-8 strings - /// - public sealed partial class OneString : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneString()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[14]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneString() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneString(OneString other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneString Clone() { - return new OneString(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private string data_ = ""; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Data { - get { return data_; } - set { - data_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneString); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneString other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data.Length != 0) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneString other) { - if (other == null) { - return; - } - if (other.Data.Length != 0) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Data = input.ReadString(); - break; - } - } - } - } - - } - - public sealed partial class MoreString : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MoreString()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[15]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreString() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreString(MoreString other) : this() { - data_ = other.data_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreString Clone() { - return new MoreString(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_data_codec - = pb::FieldCodec.ForString(10); - private readonly pbc::RepeatedField data_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Data { - get { return data_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MoreString); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MoreString other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!data_.Equals(other.data_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= data_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - data_.WriteTo(output, _repeated_data_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += data_.CalculateSize(_repeated_data_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MoreString other) { - if (other == null) { - return; - } - data_.Add(other.data_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - data_.AddEntriesFrom(input, _repeated_data_codec); - break; - } - } - } - } - - } - - public sealed partial class OneBytes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneBytes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[16]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneBytes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneBytes(OneBytes other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneBytes Clone() { - return new OneBytes(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private pb::ByteString data_ = pb::ByteString.Empty; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString Data { - get { return data_; } - set { - data_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneBytes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneBytes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data.Length != 0) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data.Length != 0) { - output.WriteRawTag(10); - output.WriteBytes(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneBytes other) { - if (other == null) { - return; - } - if (other.Data.Length != 0) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Data = input.ReadBytes(); - break; - } - } - } - } - - } - - public sealed partial class MoreBytes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MoreBytes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[17]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreBytes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreBytes(MoreBytes other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MoreBytes Clone() { - return new MoreBytes(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private pb::ByteString data_ = pb::ByteString.Empty; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString Data { - get { return data_; } - set { - data_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MoreBytes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MoreBytes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data.Length != 0) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data.Length != 0) { - output.WriteRawTag(10); - output.WriteBytes(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MoreBytes other) { - if (other == null) { - return; - } - if (other.Data.Length != 0) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Data = input.ReadBytes(); - break; - } - } - } - } - - } - - /// - /// Test int32, uint32, int64, uint64, and bool are all compatible - /// - public sealed partial class Int32Message : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Int32Message()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[18]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int32Message() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int32Message(Int32Message other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int32Message Clone() { - return new Int32Message(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private int data_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Data { - get { return data_; } - set { - data_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Int32Message); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Int32Message other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data != 0) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data != 0) { - output.WriteRawTag(8); - output.WriteInt32(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Int32Message other) { - if (other == null) { - return; - } - if (other.Data != 0) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Data = input.ReadInt32(); - break; - } - } - } - } - - } - - public sealed partial class Uint32Message : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Uint32Message()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[19]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint32Message() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint32Message(Uint32Message other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint32Message Clone() { - return new Uint32Message(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private uint data_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint Data { - get { return data_; } - set { - data_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Uint32Message); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Uint32Message other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data != 0) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data != 0) { - output.WriteRawTag(8); - output.WriteUInt32(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data != 0) { - size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Uint32Message other) { - if (other == null) { - return; - } - if (other.Data != 0) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Data = input.ReadUInt32(); - break; - } - } - } - } - - } - - public sealed partial class Int64Message : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Int64Message()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[20]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int64Message() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int64Message(Int64Message other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Int64Message Clone() { - return new Int64Message(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private long data_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Data { - get { return data_; } - set { - data_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Int64Message); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Int64Message other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data != 0L) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data != 0L) { - output.WriteRawTag(8); - output.WriteInt64(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Int64Message other) { - if (other == null) { - return; - } - if (other.Data != 0L) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Data = input.ReadInt64(); - break; - } - } - } - } - - } - - public sealed partial class Uint64Message : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Uint64Message()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[21]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint64Message() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint64Message(Uint64Message other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Uint64Message Clone() { - return new Uint64Message(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private ulong data_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong Data { - get { return data_; } - set { - data_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Uint64Message); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Uint64Message other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data != 0UL) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data != 0UL) { - output.WriteRawTag(8); - output.WriteUInt64(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data != 0UL) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(Data); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Uint64Message other) { - if (other == null) { - return; - } - if (other.Data != 0UL) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Data = input.ReadUInt64(); - break; - } - } - } - } - - } - - public sealed partial class BoolMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BoolMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[22]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BoolMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BoolMessage(BoolMessage other) : this() { - data_ = other.data_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BoolMessage Clone() { - return new BoolMessage(this); - } - - /// Field number for the "data" field. - public const int DataFieldNumber = 1; - private bool data_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Data { - get { return data_; } - set { - data_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as BoolMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(BoolMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Data != other.Data) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Data != false) hash ^= Data.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Data != false) { - output.WriteRawTag(8); - output.WriteBool(Data); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Data != false) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(BoolMessage other) { - if (other == null) { - return; - } - if (other.Data != false) { - Data = other.Data; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Data = input.ReadBool(); - break; - } - } - } - } - - } - - /// - /// Test oneofs. - /// - public sealed partial class TestOneof : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestOneof()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[23]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestOneof() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestOneof(TestOneof other) : this() { - switch (other.FooCase) { - case FooOneofCase.FooInt: - FooInt = other.FooInt; - break; - case FooOneofCase.FooString: - FooString = other.FooString; - break; - case FooOneofCase.FooMessage: - FooMessage = other.FooMessage.Clone(); - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestOneof Clone() { - return new TestOneof(this); - } - - /// Field number for the "foo_int" field. - public const int FooIntFieldNumber = 1; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int FooInt { - get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } - set { - foo_ = value; - fooCase_ = FooOneofCase.FooInt; - } - } - - /// Field number for the "foo_string" field. - public const int FooStringFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string FooString { - get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } - set { - foo_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - fooCase_ = FooOneofCase.FooString; - } - } - - /// Field number for the "foo_message" field. - public const int FooMessageFieldNumber = 3; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.TestProtos.TestAllTypes FooMessage { - get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.Protobuf.TestProtos.TestAllTypes) foo_ : null; } - set { - foo_ = value; - fooCase_ = value == null ? FooOneofCase.None : FooOneofCase.FooMessage; - } - } - - private object foo_; - /// Enum of possible cases for the "foo" oneof. - public enum FooOneofCase { - None = 0, - FooInt = 1, - FooString = 2, - FooMessage = 3, - } - private FooOneofCase fooCase_ = FooOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooOneofCase FooCase { - get { return fooCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearFoo() { - fooCase_ = FooOneofCase.None; - foo_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestOneof); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestOneof other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (FooInt != other.FooInt) return false; - if (FooString != other.FooString) return false; - if (!object.Equals(FooMessage, other.FooMessage)) return false; - if (FooCase != other.FooCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (fooCase_ == FooOneofCase.FooInt) hash ^= FooInt.GetHashCode(); - if (fooCase_ == FooOneofCase.FooString) hash ^= FooString.GetHashCode(); - if (fooCase_ == FooOneofCase.FooMessage) hash ^= FooMessage.GetHashCode(); - hash ^= (int) fooCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (fooCase_ == FooOneofCase.FooInt) { - output.WriteRawTag(8); - output.WriteInt32(FooInt); - } - if (fooCase_ == FooOneofCase.FooString) { - output.WriteRawTag(18); - output.WriteString(FooString); - } - if (fooCase_ == FooOneofCase.FooMessage) { - output.WriteRawTag(26); - output.WriteMessage(FooMessage); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (fooCase_ == FooOneofCase.FooInt) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(FooInt); - } - if (fooCase_ == FooOneofCase.FooString) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(FooString); - } - if (fooCase_ == FooOneofCase.FooMessage) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(FooMessage); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestOneof other) { - if (other == null) { - return; - } - switch (other.FooCase) { - case FooOneofCase.FooInt: - FooInt = other.FooInt; - break; - case FooOneofCase.FooString: - FooString = other.FooString; - break; - case FooOneofCase.FooMessage: - if (FooMessage == null) { - FooMessage = new global::Google.Protobuf.TestProtos.TestAllTypes(); - } - FooMessage.MergeFrom(other.FooMessage); - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - FooInt = input.ReadInt32(); - break; - } - case 18: { - FooString = input.ReadString(); - break; - } - case 26: { - global::Google.Protobuf.TestProtos.TestAllTypes subBuilder = new global::Google.Protobuf.TestProtos.TestAllTypes(); - if (fooCase_ == FooOneofCase.FooMessage) { - subBuilder.MergeFrom(FooMessage); - } - input.ReadMessage(subBuilder); - FooMessage = subBuilder; - break; - } - } - } - } - - } - - public sealed partial class TestPackedTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestPackedTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[24]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestPackedTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestPackedTypes(TestPackedTypes other) : this() { - packedInt32_ = other.packedInt32_.Clone(); - packedInt64_ = other.packedInt64_.Clone(); - packedUint32_ = other.packedUint32_.Clone(); - packedUint64_ = other.packedUint64_.Clone(); - packedSint32_ = other.packedSint32_.Clone(); - packedSint64_ = other.packedSint64_.Clone(); - packedFixed32_ = other.packedFixed32_.Clone(); - packedFixed64_ = other.packedFixed64_.Clone(); - packedSfixed32_ = other.packedSfixed32_.Clone(); - packedSfixed64_ = other.packedSfixed64_.Clone(); - packedFloat_ = other.packedFloat_.Clone(); - packedDouble_ = other.packedDouble_.Clone(); - packedBool_ = other.packedBool_.Clone(); - packedEnum_ = other.packedEnum_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestPackedTypes Clone() { - return new TestPackedTypes(this); - } - - /// Field number for the "packed_int32" field. - public const int PackedInt32FieldNumber = 90; - private static readonly pb::FieldCodec _repeated_packedInt32_codec - = pb::FieldCodec.ForInt32(722); - private readonly pbc::RepeatedField packedInt32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedInt32 { - get { return packedInt32_; } - } - - /// Field number for the "packed_int64" field. - public const int PackedInt64FieldNumber = 91; - private static readonly pb::FieldCodec _repeated_packedInt64_codec - = pb::FieldCodec.ForInt64(730); - private readonly pbc::RepeatedField packedInt64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedInt64 { - get { return packedInt64_; } - } - - /// Field number for the "packed_uint32" field. - public const int PackedUint32FieldNumber = 92; - private static readonly pb::FieldCodec _repeated_packedUint32_codec - = pb::FieldCodec.ForUInt32(738); - private readonly pbc::RepeatedField packedUint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedUint32 { - get { return packedUint32_; } - } - - /// Field number for the "packed_uint64" field. - public const int PackedUint64FieldNumber = 93; - private static readonly pb::FieldCodec _repeated_packedUint64_codec - = pb::FieldCodec.ForUInt64(746); - private readonly pbc::RepeatedField packedUint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedUint64 { - get { return packedUint64_; } - } - - /// Field number for the "packed_sint32" field. - public const int PackedSint32FieldNumber = 94; - private static readonly pb::FieldCodec _repeated_packedSint32_codec - = pb::FieldCodec.ForSInt32(754); - private readonly pbc::RepeatedField packedSint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedSint32 { - get { return packedSint32_; } - } - - /// Field number for the "packed_sint64" field. - public const int PackedSint64FieldNumber = 95; - private static readonly pb::FieldCodec _repeated_packedSint64_codec - = pb::FieldCodec.ForSInt64(762); - private readonly pbc::RepeatedField packedSint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedSint64 { - get { return packedSint64_; } - } - - /// Field number for the "packed_fixed32" field. - public const int PackedFixed32FieldNumber = 96; - private static readonly pb::FieldCodec _repeated_packedFixed32_codec - = pb::FieldCodec.ForFixed32(770); - private readonly pbc::RepeatedField packedFixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedFixed32 { - get { return packedFixed32_; } - } - - /// Field number for the "packed_fixed64" field. - public const int PackedFixed64FieldNumber = 97; - private static readonly pb::FieldCodec _repeated_packedFixed64_codec - = pb::FieldCodec.ForFixed64(778); - private readonly pbc::RepeatedField packedFixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedFixed64 { - get { return packedFixed64_; } - } - - /// Field number for the "packed_sfixed32" field. - public const int PackedSfixed32FieldNumber = 98; - private static readonly pb::FieldCodec _repeated_packedSfixed32_codec - = pb::FieldCodec.ForSFixed32(786); - private readonly pbc::RepeatedField packedSfixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedSfixed32 { - get { return packedSfixed32_; } - } - - /// Field number for the "packed_sfixed64" field. - public const int PackedSfixed64FieldNumber = 99; - private static readonly pb::FieldCodec _repeated_packedSfixed64_codec - = pb::FieldCodec.ForSFixed64(794); - private readonly pbc::RepeatedField packedSfixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedSfixed64 { - get { return packedSfixed64_; } - } - - /// Field number for the "packed_float" field. - public const int PackedFloatFieldNumber = 100; - private static readonly pb::FieldCodec _repeated_packedFloat_codec - = pb::FieldCodec.ForFloat(802); - private readonly pbc::RepeatedField packedFloat_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedFloat { - get { return packedFloat_; } - } - - /// Field number for the "packed_double" field. - public const int PackedDoubleFieldNumber = 101; - private static readonly pb::FieldCodec _repeated_packedDouble_codec - = pb::FieldCodec.ForDouble(810); - private readonly pbc::RepeatedField packedDouble_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedDouble { - get { return packedDouble_; } - } - - /// Field number for the "packed_bool" field. - public const int PackedBoolFieldNumber = 102; - private static readonly pb::FieldCodec _repeated_packedBool_codec - = pb::FieldCodec.ForBool(818); - private readonly pbc::RepeatedField packedBool_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedBool { - get { return packedBool_; } - } - - /// Field number for the "packed_enum" field. - public const int PackedEnumFieldNumber = 103; - private static readonly pb::FieldCodec _repeated_packedEnum_codec - = pb::FieldCodec.ForEnum(826, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x); - private readonly pbc::RepeatedField packedEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PackedEnum { - get { return packedEnum_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestPackedTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestPackedTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!packedInt32_.Equals(other.packedInt32_)) return false; - if(!packedInt64_.Equals(other.packedInt64_)) return false; - if(!packedUint32_.Equals(other.packedUint32_)) return false; - if(!packedUint64_.Equals(other.packedUint64_)) return false; - if(!packedSint32_.Equals(other.packedSint32_)) return false; - if(!packedSint64_.Equals(other.packedSint64_)) return false; - if(!packedFixed32_.Equals(other.packedFixed32_)) return false; - if(!packedFixed64_.Equals(other.packedFixed64_)) return false; - if(!packedSfixed32_.Equals(other.packedSfixed32_)) return false; - if(!packedSfixed64_.Equals(other.packedSfixed64_)) return false; - if(!packedFloat_.Equals(other.packedFloat_)) return false; - if(!packedDouble_.Equals(other.packedDouble_)) return false; - if(!packedBool_.Equals(other.packedBool_)) return false; - if(!packedEnum_.Equals(other.packedEnum_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= packedInt32_.GetHashCode(); - hash ^= packedInt64_.GetHashCode(); - hash ^= packedUint32_.GetHashCode(); - hash ^= packedUint64_.GetHashCode(); - hash ^= packedSint32_.GetHashCode(); - hash ^= packedSint64_.GetHashCode(); - hash ^= packedFixed32_.GetHashCode(); - hash ^= packedFixed64_.GetHashCode(); - hash ^= packedSfixed32_.GetHashCode(); - hash ^= packedSfixed64_.GetHashCode(); - hash ^= packedFloat_.GetHashCode(); - hash ^= packedDouble_.GetHashCode(); - hash ^= packedBool_.GetHashCode(); - hash ^= packedEnum_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - packedInt32_.WriteTo(output, _repeated_packedInt32_codec); - packedInt64_.WriteTo(output, _repeated_packedInt64_codec); - packedUint32_.WriteTo(output, _repeated_packedUint32_codec); - packedUint64_.WriteTo(output, _repeated_packedUint64_codec); - packedSint32_.WriteTo(output, _repeated_packedSint32_codec); - packedSint64_.WriteTo(output, _repeated_packedSint64_codec); - packedFixed32_.WriteTo(output, _repeated_packedFixed32_codec); - packedFixed64_.WriteTo(output, _repeated_packedFixed64_codec); - packedSfixed32_.WriteTo(output, _repeated_packedSfixed32_codec); - packedSfixed64_.WriteTo(output, _repeated_packedSfixed64_codec); - packedFloat_.WriteTo(output, _repeated_packedFloat_codec); - packedDouble_.WriteTo(output, _repeated_packedDouble_codec); - packedBool_.WriteTo(output, _repeated_packedBool_codec); - packedEnum_.WriteTo(output, _repeated_packedEnum_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += packedInt32_.CalculateSize(_repeated_packedInt32_codec); - size += packedInt64_.CalculateSize(_repeated_packedInt64_codec); - size += packedUint32_.CalculateSize(_repeated_packedUint32_codec); - size += packedUint64_.CalculateSize(_repeated_packedUint64_codec); - size += packedSint32_.CalculateSize(_repeated_packedSint32_codec); - size += packedSint64_.CalculateSize(_repeated_packedSint64_codec); - size += packedFixed32_.CalculateSize(_repeated_packedFixed32_codec); - size += packedFixed64_.CalculateSize(_repeated_packedFixed64_codec); - size += packedSfixed32_.CalculateSize(_repeated_packedSfixed32_codec); - size += packedSfixed64_.CalculateSize(_repeated_packedSfixed64_codec); - size += packedFloat_.CalculateSize(_repeated_packedFloat_codec); - size += packedDouble_.CalculateSize(_repeated_packedDouble_codec); - size += packedBool_.CalculateSize(_repeated_packedBool_codec); - size += packedEnum_.CalculateSize(_repeated_packedEnum_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestPackedTypes other) { - if (other == null) { - return; - } - packedInt32_.Add(other.packedInt32_); - packedInt64_.Add(other.packedInt64_); - packedUint32_.Add(other.packedUint32_); - packedUint64_.Add(other.packedUint64_); - packedSint32_.Add(other.packedSint32_); - packedSint64_.Add(other.packedSint64_); - packedFixed32_.Add(other.packedFixed32_); - packedFixed64_.Add(other.packedFixed64_); - packedSfixed32_.Add(other.packedSfixed32_); - packedSfixed64_.Add(other.packedSfixed64_); - packedFloat_.Add(other.packedFloat_); - packedDouble_.Add(other.packedDouble_); - packedBool_.Add(other.packedBool_); - packedEnum_.Add(other.packedEnum_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 722: - case 720: { - packedInt32_.AddEntriesFrom(input, _repeated_packedInt32_codec); - break; - } - case 730: - case 728: { - packedInt64_.AddEntriesFrom(input, _repeated_packedInt64_codec); - break; - } - case 738: - case 736: { - packedUint32_.AddEntriesFrom(input, _repeated_packedUint32_codec); - break; - } - case 746: - case 744: { - packedUint64_.AddEntriesFrom(input, _repeated_packedUint64_codec); - break; - } - case 754: - case 752: { - packedSint32_.AddEntriesFrom(input, _repeated_packedSint32_codec); - break; - } - case 762: - case 760: { - packedSint64_.AddEntriesFrom(input, _repeated_packedSint64_codec); - break; - } - case 770: - case 773: { - packedFixed32_.AddEntriesFrom(input, _repeated_packedFixed32_codec); - break; - } - case 778: - case 777: { - packedFixed64_.AddEntriesFrom(input, _repeated_packedFixed64_codec); - break; - } - case 786: - case 789: { - packedSfixed32_.AddEntriesFrom(input, _repeated_packedSfixed32_codec); - break; - } - case 794: - case 793: { - packedSfixed64_.AddEntriesFrom(input, _repeated_packedSfixed64_codec); - break; - } - case 802: - case 805: { - packedFloat_.AddEntriesFrom(input, _repeated_packedFloat_codec); - break; - } - case 810: - case 809: { - packedDouble_.AddEntriesFrom(input, _repeated_packedDouble_codec); - break; - } - case 818: - case 816: { - packedBool_.AddEntriesFrom(input, _repeated_packedBool_codec); - break; - } - case 826: - case 824: { - packedEnum_.AddEntriesFrom(input, _repeated_packedEnum_codec); - break; - } - } - } - } - - } - - /// - /// A message with the same fields as TestPackedTypes, but without packing. Used - /// to test packed <-> unpacked wire compatibility. - /// - public sealed partial class TestUnpackedTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestUnpackedTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[25]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestUnpackedTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestUnpackedTypes(TestUnpackedTypes other) : this() { - unpackedInt32_ = other.unpackedInt32_.Clone(); - unpackedInt64_ = other.unpackedInt64_.Clone(); - unpackedUint32_ = other.unpackedUint32_.Clone(); - unpackedUint64_ = other.unpackedUint64_.Clone(); - unpackedSint32_ = other.unpackedSint32_.Clone(); - unpackedSint64_ = other.unpackedSint64_.Clone(); - unpackedFixed32_ = other.unpackedFixed32_.Clone(); - unpackedFixed64_ = other.unpackedFixed64_.Clone(); - unpackedSfixed32_ = other.unpackedSfixed32_.Clone(); - unpackedSfixed64_ = other.unpackedSfixed64_.Clone(); - unpackedFloat_ = other.unpackedFloat_.Clone(); - unpackedDouble_ = other.unpackedDouble_.Clone(); - unpackedBool_ = other.unpackedBool_.Clone(); - unpackedEnum_ = other.unpackedEnum_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestUnpackedTypes Clone() { - return new TestUnpackedTypes(this); - } - - /// Field number for the "unpacked_int32" field. - public const int UnpackedInt32FieldNumber = 90; - private static readonly pb::FieldCodec _repeated_unpackedInt32_codec - = pb::FieldCodec.ForInt32(720); - private readonly pbc::RepeatedField unpackedInt32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedInt32 { - get { return unpackedInt32_; } - } - - /// Field number for the "unpacked_int64" field. - public const int UnpackedInt64FieldNumber = 91; - private static readonly pb::FieldCodec _repeated_unpackedInt64_codec - = pb::FieldCodec.ForInt64(728); - private readonly pbc::RepeatedField unpackedInt64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedInt64 { - get { return unpackedInt64_; } - } - - /// Field number for the "unpacked_uint32" field. - public const int UnpackedUint32FieldNumber = 92; - private static readonly pb::FieldCodec _repeated_unpackedUint32_codec - = pb::FieldCodec.ForUInt32(736); - private readonly pbc::RepeatedField unpackedUint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedUint32 { - get { return unpackedUint32_; } - } - - /// Field number for the "unpacked_uint64" field. - public const int UnpackedUint64FieldNumber = 93; - private static readonly pb::FieldCodec _repeated_unpackedUint64_codec - = pb::FieldCodec.ForUInt64(744); - private readonly pbc::RepeatedField unpackedUint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedUint64 { - get { return unpackedUint64_; } - } - - /// Field number for the "unpacked_sint32" field. - public const int UnpackedSint32FieldNumber = 94; - private static readonly pb::FieldCodec _repeated_unpackedSint32_codec - = pb::FieldCodec.ForSInt32(752); - private readonly pbc::RepeatedField unpackedSint32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedSint32 { - get { return unpackedSint32_; } - } - - /// Field number for the "unpacked_sint64" field. - public const int UnpackedSint64FieldNumber = 95; - private static readonly pb::FieldCodec _repeated_unpackedSint64_codec - = pb::FieldCodec.ForSInt64(760); - private readonly pbc::RepeatedField unpackedSint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedSint64 { - get { return unpackedSint64_; } - } - - /// Field number for the "unpacked_fixed32" field. - public const int UnpackedFixed32FieldNumber = 96; - private static readonly pb::FieldCodec _repeated_unpackedFixed32_codec - = pb::FieldCodec.ForFixed32(773); - private readonly pbc::RepeatedField unpackedFixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedFixed32 { - get { return unpackedFixed32_; } - } - - /// Field number for the "unpacked_fixed64" field. - public const int UnpackedFixed64FieldNumber = 97; - private static readonly pb::FieldCodec _repeated_unpackedFixed64_codec - = pb::FieldCodec.ForFixed64(777); - private readonly pbc::RepeatedField unpackedFixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedFixed64 { - get { return unpackedFixed64_; } - } - - /// Field number for the "unpacked_sfixed32" field. - public const int UnpackedSfixed32FieldNumber = 98; - private static readonly pb::FieldCodec _repeated_unpackedSfixed32_codec - = pb::FieldCodec.ForSFixed32(789); - private readonly pbc::RepeatedField unpackedSfixed32_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedSfixed32 { - get { return unpackedSfixed32_; } - } - - /// Field number for the "unpacked_sfixed64" field. - public const int UnpackedSfixed64FieldNumber = 99; - private static readonly pb::FieldCodec _repeated_unpackedSfixed64_codec - = pb::FieldCodec.ForSFixed64(793); - private readonly pbc::RepeatedField unpackedSfixed64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedSfixed64 { - get { return unpackedSfixed64_; } - } - - /// Field number for the "unpacked_float" field. - public const int UnpackedFloatFieldNumber = 100; - private static readonly pb::FieldCodec _repeated_unpackedFloat_codec - = pb::FieldCodec.ForFloat(805); - private readonly pbc::RepeatedField unpackedFloat_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedFloat { - get { return unpackedFloat_; } - } - - /// Field number for the "unpacked_double" field. - public const int UnpackedDoubleFieldNumber = 101; - private static readonly pb::FieldCodec _repeated_unpackedDouble_codec - = pb::FieldCodec.ForDouble(809); - private readonly pbc::RepeatedField unpackedDouble_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedDouble { - get { return unpackedDouble_; } - } - - /// Field number for the "unpacked_bool" field. - public const int UnpackedBoolFieldNumber = 102; - private static readonly pb::FieldCodec _repeated_unpackedBool_codec - = pb::FieldCodec.ForBool(816); - private readonly pbc::RepeatedField unpackedBool_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedBool { - get { return unpackedBool_; } - } - - /// Field number for the "unpacked_enum" field. - public const int UnpackedEnumFieldNumber = 103; - private static readonly pb::FieldCodec _repeated_unpackedEnum_codec - = pb::FieldCodec.ForEnum(824, x => (int) x, x => (global::Google.Protobuf.TestProtos.ForeignEnum) x); - private readonly pbc::RepeatedField unpackedEnum_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UnpackedEnum { - get { return unpackedEnum_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestUnpackedTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestUnpackedTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!unpackedInt32_.Equals(other.unpackedInt32_)) return false; - if(!unpackedInt64_.Equals(other.unpackedInt64_)) return false; - if(!unpackedUint32_.Equals(other.unpackedUint32_)) return false; - if(!unpackedUint64_.Equals(other.unpackedUint64_)) return false; - if(!unpackedSint32_.Equals(other.unpackedSint32_)) return false; - if(!unpackedSint64_.Equals(other.unpackedSint64_)) return false; - if(!unpackedFixed32_.Equals(other.unpackedFixed32_)) return false; - if(!unpackedFixed64_.Equals(other.unpackedFixed64_)) return false; - if(!unpackedSfixed32_.Equals(other.unpackedSfixed32_)) return false; - if(!unpackedSfixed64_.Equals(other.unpackedSfixed64_)) return false; - if(!unpackedFloat_.Equals(other.unpackedFloat_)) return false; - if(!unpackedDouble_.Equals(other.unpackedDouble_)) return false; - if(!unpackedBool_.Equals(other.unpackedBool_)) return false; - if(!unpackedEnum_.Equals(other.unpackedEnum_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= unpackedInt32_.GetHashCode(); - hash ^= unpackedInt64_.GetHashCode(); - hash ^= unpackedUint32_.GetHashCode(); - hash ^= unpackedUint64_.GetHashCode(); - hash ^= unpackedSint32_.GetHashCode(); - hash ^= unpackedSint64_.GetHashCode(); - hash ^= unpackedFixed32_.GetHashCode(); - hash ^= unpackedFixed64_.GetHashCode(); - hash ^= unpackedSfixed32_.GetHashCode(); - hash ^= unpackedSfixed64_.GetHashCode(); - hash ^= unpackedFloat_.GetHashCode(); - hash ^= unpackedDouble_.GetHashCode(); - hash ^= unpackedBool_.GetHashCode(); - hash ^= unpackedEnum_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - unpackedInt32_.WriteTo(output, _repeated_unpackedInt32_codec); - unpackedInt64_.WriteTo(output, _repeated_unpackedInt64_codec); - unpackedUint32_.WriteTo(output, _repeated_unpackedUint32_codec); - unpackedUint64_.WriteTo(output, _repeated_unpackedUint64_codec); - unpackedSint32_.WriteTo(output, _repeated_unpackedSint32_codec); - unpackedSint64_.WriteTo(output, _repeated_unpackedSint64_codec); - unpackedFixed32_.WriteTo(output, _repeated_unpackedFixed32_codec); - unpackedFixed64_.WriteTo(output, _repeated_unpackedFixed64_codec); - unpackedSfixed32_.WriteTo(output, _repeated_unpackedSfixed32_codec); - unpackedSfixed64_.WriteTo(output, _repeated_unpackedSfixed64_codec); - unpackedFloat_.WriteTo(output, _repeated_unpackedFloat_codec); - unpackedDouble_.WriteTo(output, _repeated_unpackedDouble_codec); - unpackedBool_.WriteTo(output, _repeated_unpackedBool_codec); - unpackedEnum_.WriteTo(output, _repeated_unpackedEnum_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += unpackedInt32_.CalculateSize(_repeated_unpackedInt32_codec); - size += unpackedInt64_.CalculateSize(_repeated_unpackedInt64_codec); - size += unpackedUint32_.CalculateSize(_repeated_unpackedUint32_codec); - size += unpackedUint64_.CalculateSize(_repeated_unpackedUint64_codec); - size += unpackedSint32_.CalculateSize(_repeated_unpackedSint32_codec); - size += unpackedSint64_.CalculateSize(_repeated_unpackedSint64_codec); - size += unpackedFixed32_.CalculateSize(_repeated_unpackedFixed32_codec); - size += unpackedFixed64_.CalculateSize(_repeated_unpackedFixed64_codec); - size += unpackedSfixed32_.CalculateSize(_repeated_unpackedSfixed32_codec); - size += unpackedSfixed64_.CalculateSize(_repeated_unpackedSfixed64_codec); - size += unpackedFloat_.CalculateSize(_repeated_unpackedFloat_codec); - size += unpackedDouble_.CalculateSize(_repeated_unpackedDouble_codec); - size += unpackedBool_.CalculateSize(_repeated_unpackedBool_codec); - size += unpackedEnum_.CalculateSize(_repeated_unpackedEnum_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestUnpackedTypes other) { - if (other == null) { - return; - } - unpackedInt32_.Add(other.unpackedInt32_); - unpackedInt64_.Add(other.unpackedInt64_); - unpackedUint32_.Add(other.unpackedUint32_); - unpackedUint64_.Add(other.unpackedUint64_); - unpackedSint32_.Add(other.unpackedSint32_); - unpackedSint64_.Add(other.unpackedSint64_); - unpackedFixed32_.Add(other.unpackedFixed32_); - unpackedFixed64_.Add(other.unpackedFixed64_); - unpackedSfixed32_.Add(other.unpackedSfixed32_); - unpackedSfixed64_.Add(other.unpackedSfixed64_); - unpackedFloat_.Add(other.unpackedFloat_); - unpackedDouble_.Add(other.unpackedDouble_); - unpackedBool_.Add(other.unpackedBool_); - unpackedEnum_.Add(other.unpackedEnum_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 722: - case 720: { - unpackedInt32_.AddEntriesFrom(input, _repeated_unpackedInt32_codec); - break; - } - case 730: - case 728: { - unpackedInt64_.AddEntriesFrom(input, _repeated_unpackedInt64_codec); - break; - } - case 738: - case 736: { - unpackedUint32_.AddEntriesFrom(input, _repeated_unpackedUint32_codec); - break; - } - case 746: - case 744: { - unpackedUint64_.AddEntriesFrom(input, _repeated_unpackedUint64_codec); - break; - } - case 754: - case 752: { - unpackedSint32_.AddEntriesFrom(input, _repeated_unpackedSint32_codec); - break; - } - case 762: - case 760: { - unpackedSint64_.AddEntriesFrom(input, _repeated_unpackedSint64_codec); - break; - } - case 770: - case 773: { - unpackedFixed32_.AddEntriesFrom(input, _repeated_unpackedFixed32_codec); - break; - } - case 778: - case 777: { - unpackedFixed64_.AddEntriesFrom(input, _repeated_unpackedFixed64_codec); - break; - } - case 786: - case 789: { - unpackedSfixed32_.AddEntriesFrom(input, _repeated_unpackedSfixed32_codec); - break; - } - case 794: - case 793: { - unpackedSfixed64_.AddEntriesFrom(input, _repeated_unpackedSfixed64_codec); - break; - } - case 802: - case 805: { - unpackedFloat_.AddEntriesFrom(input, _repeated_unpackedFloat_codec); - break; - } - case 810: - case 809: { - unpackedDouble_.AddEntriesFrom(input, _repeated_unpackedDouble_codec); - break; - } - case 818: - case 816: { - unpackedBool_.AddEntriesFrom(input, _repeated_unpackedBool_codec); - break; - } - case 826: - case 824: { - unpackedEnum_.AddEntriesFrom(input, _repeated_unpackedEnum_codec); - break; - } - } - } - } - - } - - public sealed partial class TestRepeatedScalarDifferentTagSizes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestRepeatedScalarDifferentTagSizes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[26]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRepeatedScalarDifferentTagSizes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRepeatedScalarDifferentTagSizes(TestRepeatedScalarDifferentTagSizes other) : this() { - repeatedFixed32_ = other.repeatedFixed32_.Clone(); - repeatedInt32_ = other.repeatedInt32_.Clone(); - repeatedFixed64_ = other.repeatedFixed64_.Clone(); - repeatedInt64_ = other.repeatedInt64_.Clone(); - repeatedFloat_ = other.repeatedFloat_.Clone(); - repeatedUint64_ = other.repeatedUint64_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestRepeatedScalarDifferentTagSizes Clone() { - return new TestRepeatedScalarDifferentTagSizes(this); - } - - /// Field number for the "repeated_fixed32" field. - public const int RepeatedFixed32FieldNumber = 12; - private static readonly pb::FieldCodec _repeated_repeatedFixed32_codec - = pb::FieldCodec.ForFixed32(98); - private readonly pbc::RepeatedField repeatedFixed32_ = new pbc::RepeatedField(); - /// - /// Parsing repeated fixed size values used to fail. This message needs to be - /// used in order to get a tag of the right size; all of the repeated fields - /// in TestAllTypes didn't trigger the check. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed32 { - get { return repeatedFixed32_; } - } - - /// Field number for the "repeated_int32" field. - public const int RepeatedInt32FieldNumber = 13; - private static readonly pb::FieldCodec _repeated_repeatedInt32_codec - = pb::FieldCodec.ForInt32(106); - private readonly pbc::RepeatedField repeatedInt32_ = new pbc::RepeatedField(); - /// - /// Check for a varint type, just for good measure. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt32 { - get { return repeatedInt32_; } - } - - /// Field number for the "repeated_fixed64" field. - public const int RepeatedFixed64FieldNumber = 2046; - private static readonly pb::FieldCodec _repeated_repeatedFixed64_codec - = pb::FieldCodec.ForFixed64(16370); - private readonly pbc::RepeatedField repeatedFixed64_ = new pbc::RepeatedField(); - /// - /// These have two-byte tags. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFixed64 { - get { return repeatedFixed64_; } - } - - /// Field number for the "repeated_int64" field. - public const int RepeatedInt64FieldNumber = 2047; - private static readonly pb::FieldCodec _repeated_repeatedInt64_codec - = pb::FieldCodec.ForInt64(16378); - private readonly pbc::RepeatedField repeatedInt64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedInt64 { - get { return repeatedInt64_; } - } - - /// Field number for the "repeated_float" field. - public const int RepeatedFloatFieldNumber = 262142; - private static readonly pb::FieldCodec _repeated_repeatedFloat_codec - = pb::FieldCodec.ForFloat(2097138); - private readonly pbc::RepeatedField repeatedFloat_ = new pbc::RepeatedField(); - /// - /// Three byte tags. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedFloat { - get { return repeatedFloat_; } - } - - /// Field number for the "repeated_uint64" field. - public const int RepeatedUint64FieldNumber = 262143; - private static readonly pb::FieldCodec _repeated_repeatedUint64_codec - = pb::FieldCodec.ForUInt64(2097146); - private readonly pbc::RepeatedField repeatedUint64_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField RepeatedUint64 { - get { return repeatedUint64_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestRepeatedScalarDifferentTagSizes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestRepeatedScalarDifferentTagSizes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!repeatedFixed32_.Equals(other.repeatedFixed32_)) return false; - if(!repeatedInt32_.Equals(other.repeatedInt32_)) return false; - if(!repeatedFixed64_.Equals(other.repeatedFixed64_)) return false; - if(!repeatedInt64_.Equals(other.repeatedInt64_)) return false; - if(!repeatedFloat_.Equals(other.repeatedFloat_)) return false; - if(!repeatedUint64_.Equals(other.repeatedUint64_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= repeatedFixed32_.GetHashCode(); - hash ^= repeatedInt32_.GetHashCode(); - hash ^= repeatedFixed64_.GetHashCode(); - hash ^= repeatedInt64_.GetHashCode(); - hash ^= repeatedFloat_.GetHashCode(); - hash ^= repeatedUint64_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - repeatedFixed32_.WriteTo(output, _repeated_repeatedFixed32_codec); - repeatedInt32_.WriteTo(output, _repeated_repeatedInt32_codec); - repeatedFixed64_.WriteTo(output, _repeated_repeatedFixed64_codec); - repeatedInt64_.WriteTo(output, _repeated_repeatedInt64_codec); - repeatedFloat_.WriteTo(output, _repeated_repeatedFloat_codec); - repeatedUint64_.WriteTo(output, _repeated_repeatedUint64_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += repeatedFixed32_.CalculateSize(_repeated_repeatedFixed32_codec); - size += repeatedInt32_.CalculateSize(_repeated_repeatedInt32_codec); - size += repeatedFixed64_.CalculateSize(_repeated_repeatedFixed64_codec); - size += repeatedInt64_.CalculateSize(_repeated_repeatedInt64_codec); - size += repeatedFloat_.CalculateSize(_repeated_repeatedFloat_codec); - size += repeatedUint64_.CalculateSize(_repeated_repeatedUint64_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestRepeatedScalarDifferentTagSizes other) { - if (other == null) { - return; - } - repeatedFixed32_.Add(other.repeatedFixed32_); - repeatedInt32_.Add(other.repeatedInt32_); - repeatedFixed64_.Add(other.repeatedFixed64_); - repeatedInt64_.Add(other.repeatedInt64_); - repeatedFloat_.Add(other.repeatedFloat_); - repeatedUint64_.Add(other.repeatedUint64_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 98: - case 101: { - repeatedFixed32_.AddEntriesFrom(input, _repeated_repeatedFixed32_codec); - break; - } - case 106: - case 104: { - repeatedInt32_.AddEntriesFrom(input, _repeated_repeatedInt32_codec); - break; - } - case 16370: - case 16369: { - repeatedFixed64_.AddEntriesFrom(input, _repeated_repeatedFixed64_codec); - break; - } - case 16378: - case 16376: { - repeatedInt64_.AddEntriesFrom(input, _repeated_repeatedInt64_codec); - break; - } - case 2097138: - case 2097141: { - repeatedFloat_.AddEntriesFrom(input, _repeated_repeatedFloat_codec); - break; - } - case 2097146: - case 2097144: { - repeatedUint64_.AddEntriesFrom(input, _repeated_repeatedUint64_codec); - break; - } - } - } - } - - } - - public sealed partial class TestCommentInjectionMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestCommentInjectionMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[27]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCommentInjectionMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCommentInjectionMessage(TestCommentInjectionMessage other) : this() { - a_ = other.a_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestCommentInjectionMessage Clone() { - return new TestCommentInjectionMessage(this); - } - - /// Field number for the "a" field. - public const int AFieldNumber = 1; - private string a_ = ""; - /// - /// */ <- This should not close the generated doc comment - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string A { - get { return a_; } - set { - a_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestCommentInjectionMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestCommentInjectionMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (A != other.A) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (A.Length != 0) hash ^= A.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (A.Length != 0) { - output.WriteRawTag(10); - output.WriteString(A); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (A.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(A); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestCommentInjectionMessage other) { - if (other == null) { - return; - } - if (other.A.Length != 0) { - A = other.A; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - A = input.ReadString(); - break; - } - } - } - } - - } - - /// - /// Test that RPC services work. - /// - public sealed partial class FooRequest : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FooRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[28]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooRequest(FooRequest other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooRequest Clone() { - return new FooRequest(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FooRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FooRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FooRequest other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class FooResponse : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FooResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[29]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooResponse(FooResponse other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooResponse Clone() { - return new FooResponse(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FooResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FooResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FooResponse other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class FooClientMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FooClientMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[30]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooClientMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooClientMessage(FooClientMessage other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooClientMessage Clone() { - return new FooClientMessage(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FooClientMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FooClientMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FooClientMessage other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class FooServerMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FooServerMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[31]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooServerMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooServerMessage(FooServerMessage other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FooServerMessage Clone() { - return new FooServerMessage(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FooServerMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FooServerMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FooServerMessage other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class BarRequest : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BarRequest()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[32]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarRequest() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarRequest(BarRequest other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarRequest Clone() { - return new BarRequest(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as BarRequest); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(BarRequest other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(BarRequest other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class BarResponse : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new BarResponse()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[33]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarResponse() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarResponse(BarResponse other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public BarResponse Clone() { - return new BarResponse(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as BarResponse); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(BarResponse other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(BarResponse other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - public sealed partial class TestEmptyMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestEmptyMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[34]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEmptyMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEmptyMessage(TestEmptyMessage other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestEmptyMessage Clone() { - return new TestEmptyMessage(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestEmptyMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestEmptyMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestEmptyMessage other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - /// - /// This is a leading comment - /// - public sealed partial class CommentMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new CommentMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestProto3Reflection.Descriptor.MessageTypes[35]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CommentMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CommentMessage(CommentMessage other) : this() { - text_ = other.text_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public CommentMessage Clone() { - return new CommentMessage(this); - } - - /// Field number for the "text" field. - public const int TextFieldNumber = 1; - private string text_ = ""; - /// - /// Leading field comment - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Text { - get { return text_; } - set { - text_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as CommentMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(CommentMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Text != other.Text) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Text.Length != 0) hash ^= Text.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Text.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Text); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Text.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Text); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(CommentMessage other) { - if (other == null) { - return; - } - if (other.Text.Length != 0) { - Text = other.Text; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Text = input.ReadString(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the CommentMessage message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Leading nested enum comment - /// - public enum NestedCommentEnum { - /// - /// Zero value comment - /// - [pbr::OriginalName("ZERO_VALUE")] ZeroValue = 0, - } - - /// - /// Leading nested message comment - /// - public sealed partial class NestedCommentMessage : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NestedCommentMessage()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.CommentMessage.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedCommentMessage() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedCommentMessage(NestedCommentMessage other) : this() { - nestedText_ = other.nestedText_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NestedCommentMessage Clone() { - return new NestedCommentMessage(this); - } - - /// Field number for the "nested_text" field. - public const int NestedTextFieldNumber = 1; - private string nestedText_ = ""; - /// - /// Leading nested message field comment - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string NestedText { - get { return nestedText_; } - set { - nestedText_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NestedCommentMessage); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NestedCommentMessage other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (NestedText != other.NestedText) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (NestedText.Length != 0) hash ^= NestedText.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (NestedText.Length != 0) { - output.WriteRawTag(10); - output.WriteString(NestedText); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (NestedText.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(NestedText); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NestedCommentMessage other) { - if (other == null) { - return; - } - if (other.NestedText.Length != 0) { - NestedText = other.NestedText; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - NestedText = input.ReadString(); - break; - } - } - } - } - - } - - } - #endregion - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs deleted file mode 100644 index 90b3384..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/TestProtos/UnittestWellKnownTypes.cs +++ /dev/null @@ -1,2625 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/unittest_well_known_types.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.TestProtos { - - /// Holder for reflection information generated from google/protobuf/unittest_well_known_types.proto - public static partial class UnittestWellKnownTypesReflection { - - #region Descriptor - /// File descriptor for google/protobuf/unittest_well_known_types.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static UnittestWellKnownTypesReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Ci9nb29nbGUvcHJvdG9idWYvdW5pdHRlc3Rfd2VsbF9rbm93bl90eXBlcy5w", - "cm90bxIRcHJvdG9idWZfdW5pdHRlc3QaGWdvb2dsZS9wcm90b2J1Zi9hbnku", - "cHJvdG8aGWdvb2dsZS9wcm90b2J1Zi9hcGkucHJvdG8aHmdvb2dsZS9wcm90", - "b2J1Zi9kdXJhdGlvbi5wcm90bxobZ29vZ2xlL3Byb3RvYnVmL2VtcHR5LnBy", - "b3RvGiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxokZ29vZ2xl", - "L3Byb3RvYnVmL3NvdXJjZV9jb250ZXh0LnByb3RvGhxnb29nbGUvcHJvdG9i", - "dWYvc3RydWN0LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnBy", - "b3RvGhpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90bxoeZ29vZ2xlL3Byb3Rv", - "YnVmL3dyYXBwZXJzLnByb3RvIr4HChJUZXN0V2VsbEtub3duVHlwZXMSJwoJ", - "YW55X2ZpZWxkGAEgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRInCglhcGlf", - "ZmllbGQYAiABKAsyFC5nb29nbGUucHJvdG9idWYuQXBpEjEKDmR1cmF0aW9u", - "X2ZpZWxkGAMgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uEisKC2Vt", - "cHR5X2ZpZWxkGAQgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjQKEGZp", - "ZWxkX21hc2tfZmllbGQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRN", - "YXNrEjwKFHNvdXJjZV9jb250ZXh0X2ZpZWxkGAYgASgLMh4uZ29vZ2xlLnBy", - "b3RvYnVmLlNvdXJjZUNvbnRleHQSLQoMc3RydWN0X2ZpZWxkGAcgASgLMhcu", - "Z29vZ2xlLnByb3RvYnVmLlN0cnVjdBIzCg90aW1lc3RhbXBfZmllbGQYCCAB", - "KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEikKCnR5cGVfZmllbGQY", - "CSABKAsyFS5nb29nbGUucHJvdG9idWYuVHlwZRIyCgxkb3VibGVfZmllbGQY", - "CiABKAsyHC5nb29nbGUucHJvdG9idWYuRG91YmxlVmFsdWUSMAoLZmxvYXRf", - "ZmllbGQYCyABKAsyGy5nb29nbGUucHJvdG9idWYuRmxvYXRWYWx1ZRIwCgtp", - "bnQ2NF9maWVsZBgMIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVl", - "EjIKDHVpbnQ2NF9maWVsZBgNIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50", - "NjRWYWx1ZRIwCgtpbnQzMl9maWVsZBgOIAEoCzIbLmdvb2dsZS5wcm90b2J1", - "Zi5JbnQzMlZhbHVlEjIKDHVpbnQzMl9maWVsZBgPIAEoCzIcLmdvb2dsZS5w", - "cm90b2J1Zi5VSW50MzJWYWx1ZRIuCgpib29sX2ZpZWxkGBAgASgLMhouZ29v", - "Z2xlLnByb3RvYnVmLkJvb2xWYWx1ZRIyCgxzdHJpbmdfZmllbGQYESABKAsy", - "HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSMAoLYnl0ZXNfZmllbGQY", - "EiABKAsyGy5nb29nbGUucHJvdG9idWYuQnl0ZXNWYWx1ZRIrCgt2YWx1ZV9m", - "aWVsZBgTIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSKVBwoWUmVwZWF0", - "ZWRXZWxsS25vd25UeXBlcxInCglhbnlfZmllbGQYASADKAsyFC5nb29nbGUu", - "cHJvdG9idWYuQW55EicKCWFwaV9maWVsZBgCIAMoCzIULmdvb2dsZS5wcm90", - "b2J1Zi5BcGkSMQoOZHVyYXRpb25fZmllbGQYAyADKAsyGS5nb29nbGUucHJv", - "dG9idWYuRHVyYXRpb24SKwoLZW1wdHlfZmllbGQYBCADKAsyFi5nb29nbGUu", - "cHJvdG9idWYuRW1wdHkSNAoQZmllbGRfbWFza19maWVsZBgFIAMoCzIaLmdv", - "b2dsZS5wcm90b2J1Zi5GaWVsZE1hc2sSPAoUc291cmNlX2NvbnRleHRfZmll", - "bGQYBiADKAsyHi5nb29nbGUucHJvdG9idWYuU291cmNlQ29udGV4dBItCgxz", - "dHJ1Y3RfZmllbGQYByADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0EjMK", - "D3RpbWVzdGFtcF9maWVsZBgIIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1l", - "c3RhbXASKQoKdHlwZV9maWVsZBgJIAMoCzIVLmdvb2dsZS5wcm90b2J1Zi5U", - "eXBlEjIKDGRvdWJsZV9maWVsZBgKIAMoCzIcLmdvb2dsZS5wcm90b2J1Zi5E", - "b3VibGVWYWx1ZRIwCgtmbG9hdF9maWVsZBgLIAMoCzIbLmdvb2dsZS5wcm90", - "b2J1Zi5GbG9hdFZhbHVlEjAKC2ludDY0X2ZpZWxkGAwgAygLMhsuZ29vZ2xl", - "LnByb3RvYnVmLkludDY0VmFsdWUSMgoMdWludDY0X2ZpZWxkGA0gAygLMhwu", - "Z29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEjAKC2ludDMyX2ZpZWxkGA4g", - "AygLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSMgoMdWludDMyX2Zp", - "ZWxkGA8gAygLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQzMlZhbHVlEi4KCmJv", - "b2xfZmllbGQYECADKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjIK", - "DHN0cmluZ19maWVsZBgRIAMoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdW", - "YWx1ZRIwCgtieXRlc19maWVsZBgSIAMoCzIbLmdvb2dsZS5wcm90b2J1Zi5C", - "eXRlc1ZhbHVlIsUHChNPbmVvZldlbGxLbm93blR5cGVzEikKCWFueV9maWVs", - "ZBgBIAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnlIABIpCglhcGlfZmllbGQY", - "AiABKAsyFC5nb29nbGUucHJvdG9idWYuQXBpSAASMwoOZHVyYXRpb25fZmll", - "bGQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25IABItCgtlbXB0", - "eV9maWVsZBgEIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjYKEGZp", - "ZWxkX21hc2tfZmllbGQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRN", - "YXNrSAASPgoUc291cmNlX2NvbnRleHRfZmllbGQYBiABKAsyHi5nb29nbGUu", - "cHJvdG9idWYuU291cmNlQ29udGV4dEgAEi8KDHN0cnVjdF9maWVsZBgHIAEo", - "CzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIABI1Cg90aW1lc3RhbXBfZmll", - "bGQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASKwoKdHlw", - "ZV9maWVsZBgJIAEoCzIVLmdvb2dsZS5wcm90b2J1Zi5UeXBlSAASNAoMZG91", - "YmxlX2ZpZWxkGAogASgLMhwuZ29vZ2xlLnByb3RvYnVmLkRvdWJsZVZhbHVl", - "SAASMgoLZmxvYXRfZmllbGQYCyABKAsyGy5nb29nbGUucHJvdG9idWYuRmxv", - "YXRWYWx1ZUgAEjIKC2ludDY0X2ZpZWxkGAwgASgLMhsuZ29vZ2xlLnByb3Rv", - "YnVmLkludDY0VmFsdWVIABI0Cgx1aW50NjRfZmllbGQYDSABKAsyHC5nb29n", - "bGUucHJvdG9idWYuVUludDY0VmFsdWVIABIyCgtpbnQzMl9maWVsZBgOIAEo", - "CzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlSAASNAoMdWludDMyX2Zp", - "ZWxkGA8gASgLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQzMlZhbHVlSAASMAoK", - "Ym9vbF9maWVsZBgQIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWVI", - "ABI0CgxzdHJpbmdfZmllbGQYESABKAsyHC5nb29nbGUucHJvdG9idWYuU3Ry", - "aW5nVmFsdWVIABIyCgtieXRlc19maWVsZBgSIAEoCzIbLmdvb2dsZS5wcm90", - "b2J1Zi5CeXRlc1ZhbHVlSABCDQoLb25lb2ZfZmllbGQilhYKEU1hcFdlbGxL", - "bm93blR5cGVzEkUKCWFueV9maWVsZBgBIAMoCzIyLnByb3RvYnVmX3VuaXR0", - "ZXN0Lk1hcFdlbGxLbm93blR5cGVzLkFueUZpZWxkRW50cnkSRQoJYXBpX2Zp", - "ZWxkGAIgAygLMjIucHJvdG9idWZfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlw", - "ZXMuQXBpRmllbGRFbnRyeRJPCg5kdXJhdGlvbl9maWVsZBgDIAMoCzI3LnBy", - "b3RvYnVmX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVzLkR1cmF0aW9uRmll", - "bGRFbnRyeRJJCgtlbXB0eV9maWVsZBgEIAMoCzI0LnByb3RvYnVmX3VuaXR0", - "ZXN0Lk1hcFdlbGxLbm93blR5cGVzLkVtcHR5RmllbGRFbnRyeRJSChBmaWVs", - "ZF9tYXNrX2ZpZWxkGAUgAygLMjgucHJvdG9idWZfdW5pdHRlc3QuTWFwV2Vs", - "bEtub3duVHlwZXMuRmllbGRNYXNrRmllbGRFbnRyeRJaChRzb3VyY2VfY29u", - "dGV4dF9maWVsZBgGIAMoCzI8LnByb3RvYnVmX3VuaXR0ZXN0Lk1hcFdlbGxL", - "bm93blR5cGVzLlNvdXJjZUNvbnRleHRGaWVsZEVudHJ5EksKDHN0cnVjdF9m", - "aWVsZBgHIAMoCzI1LnByb3RvYnVmX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5", - "cGVzLlN0cnVjdEZpZWxkRW50cnkSUQoPdGltZXN0YW1wX2ZpZWxkGAggAygL", - "MjgucHJvdG9idWZfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuVGltZXN0", - "YW1wRmllbGRFbnRyeRJHCgp0eXBlX2ZpZWxkGAkgAygLMjMucHJvdG9idWZf", - "dW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMuVHlwZUZpZWxkRW50cnkSSwoM", - "ZG91YmxlX2ZpZWxkGAogAygLMjUucHJvdG9idWZfdW5pdHRlc3QuTWFwV2Vs", - "bEtub3duVHlwZXMuRG91YmxlRmllbGRFbnRyeRJJCgtmbG9hdF9maWVsZBgL", - "IAMoCzI0LnByb3RvYnVmX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVzLkZs", - "b2F0RmllbGRFbnRyeRJJCgtpbnQ2NF9maWVsZBgMIAMoCzI0LnByb3RvYnVm", - "X3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVzLkludDY0RmllbGRFbnRyeRJL", - "Cgx1aW50NjRfZmllbGQYDSADKAsyNS5wcm90b2J1Zl91bml0dGVzdC5NYXBX", - "ZWxsS25vd25UeXBlcy5VaW50NjRGaWVsZEVudHJ5EkkKC2ludDMyX2ZpZWxk", - "GA4gAygLMjQucHJvdG9idWZfdW5pdHRlc3QuTWFwV2VsbEtub3duVHlwZXMu", - "SW50MzJGaWVsZEVudHJ5EksKDHVpbnQzMl9maWVsZBgPIAMoCzI1LnByb3Rv", - "YnVmX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVzLlVpbnQzMkZpZWxkRW50", - "cnkSRwoKYm9vbF9maWVsZBgQIAMoCzIzLnByb3RvYnVmX3VuaXR0ZXN0Lk1h", - "cFdlbGxLbm93blR5cGVzLkJvb2xGaWVsZEVudHJ5EksKDHN0cmluZ19maWVs", - "ZBgRIAMoCzI1LnByb3RvYnVmX3VuaXR0ZXN0Lk1hcFdlbGxLbm93blR5cGVz", - "LlN0cmluZ0ZpZWxkRW50cnkSSQoLYnl0ZXNfZmllbGQYEiADKAsyNC5wcm90", - "b2J1Zl91bml0dGVzdC5NYXBXZWxsS25vd25UeXBlcy5CeXRlc0ZpZWxkRW50", - "cnkaRQoNQW55RmllbGRFbnRyeRILCgNrZXkYASABKAUSIwoFdmFsdWUYAiAB", - "KAsyFC5nb29nbGUucHJvdG9idWYuQW55OgI4ARpFCg1BcGlGaWVsZEVudHJ5", - "EgsKA2tleRgBIAEoBRIjCgV2YWx1ZRgCIAEoCzIULmdvb2dsZS5wcm90b2J1", - "Zi5BcGk6AjgBGk8KEkR1cmF0aW9uRmllbGRFbnRyeRILCgNrZXkYASABKAUS", - "KAoFdmFsdWUYAiABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb246AjgB", - "GkkKD0VtcHR5RmllbGRFbnRyeRILCgNrZXkYASABKAUSJQoFdmFsdWUYAiAB", - "KAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHk6AjgBGlEKE0ZpZWxkTWFza0Zp", - "ZWxkRW50cnkSCwoDa2V5GAEgASgFEikKBXZhbHVlGAIgASgLMhouZ29vZ2xl", - "LnByb3RvYnVmLkZpZWxkTWFzazoCOAEaWQoXU291cmNlQ29udGV4dEZpZWxk", - "RW50cnkSCwoDa2V5GAEgASgFEi0KBXZhbHVlGAIgASgLMh4uZ29vZ2xlLnBy", - "b3RvYnVmLlNvdXJjZUNvbnRleHQ6AjgBGksKEFN0cnVjdEZpZWxkRW50cnkS", - "CwoDa2V5GAEgASgFEiYKBXZhbHVlGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVm", - "LlN0cnVjdDoCOAEaUQoTVGltZXN0YW1wRmllbGRFbnRyeRILCgNrZXkYASAB", - "KAUSKQoFdmFsdWUYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w", - "OgI4ARpHCg5UeXBlRmllbGRFbnRyeRILCgNrZXkYASABKAUSJAoFdmFsdWUY", - "AiABKAsyFS5nb29nbGUucHJvdG9idWYuVHlwZToCOAEaUAoQRG91YmxlRmll", - "bGRFbnRyeRILCgNrZXkYASABKAUSKwoFdmFsdWUYAiABKAsyHC5nb29nbGUu", - "cHJvdG9idWYuRG91YmxlVmFsdWU6AjgBGk4KD0Zsb2F0RmllbGRFbnRyeRIL", - "CgNrZXkYASABKAUSKgoFdmFsdWUYAiABKAsyGy5nb29nbGUucHJvdG9idWYu", - "RmxvYXRWYWx1ZToCOAEaTgoPSW50NjRGaWVsZEVudHJ5EgsKA2tleRgBIAEo", - "BRIqCgV2YWx1ZRgCIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVl", - "OgI4ARpQChBVaW50NjRGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRIrCgV2YWx1", - "ZRgCIAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50NjRWYWx1ZToCOAEaTgoP", - "SW50MzJGaWVsZEVudHJ5EgsKA2tleRgBIAEoBRIqCgV2YWx1ZRgCIAEoCzIb", - "Lmdvb2dsZS5wcm90b2J1Zi5JbnQzMlZhbHVlOgI4ARpQChBVaW50MzJGaWVs", - "ZEVudHJ5EgsKA2tleRgBIAEoBRIrCgV2YWx1ZRgCIAEoCzIcLmdvb2dsZS5w", - "cm90b2J1Zi5VSW50MzJWYWx1ZToCOAEaTAoOQm9vbEZpZWxkRW50cnkSCwoD", - "a2V5GAEgASgFEikKBXZhbHVlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkJv", - "b2xWYWx1ZToCOAEaUAoQU3RyaW5nRmllbGRFbnRyeRILCgNrZXkYASABKAUS", - "KwoFdmFsdWUYAiABKAsyHC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWU6", - "AjgBGk4KD0J5dGVzRmllbGRFbnRyeRILCgNrZXkYASABKAUSKgoFdmFsdWUY", - "AiABKAsyGy5nb29nbGUucHJvdG9idWYuQnl0ZXNWYWx1ZToCOAFCOQoYY29t", - "Lmdvb2dsZS5wcm90b2J1Zi50ZXN0UAGqAhpHb29nbGUuUHJvdG9idWYuVGVz", - "dFByb3Rvc2IGcHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.TestWellKnownTypes), global::Google.Protobuf.TestProtos.TestWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField", "ValueField" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.RepeatedWellKnownTypes), global::Google.Protobuf.TestProtos.RepeatedWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.OneofWellKnownTypes), global::Google.Protobuf.TestProtos.OneofWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, new[]{ "OneofField" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.TestProtos.MapWellKnownTypes), global::Google.Protobuf.TestProtos.MapWellKnownTypes.Parser, new[]{ "AnyField", "ApiField", "DurationField", "EmptyField", "FieldMaskField", "SourceContextField", "StructField", "TimestampField", "TypeField", "DoubleField", "FloatField", "Int64Field", "Uint64Field", "Int32Field", "Uint32Field", "BoolField", "StringField", "BytesField" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, }) - })); - } - #endregion - - } - #region Messages - /// - /// Test that we can include all well-known types. - /// Each wrapper type is included separately, as languages - /// map handle different wrappers in different ways. - /// - public sealed partial class TestWellKnownTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new TestWellKnownTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestWellKnownTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestWellKnownTypes(TestWellKnownTypes other) : this() { - anyField_ = other.anyField_ != null ? other.anyField_.Clone() : null; - apiField_ = other.apiField_ != null ? other.apiField_.Clone() : null; - durationField_ = other.durationField_ != null ? other.durationField_.Clone() : null; - emptyField_ = other.emptyField_ != null ? other.emptyField_.Clone() : null; - fieldMaskField_ = other.fieldMaskField_ != null ? other.fieldMaskField_.Clone() : null; - sourceContextField_ = other.sourceContextField_ != null ? other.sourceContextField_.Clone() : null; - structField_ = other.structField_ != null ? other.structField_.Clone() : null; - timestampField_ = other.timestampField_ != null ? other.timestampField_.Clone() : null; - typeField_ = other.typeField_ != null ? other.typeField_.Clone() : null; - DoubleField = other.DoubleField; - FloatField = other.FloatField; - Int64Field = other.Int64Field; - Uint64Field = other.Uint64Field; - Int32Field = other.Int32Field; - Uint32Field = other.Uint32Field; - BoolField = other.BoolField; - StringField = other.StringField; - BytesField = other.BytesField; - valueField_ = other.valueField_ != null ? other.valueField_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public TestWellKnownTypes Clone() { - return new TestWellKnownTypes(this); - } - - /// Field number for the "any_field" field. - public const int AnyFieldFieldNumber = 1; - private global::Google.Protobuf.WellKnownTypes.Any anyField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Any AnyField { - get { return anyField_; } - set { - anyField_ = value; - } - } - - /// Field number for the "api_field" field. - public const int ApiFieldFieldNumber = 2; - private global::Google.Protobuf.WellKnownTypes.Api apiField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Api ApiField { - get { return apiField_; } - set { - apiField_ = value; - } - } - - /// Field number for the "duration_field" field. - public const int DurationFieldFieldNumber = 3; - private global::Google.Protobuf.WellKnownTypes.Duration durationField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Duration DurationField { - get { return durationField_; } - set { - durationField_ = value; - } - } - - /// Field number for the "empty_field" field. - public const int EmptyFieldFieldNumber = 4; - private global::Google.Protobuf.WellKnownTypes.Empty emptyField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Empty EmptyField { - get { return emptyField_; } - set { - emptyField_ = value; - } - } - - /// Field number for the "field_mask_field" field. - public const int FieldMaskFieldFieldNumber = 5; - private global::Google.Protobuf.WellKnownTypes.FieldMask fieldMaskField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.FieldMask FieldMaskField { - get { return fieldMaskField_; } - set { - fieldMaskField_ = value; - } - } - - /// Field number for the "source_context_field" field. - public const int SourceContextFieldFieldNumber = 6; - private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContextField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContextField { - get { return sourceContextField_; } - set { - sourceContextField_ = value; - } - } - - /// Field number for the "struct_field" field. - public const int StructFieldFieldNumber = 7; - private global::Google.Protobuf.WellKnownTypes.Struct structField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Struct StructField { - get { return structField_; } - set { - structField_ = value; - } - } - - /// Field number for the "timestamp_field" field. - public const int TimestampFieldFieldNumber = 8; - private global::Google.Protobuf.WellKnownTypes.Timestamp timestampField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Timestamp TimestampField { - get { return timestampField_; } - set { - timestampField_ = value; - } - } - - /// Field number for the "type_field" field. - public const int TypeFieldFieldNumber = 9; - private global::Google.Protobuf.WellKnownTypes.Type typeField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Type TypeField { - get { return typeField_; } - set { - typeField_ = value; - } - } - - /// Field number for the "double_field" field. - public const int DoubleFieldFieldNumber = 10; - private static readonly pb::FieldCodec _single_doubleField_codec = pb::FieldCodec.ForStructWrapper(82); - private double? doubleField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double? DoubleField { - get { return doubleField_; } - set { - doubleField_ = value; - } - } - - - /// Field number for the "float_field" field. - public const int FloatFieldFieldNumber = 11; - private static readonly pb::FieldCodec _single_floatField_codec = pb::FieldCodec.ForStructWrapper(90); - private float? floatField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float? FloatField { - get { return floatField_; } - set { - floatField_ = value; - } - } - - - /// Field number for the "int64_field" field. - public const int Int64FieldFieldNumber = 12; - private static readonly pb::FieldCodec _single_int64Field_codec = pb::FieldCodec.ForStructWrapper(98); - private long? int64Field_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long? Int64Field { - get { return int64Field_; } - set { - int64Field_ = value; - } - } - - - /// Field number for the "uint64_field" field. - public const int Uint64FieldFieldNumber = 13; - private static readonly pb::FieldCodec _single_uint64Field_codec = pb::FieldCodec.ForStructWrapper(106); - private ulong? uint64Field_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong? Uint64Field { - get { return uint64Field_; } - set { - uint64Field_ = value; - } - } - - - /// Field number for the "int32_field" field. - public const int Int32FieldFieldNumber = 14; - private static readonly pb::FieldCodec _single_int32Field_codec = pb::FieldCodec.ForStructWrapper(114); - private int? int32Field_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int? Int32Field { - get { return int32Field_; } - set { - int32Field_ = value; - } - } - - - /// Field number for the "uint32_field" field. - public const int Uint32FieldFieldNumber = 15; - private static readonly pb::FieldCodec _single_uint32Field_codec = pb::FieldCodec.ForStructWrapper(122); - private uint? uint32Field_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint? Uint32Field { - get { return uint32Field_; } - set { - uint32Field_ = value; - } - } - - - /// Field number for the "bool_field" field. - public const int BoolFieldFieldNumber = 16; - private static readonly pb::FieldCodec _single_boolField_codec = pb::FieldCodec.ForStructWrapper(130); - private bool? boolField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool? BoolField { - get { return boolField_; } - set { - boolField_ = value; - } - } - - - /// Field number for the "string_field" field. - public const int StringFieldFieldNumber = 17; - private static readonly pb::FieldCodec _single_stringField_codec = pb::FieldCodec.ForClassWrapper(138); - private string stringField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string StringField { - get { return stringField_; } - set { - stringField_ = value; - } - } - - - /// Field number for the "bytes_field" field. - public const int BytesFieldFieldNumber = 18; - private static readonly pb::FieldCodec _single_bytesField_codec = pb::FieldCodec.ForClassWrapper(146); - private pb::ByteString bytesField_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString BytesField { - get { return bytesField_; } - set { - bytesField_ = value; - } - } - - - /// Field number for the "value_field" field. - public const int ValueFieldFieldNumber = 19; - private global::Google.Protobuf.WellKnownTypes.Value valueField_; - /// - /// Part of struct, but useful to be able to test separately - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Value ValueField { - get { return valueField_; } - set { - valueField_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as TestWellKnownTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(TestWellKnownTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(AnyField, other.AnyField)) return false; - if (!object.Equals(ApiField, other.ApiField)) return false; - if (!object.Equals(DurationField, other.DurationField)) return false; - if (!object.Equals(EmptyField, other.EmptyField)) return false; - if (!object.Equals(FieldMaskField, other.FieldMaskField)) return false; - if (!object.Equals(SourceContextField, other.SourceContextField)) return false; - if (!object.Equals(StructField, other.StructField)) return false; - if (!object.Equals(TimestampField, other.TimestampField)) return false; - if (!object.Equals(TypeField, other.TypeField)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(DoubleField, other.DoubleField)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(FloatField, other.FloatField)) return false; - if (Int64Field != other.Int64Field) return false; - if (Uint64Field != other.Uint64Field) return false; - if (Int32Field != other.Int32Field) return false; - if (Uint32Field != other.Uint32Field) return false; - if (BoolField != other.BoolField) return false; - if (StringField != other.StringField) return false; - if (BytesField != other.BytesField) return false; - if (!object.Equals(ValueField, other.ValueField)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (anyField_ != null) hash ^= AnyField.GetHashCode(); - if (apiField_ != null) hash ^= ApiField.GetHashCode(); - if (durationField_ != null) hash ^= DurationField.GetHashCode(); - if (emptyField_ != null) hash ^= EmptyField.GetHashCode(); - if (fieldMaskField_ != null) hash ^= FieldMaskField.GetHashCode(); - if (sourceContextField_ != null) hash ^= SourceContextField.GetHashCode(); - if (structField_ != null) hash ^= StructField.GetHashCode(); - if (timestampField_ != null) hash ^= TimestampField.GetHashCode(); - if (typeField_ != null) hash ^= TypeField.GetHashCode(); - if (doubleField_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(DoubleField); - if (floatField_ != null) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(FloatField); - if (int64Field_ != null) hash ^= Int64Field.GetHashCode(); - if (uint64Field_ != null) hash ^= Uint64Field.GetHashCode(); - if (int32Field_ != null) hash ^= Int32Field.GetHashCode(); - if (uint32Field_ != null) hash ^= Uint32Field.GetHashCode(); - if (boolField_ != null) hash ^= BoolField.GetHashCode(); - if (stringField_ != null) hash ^= StringField.GetHashCode(); - if (bytesField_ != null) hash ^= BytesField.GetHashCode(); - if (valueField_ != null) hash ^= ValueField.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (anyField_ != null) { - output.WriteRawTag(10); - output.WriteMessage(AnyField); - } - if (apiField_ != null) { - output.WriteRawTag(18); - output.WriteMessage(ApiField); - } - if (durationField_ != null) { - output.WriteRawTag(26); - output.WriteMessage(DurationField); - } - if (emptyField_ != null) { - output.WriteRawTag(34); - output.WriteMessage(EmptyField); - } - if (fieldMaskField_ != null) { - output.WriteRawTag(42); - output.WriteMessage(FieldMaskField); - } - if (sourceContextField_ != null) { - output.WriteRawTag(50); - output.WriteMessage(SourceContextField); - } - if (structField_ != null) { - output.WriteRawTag(58); - output.WriteMessage(StructField); - } - if (timestampField_ != null) { - output.WriteRawTag(66); - output.WriteMessage(TimestampField); - } - if (typeField_ != null) { - output.WriteRawTag(74); - output.WriteMessage(TypeField); - } - if (doubleField_ != null) { - _single_doubleField_codec.WriteTagAndValue(output, DoubleField); - } - if (floatField_ != null) { - _single_floatField_codec.WriteTagAndValue(output, FloatField); - } - if (int64Field_ != null) { - _single_int64Field_codec.WriteTagAndValue(output, Int64Field); - } - if (uint64Field_ != null) { - _single_uint64Field_codec.WriteTagAndValue(output, Uint64Field); - } - if (int32Field_ != null) { - _single_int32Field_codec.WriteTagAndValue(output, Int32Field); - } - if (uint32Field_ != null) { - _single_uint32Field_codec.WriteTagAndValue(output, Uint32Field); - } - if (boolField_ != null) { - _single_boolField_codec.WriteTagAndValue(output, BoolField); - } - if (stringField_ != null) { - _single_stringField_codec.WriteTagAndValue(output, StringField); - } - if (bytesField_ != null) { - _single_bytesField_codec.WriteTagAndValue(output, BytesField); - } - if (valueField_ != null) { - output.WriteRawTag(154, 1); - output.WriteMessage(ValueField); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (anyField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(AnyField); - } - if (apiField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(ApiField); - } - if (durationField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(DurationField); - } - if (emptyField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(EmptyField); - } - if (fieldMaskField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(FieldMaskField); - } - if (sourceContextField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContextField); - } - if (structField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(StructField); - } - if (timestampField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampField); - } - if (typeField_ != null) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeField); - } - if (doubleField_ != null) { - size += _single_doubleField_codec.CalculateSizeWithTag(DoubleField); - } - if (floatField_ != null) { - size += _single_floatField_codec.CalculateSizeWithTag(FloatField); - } - if (int64Field_ != null) { - size += _single_int64Field_codec.CalculateSizeWithTag(Int64Field); - } - if (uint64Field_ != null) { - size += _single_uint64Field_codec.CalculateSizeWithTag(Uint64Field); - } - if (int32Field_ != null) { - size += _single_int32Field_codec.CalculateSizeWithTag(Int32Field); - } - if (uint32Field_ != null) { - size += _single_uint32Field_codec.CalculateSizeWithTag(Uint32Field); - } - if (boolField_ != null) { - size += _single_boolField_codec.CalculateSizeWithTag(BoolField); - } - if (stringField_ != null) { - size += _single_stringField_codec.CalculateSizeWithTag(StringField); - } - if (bytesField_ != null) { - size += _single_bytesField_codec.CalculateSizeWithTag(BytesField); - } - if (valueField_ != null) { - size += 2 + pb::CodedOutputStream.ComputeMessageSize(ValueField); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(TestWellKnownTypes other) { - if (other == null) { - return; - } - if (other.anyField_ != null) { - if (anyField_ == null) { - AnyField = new global::Google.Protobuf.WellKnownTypes.Any(); - } - AnyField.MergeFrom(other.AnyField); - } - if (other.apiField_ != null) { - if (apiField_ == null) { - ApiField = new global::Google.Protobuf.WellKnownTypes.Api(); - } - ApiField.MergeFrom(other.ApiField); - } - if (other.durationField_ != null) { - if (durationField_ == null) { - DurationField = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - DurationField.MergeFrom(other.DurationField); - } - if (other.emptyField_ != null) { - if (emptyField_ == null) { - EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty(); - } - EmptyField.MergeFrom(other.EmptyField); - } - if (other.fieldMaskField_ != null) { - if (fieldMaskField_ == null) { - FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - } - FieldMaskField.MergeFrom(other.FieldMaskField); - } - if (other.sourceContextField_ != null) { - if (sourceContextField_ == null) { - SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext(); - } - SourceContextField.MergeFrom(other.SourceContextField); - } - if (other.structField_ != null) { - if (structField_ == null) { - StructField = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - StructField.MergeFrom(other.StructField); - } - if (other.timestampField_ != null) { - if (timestampField_ == null) { - TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - TimestampField.MergeFrom(other.TimestampField); - } - if (other.typeField_ != null) { - if (typeField_ == null) { - TypeField = new global::Google.Protobuf.WellKnownTypes.Type(); - } - TypeField.MergeFrom(other.TypeField); - } - if (other.doubleField_ != null) { - if (doubleField_ == null || other.DoubleField != 0D) { - DoubleField = other.DoubleField; - } - } - if (other.floatField_ != null) { - if (floatField_ == null || other.FloatField != 0F) { - FloatField = other.FloatField; - } - } - if (other.int64Field_ != null) { - if (int64Field_ == null || other.Int64Field != 0L) { - Int64Field = other.Int64Field; - } - } - if (other.uint64Field_ != null) { - if (uint64Field_ == null || other.Uint64Field != 0UL) { - Uint64Field = other.Uint64Field; - } - } - if (other.int32Field_ != null) { - if (int32Field_ == null || other.Int32Field != 0) { - Int32Field = other.Int32Field; - } - } - if (other.uint32Field_ != null) { - if (uint32Field_ == null || other.Uint32Field != 0) { - Uint32Field = other.Uint32Field; - } - } - if (other.boolField_ != null) { - if (boolField_ == null || other.BoolField != false) { - BoolField = other.BoolField; - } - } - if (other.stringField_ != null) { - if (stringField_ == null || other.StringField != "") { - StringField = other.StringField; - } - } - if (other.bytesField_ != null) { - if (bytesField_ == null || other.BytesField != pb::ByteString.Empty) { - BytesField = other.BytesField; - } - } - if (other.valueField_ != null) { - if (valueField_ == null) { - ValueField = new global::Google.Protobuf.WellKnownTypes.Value(); - } - ValueField.MergeFrom(other.ValueField); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - if (anyField_ == null) { - AnyField = new global::Google.Protobuf.WellKnownTypes.Any(); - } - input.ReadMessage(AnyField); - break; - } - case 18: { - if (apiField_ == null) { - ApiField = new global::Google.Protobuf.WellKnownTypes.Api(); - } - input.ReadMessage(ApiField); - break; - } - case 26: { - if (durationField_ == null) { - DurationField = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - input.ReadMessage(DurationField); - break; - } - case 34: { - if (emptyField_ == null) { - EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty(); - } - input.ReadMessage(EmptyField); - break; - } - case 42: { - if (fieldMaskField_ == null) { - FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - } - input.ReadMessage(FieldMaskField); - break; - } - case 50: { - if (sourceContextField_ == null) { - SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext(); - } - input.ReadMessage(SourceContextField); - break; - } - case 58: { - if (structField_ == null) { - StructField = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - input.ReadMessage(StructField); - break; - } - case 66: { - if (timestampField_ == null) { - TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - input.ReadMessage(TimestampField); - break; - } - case 74: { - if (typeField_ == null) { - TypeField = new global::Google.Protobuf.WellKnownTypes.Type(); - } - input.ReadMessage(TypeField); - break; - } - case 82: { - double? value = _single_doubleField_codec.Read(input); - if (doubleField_ == null || value != 0D) { - DoubleField = value; - } - break; - } - case 90: { - float? value = _single_floatField_codec.Read(input); - if (floatField_ == null || value != 0F) { - FloatField = value; - } - break; - } - case 98: { - long? value = _single_int64Field_codec.Read(input); - if (int64Field_ == null || value != 0L) { - Int64Field = value; - } - break; - } - case 106: { - ulong? value = _single_uint64Field_codec.Read(input); - if (uint64Field_ == null || value != 0UL) { - Uint64Field = value; - } - break; - } - case 114: { - int? value = _single_int32Field_codec.Read(input); - if (int32Field_ == null || value != 0) { - Int32Field = value; - } - break; - } - case 122: { - uint? value = _single_uint32Field_codec.Read(input); - if (uint32Field_ == null || value != 0) { - Uint32Field = value; - } - break; - } - case 130: { - bool? value = _single_boolField_codec.Read(input); - if (boolField_ == null || value != false) { - BoolField = value; - } - break; - } - case 138: { - string value = _single_stringField_codec.Read(input); - if (stringField_ == null || value != "") { - StringField = value; - } - break; - } - case 146: { - pb::ByteString value = _single_bytesField_codec.Read(input); - if (bytesField_ == null || value != pb::ByteString.Empty) { - BytesField = value; - } - break; - } - case 154: { - if (valueField_ == null) { - ValueField = new global::Google.Protobuf.WellKnownTypes.Value(); - } - input.ReadMessage(ValueField); - break; - } - } - } - } - - } - - /// - /// A repeated field for each well-known type. - /// - public sealed partial class RepeatedWellKnownTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new RepeatedWellKnownTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public RepeatedWellKnownTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public RepeatedWellKnownTypes(RepeatedWellKnownTypes other) : this() { - anyField_ = other.anyField_.Clone(); - apiField_ = other.apiField_.Clone(); - durationField_ = other.durationField_.Clone(); - emptyField_ = other.emptyField_.Clone(); - fieldMaskField_ = other.fieldMaskField_.Clone(); - sourceContextField_ = other.sourceContextField_.Clone(); - structField_ = other.structField_.Clone(); - timestampField_ = other.timestampField_.Clone(); - typeField_ = other.typeField_.Clone(); - doubleField_ = other.doubleField_.Clone(); - floatField_ = other.floatField_.Clone(); - int64Field_ = other.int64Field_.Clone(); - uint64Field_ = other.uint64Field_.Clone(); - int32Field_ = other.int32Field_.Clone(); - uint32Field_ = other.uint32Field_.Clone(); - boolField_ = other.boolField_.Clone(); - stringField_ = other.stringField_.Clone(); - bytesField_ = other.bytesField_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public RepeatedWellKnownTypes Clone() { - return new RepeatedWellKnownTypes(this); - } - - /// Field number for the "any_field" field. - public const int AnyFieldFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_anyField_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.WellKnownTypes.Any.Parser); - private readonly pbc::RepeatedField anyField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField AnyField { - get { return anyField_; } - } - - /// Field number for the "api_field" field. - public const int ApiFieldFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_apiField_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Api.Parser); - private readonly pbc::RepeatedField apiField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ApiField { - get { return apiField_; } - } - - /// Field number for the "duration_field" field. - public const int DurationFieldFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_durationField_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Duration.Parser); - private readonly pbc::RepeatedField durationField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField DurationField { - get { return durationField_; } - } - - /// Field number for the "empty_field" field. - public const int EmptyFieldFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_emptyField_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.WellKnownTypes.Empty.Parser); - private readonly pbc::RepeatedField emptyField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField EmptyField { - get { return emptyField_; } - } - - /// Field number for the "field_mask_field" field. - public const int FieldMaskFieldFieldNumber = 5; - private static readonly pb::FieldCodec _repeated_fieldMaskField_codec - = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.WellKnownTypes.FieldMask.Parser); - private readonly pbc::RepeatedField fieldMaskField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField FieldMaskField { - get { return fieldMaskField_; } - } - - /// Field number for the "source_context_field" field. - public const int SourceContextFieldFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_sourceContextField_codec - = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.WellKnownTypes.SourceContext.Parser); - private readonly pbc::RepeatedField sourceContextField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField SourceContextField { - get { return sourceContextField_; } - } - - /// Field number for the "struct_field" field. - public const int StructFieldFieldNumber = 7; - private static readonly pb::FieldCodec _repeated_structField_codec - = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.WellKnownTypes.Struct.Parser); - private readonly pbc::RepeatedField structField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField StructField { - get { return structField_; } - } - - /// Field number for the "timestamp_field" field. - public const int TimestampFieldFieldNumber = 8; - private static readonly pb::FieldCodec _repeated_timestampField_codec - = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser); - private readonly pbc::RepeatedField timestampField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField TimestampField { - get { return timestampField_; } - } - - /// Field number for the "type_field" field. - public const int TypeFieldFieldNumber = 9; - private static readonly pb::FieldCodec _repeated_typeField_codec - = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.WellKnownTypes.Type.Parser); - private readonly pbc::RepeatedField typeField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField TypeField { - get { return typeField_; } - } - - /// Field number for the "double_field" field. - public const int DoubleFieldFieldNumber = 10; - private static readonly pb::FieldCodec _repeated_doubleField_codec - = pb::FieldCodec.ForStructWrapper(82); - private readonly pbc::RepeatedField doubleField_ = new pbc::RepeatedField(); - /// - /// These don't actually make a lot of sense, but they're not prohibited... - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField DoubleField { - get { return doubleField_; } - } - - /// Field number for the "float_field" field. - public const int FloatFieldFieldNumber = 11; - private static readonly pb::FieldCodec _repeated_floatField_codec - = pb::FieldCodec.ForStructWrapper(90); - private readonly pbc::RepeatedField floatField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField FloatField { - get { return floatField_; } - } - - /// Field number for the "int64_field" field. - public const int Int64FieldFieldNumber = 12; - private static readonly pb::FieldCodec _repeated_int64Field_codec - = pb::FieldCodec.ForStructWrapper(98); - private readonly pbc::RepeatedField int64Field_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Int64Field { - get { return int64Field_; } - } - - /// Field number for the "uint64_field" field. - public const int Uint64FieldFieldNumber = 13; - private static readonly pb::FieldCodec _repeated_uint64Field_codec - = pb::FieldCodec.ForStructWrapper(106); - private readonly pbc::RepeatedField uint64Field_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Uint64Field { - get { return uint64Field_; } - } - - /// Field number for the "int32_field" field. - public const int Int32FieldFieldNumber = 14; - private static readonly pb::FieldCodec _repeated_int32Field_codec - = pb::FieldCodec.ForStructWrapper(114); - private readonly pbc::RepeatedField int32Field_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Int32Field { - get { return int32Field_; } - } - - /// Field number for the "uint32_field" field. - public const int Uint32FieldFieldNumber = 15; - private static readonly pb::FieldCodec _repeated_uint32Field_codec - = pb::FieldCodec.ForStructWrapper(122); - private readonly pbc::RepeatedField uint32Field_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Uint32Field { - get { return uint32Field_; } - } - - /// Field number for the "bool_field" field. - public const int BoolFieldFieldNumber = 16; - private static readonly pb::FieldCodec _repeated_boolField_codec - = pb::FieldCodec.ForStructWrapper(130); - private readonly pbc::RepeatedField boolField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField BoolField { - get { return boolField_; } - } - - /// Field number for the "string_field" field. - public const int StringFieldFieldNumber = 17; - private static readonly pb::FieldCodec _repeated_stringField_codec - = pb::FieldCodec.ForClassWrapper(138); - private readonly pbc::RepeatedField stringField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField StringField { - get { return stringField_; } - } - - /// Field number for the "bytes_field" field. - public const int BytesFieldFieldNumber = 18; - private static readonly pb::FieldCodec _repeated_bytesField_codec - = pb::FieldCodec.ForClassWrapper(146); - private readonly pbc::RepeatedField bytesField_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField BytesField { - get { return bytesField_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as RepeatedWellKnownTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(RepeatedWellKnownTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!anyField_.Equals(other.anyField_)) return false; - if(!apiField_.Equals(other.apiField_)) return false; - if(!durationField_.Equals(other.durationField_)) return false; - if(!emptyField_.Equals(other.emptyField_)) return false; - if(!fieldMaskField_.Equals(other.fieldMaskField_)) return false; - if(!sourceContextField_.Equals(other.sourceContextField_)) return false; - if(!structField_.Equals(other.structField_)) return false; - if(!timestampField_.Equals(other.timestampField_)) return false; - if(!typeField_.Equals(other.typeField_)) return false; - if(!doubleField_.Equals(other.doubleField_)) return false; - if(!floatField_.Equals(other.floatField_)) return false; - if(!int64Field_.Equals(other.int64Field_)) return false; - if(!uint64Field_.Equals(other.uint64Field_)) return false; - if(!int32Field_.Equals(other.int32Field_)) return false; - if(!uint32Field_.Equals(other.uint32Field_)) return false; - if(!boolField_.Equals(other.boolField_)) return false; - if(!stringField_.Equals(other.stringField_)) return false; - if(!bytesField_.Equals(other.bytesField_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= anyField_.GetHashCode(); - hash ^= apiField_.GetHashCode(); - hash ^= durationField_.GetHashCode(); - hash ^= emptyField_.GetHashCode(); - hash ^= fieldMaskField_.GetHashCode(); - hash ^= sourceContextField_.GetHashCode(); - hash ^= structField_.GetHashCode(); - hash ^= timestampField_.GetHashCode(); - hash ^= typeField_.GetHashCode(); - hash ^= doubleField_.GetHashCode(); - hash ^= floatField_.GetHashCode(); - hash ^= int64Field_.GetHashCode(); - hash ^= uint64Field_.GetHashCode(); - hash ^= int32Field_.GetHashCode(); - hash ^= uint32Field_.GetHashCode(); - hash ^= boolField_.GetHashCode(); - hash ^= stringField_.GetHashCode(); - hash ^= bytesField_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - anyField_.WriteTo(output, _repeated_anyField_codec); - apiField_.WriteTo(output, _repeated_apiField_codec); - durationField_.WriteTo(output, _repeated_durationField_codec); - emptyField_.WriteTo(output, _repeated_emptyField_codec); - fieldMaskField_.WriteTo(output, _repeated_fieldMaskField_codec); - sourceContextField_.WriteTo(output, _repeated_sourceContextField_codec); - structField_.WriteTo(output, _repeated_structField_codec); - timestampField_.WriteTo(output, _repeated_timestampField_codec); - typeField_.WriteTo(output, _repeated_typeField_codec); - doubleField_.WriteTo(output, _repeated_doubleField_codec); - floatField_.WriteTo(output, _repeated_floatField_codec); - int64Field_.WriteTo(output, _repeated_int64Field_codec); - uint64Field_.WriteTo(output, _repeated_uint64Field_codec); - int32Field_.WriteTo(output, _repeated_int32Field_codec); - uint32Field_.WriteTo(output, _repeated_uint32Field_codec); - boolField_.WriteTo(output, _repeated_boolField_codec); - stringField_.WriteTo(output, _repeated_stringField_codec); - bytesField_.WriteTo(output, _repeated_bytesField_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += anyField_.CalculateSize(_repeated_anyField_codec); - size += apiField_.CalculateSize(_repeated_apiField_codec); - size += durationField_.CalculateSize(_repeated_durationField_codec); - size += emptyField_.CalculateSize(_repeated_emptyField_codec); - size += fieldMaskField_.CalculateSize(_repeated_fieldMaskField_codec); - size += sourceContextField_.CalculateSize(_repeated_sourceContextField_codec); - size += structField_.CalculateSize(_repeated_structField_codec); - size += timestampField_.CalculateSize(_repeated_timestampField_codec); - size += typeField_.CalculateSize(_repeated_typeField_codec); - size += doubleField_.CalculateSize(_repeated_doubleField_codec); - size += floatField_.CalculateSize(_repeated_floatField_codec); - size += int64Field_.CalculateSize(_repeated_int64Field_codec); - size += uint64Field_.CalculateSize(_repeated_uint64Field_codec); - size += int32Field_.CalculateSize(_repeated_int32Field_codec); - size += uint32Field_.CalculateSize(_repeated_uint32Field_codec); - size += boolField_.CalculateSize(_repeated_boolField_codec); - size += stringField_.CalculateSize(_repeated_stringField_codec); - size += bytesField_.CalculateSize(_repeated_bytesField_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(RepeatedWellKnownTypes other) { - if (other == null) { - return; - } - anyField_.Add(other.anyField_); - apiField_.Add(other.apiField_); - durationField_.Add(other.durationField_); - emptyField_.Add(other.emptyField_); - fieldMaskField_.Add(other.fieldMaskField_); - sourceContextField_.Add(other.sourceContextField_); - structField_.Add(other.structField_); - timestampField_.Add(other.timestampField_); - typeField_.Add(other.typeField_); - doubleField_.Add(other.doubleField_); - floatField_.Add(other.floatField_); - int64Field_.Add(other.int64Field_); - uint64Field_.Add(other.uint64Field_); - int32Field_.Add(other.int32Field_); - uint32Field_.Add(other.uint32Field_); - boolField_.Add(other.boolField_); - stringField_.Add(other.stringField_); - bytesField_.Add(other.bytesField_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - anyField_.AddEntriesFrom(input, _repeated_anyField_codec); - break; - } - case 18: { - apiField_.AddEntriesFrom(input, _repeated_apiField_codec); - break; - } - case 26: { - durationField_.AddEntriesFrom(input, _repeated_durationField_codec); - break; - } - case 34: { - emptyField_.AddEntriesFrom(input, _repeated_emptyField_codec); - break; - } - case 42: { - fieldMaskField_.AddEntriesFrom(input, _repeated_fieldMaskField_codec); - break; - } - case 50: { - sourceContextField_.AddEntriesFrom(input, _repeated_sourceContextField_codec); - break; - } - case 58: { - structField_.AddEntriesFrom(input, _repeated_structField_codec); - break; - } - case 66: { - timestampField_.AddEntriesFrom(input, _repeated_timestampField_codec); - break; - } - case 74: { - typeField_.AddEntriesFrom(input, _repeated_typeField_codec); - break; - } - case 82: { - doubleField_.AddEntriesFrom(input, _repeated_doubleField_codec); - break; - } - case 90: { - floatField_.AddEntriesFrom(input, _repeated_floatField_codec); - break; - } - case 98: { - int64Field_.AddEntriesFrom(input, _repeated_int64Field_codec); - break; - } - case 106: { - uint64Field_.AddEntriesFrom(input, _repeated_uint64Field_codec); - break; - } - case 114: { - int32Field_.AddEntriesFrom(input, _repeated_int32Field_codec); - break; - } - case 122: { - uint32Field_.AddEntriesFrom(input, _repeated_uint32Field_codec); - break; - } - case 130: { - boolField_.AddEntriesFrom(input, _repeated_boolField_codec); - break; - } - case 138: { - stringField_.AddEntriesFrom(input, _repeated_stringField_codec); - break; - } - case 146: { - bytesField_.AddEntriesFrom(input, _repeated_bytesField_codec); - break; - } - } - } - } - - } - - public sealed partial class OneofWellKnownTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneofWellKnownTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofWellKnownTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofWellKnownTypes(OneofWellKnownTypes other) : this() { - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.AnyField: - AnyField = other.AnyField.Clone(); - break; - case OneofFieldOneofCase.ApiField: - ApiField = other.ApiField.Clone(); - break; - case OneofFieldOneofCase.DurationField: - DurationField = other.DurationField.Clone(); - break; - case OneofFieldOneofCase.EmptyField: - EmptyField = other.EmptyField.Clone(); - break; - case OneofFieldOneofCase.FieldMaskField: - FieldMaskField = other.FieldMaskField.Clone(); - break; - case OneofFieldOneofCase.SourceContextField: - SourceContextField = other.SourceContextField.Clone(); - break; - case OneofFieldOneofCase.StructField: - StructField = other.StructField.Clone(); - break; - case OneofFieldOneofCase.TimestampField: - TimestampField = other.TimestampField.Clone(); - break; - case OneofFieldOneofCase.TypeField: - TypeField = other.TypeField.Clone(); - break; - case OneofFieldOneofCase.DoubleField: - DoubleField = other.DoubleField; - break; - case OneofFieldOneofCase.FloatField: - FloatField = other.FloatField; - break; - case OneofFieldOneofCase.Int64Field: - Int64Field = other.Int64Field; - break; - case OneofFieldOneofCase.Uint64Field: - Uint64Field = other.Uint64Field; - break; - case OneofFieldOneofCase.Int32Field: - Int32Field = other.Int32Field; - break; - case OneofFieldOneofCase.Uint32Field: - Uint32Field = other.Uint32Field; - break; - case OneofFieldOneofCase.BoolField: - BoolField = other.BoolField; - break; - case OneofFieldOneofCase.StringField: - StringField = other.StringField; - break; - case OneofFieldOneofCase.BytesField: - BytesField = other.BytesField; - break; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofWellKnownTypes Clone() { - return new OneofWellKnownTypes(this); - } - - /// Field number for the "any_field" field. - public const int AnyFieldFieldNumber = 1; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Any AnyField { - get { return oneofFieldCase_ == OneofFieldOneofCase.AnyField ? (global::Google.Protobuf.WellKnownTypes.Any) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.AnyField; - } - } - - /// Field number for the "api_field" field. - public const int ApiFieldFieldNumber = 2; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Api ApiField { - get { return oneofFieldCase_ == OneofFieldOneofCase.ApiField ? (global::Google.Protobuf.WellKnownTypes.Api) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.ApiField; - } - } - - /// Field number for the "duration_field" field. - public const int DurationFieldFieldNumber = 3; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Duration DurationField { - get { return oneofFieldCase_ == OneofFieldOneofCase.DurationField ? (global::Google.Protobuf.WellKnownTypes.Duration) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.DurationField; - } - } - - /// Field number for the "empty_field" field. - public const int EmptyFieldFieldNumber = 4; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Empty EmptyField { - get { return oneofFieldCase_ == OneofFieldOneofCase.EmptyField ? (global::Google.Protobuf.WellKnownTypes.Empty) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.EmptyField; - } - } - - /// Field number for the "field_mask_field" field. - public const int FieldMaskFieldFieldNumber = 5; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.FieldMask FieldMaskField { - get { return oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField ? (global::Google.Protobuf.WellKnownTypes.FieldMask) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.FieldMaskField; - } - } - - /// Field number for the "source_context_field" field. - public const int SourceContextFieldFieldNumber = 6; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContextField { - get { return oneofFieldCase_ == OneofFieldOneofCase.SourceContextField ? (global::Google.Protobuf.WellKnownTypes.SourceContext) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.SourceContextField; - } - } - - /// Field number for the "struct_field" field. - public const int StructFieldFieldNumber = 7; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Struct StructField { - get { return oneofFieldCase_ == OneofFieldOneofCase.StructField ? (global::Google.Protobuf.WellKnownTypes.Struct) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.StructField; - } - } - - /// Field number for the "timestamp_field" field. - public const int TimestampFieldFieldNumber = 8; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Timestamp TimestampField { - get { return oneofFieldCase_ == OneofFieldOneofCase.TimestampField ? (global::Google.Protobuf.WellKnownTypes.Timestamp) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.TimestampField; - } - } - - /// Field number for the "type_field" field. - public const int TypeFieldFieldNumber = 9; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Type TypeField { - get { return oneofFieldCase_ == OneofFieldOneofCase.TypeField ? (global::Google.Protobuf.WellKnownTypes.Type) oneofField_ : null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.TypeField; - } - } - - /// Field number for the "double_field" field. - public const int DoubleFieldFieldNumber = 10; - private static readonly pb::FieldCodec _oneof_doubleField_codec = pb::FieldCodec.ForStructWrapper(82); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double? DoubleField { - get { return oneofFieldCase_ == OneofFieldOneofCase.DoubleField ? (double?) oneofField_ : (double?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.DoubleField; - } - } - - /// Field number for the "float_field" field. - public const int FloatFieldFieldNumber = 11; - private static readonly pb::FieldCodec _oneof_floatField_codec = pb::FieldCodec.ForStructWrapper(90); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public float? FloatField { - get { return oneofFieldCase_ == OneofFieldOneofCase.FloatField ? (float?) oneofField_ : (float?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.FloatField; - } - } - - /// Field number for the "int64_field" field. - public const int Int64FieldFieldNumber = 12; - private static readonly pb::FieldCodec _oneof_int64Field_codec = pb::FieldCodec.ForStructWrapper(98); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long? Int64Field { - get { return oneofFieldCase_ == OneofFieldOneofCase.Int64Field ? (long?) oneofField_ : (long?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Int64Field; - } - } - - /// Field number for the "uint64_field" field. - public const int Uint64FieldFieldNumber = 13; - private static readonly pb::FieldCodec _oneof_uint64Field_codec = pb::FieldCodec.ForStructWrapper(106); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong? Uint64Field { - get { return oneofFieldCase_ == OneofFieldOneofCase.Uint64Field ? (ulong?) oneofField_ : (ulong?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Uint64Field; - } - } - - /// Field number for the "int32_field" field. - public const int Int32FieldFieldNumber = 14; - private static readonly pb::FieldCodec _oneof_int32Field_codec = pb::FieldCodec.ForStructWrapper(114); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int? Int32Field { - get { return oneofFieldCase_ == OneofFieldOneofCase.Int32Field ? (int?) oneofField_ : (int?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Int32Field; - } - } - - /// Field number for the "uint32_field" field. - public const int Uint32FieldFieldNumber = 15; - private static readonly pb::FieldCodec _oneof_uint32Field_codec = pb::FieldCodec.ForStructWrapper(122); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public uint? Uint32Field { - get { return oneofFieldCase_ == OneofFieldOneofCase.Uint32Field ? (uint?) oneofField_ : (uint?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.Uint32Field; - } - } - - /// Field number for the "bool_field" field. - public const int BoolFieldFieldNumber = 16; - private static readonly pb::FieldCodec _oneof_boolField_codec = pb::FieldCodec.ForStructWrapper(130); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool? BoolField { - get { return oneofFieldCase_ == OneofFieldOneofCase.BoolField ? (bool?) oneofField_ : (bool?) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.BoolField; - } - } - - /// Field number for the "string_field" field. - public const int StringFieldFieldNumber = 17; - private static readonly pb::FieldCodec _oneof_stringField_codec = pb::FieldCodec.ForClassWrapper(138); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string StringField { - get { return oneofFieldCase_ == OneofFieldOneofCase.StringField ? (string) oneofField_ : (string) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.StringField; - } - } - - /// Field number for the "bytes_field" field. - public const int BytesFieldFieldNumber = 18; - private static readonly pb::FieldCodec _oneof_bytesField_codec = pb::FieldCodec.ForClassWrapper(146); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString BytesField { - get { return oneofFieldCase_ == OneofFieldOneofCase.BytesField ? (pb::ByteString) oneofField_ : (pb::ByteString) null; } - set { - oneofField_ = value; - oneofFieldCase_ = value == null ? OneofFieldOneofCase.None : OneofFieldOneofCase.BytesField; - } - } - - private object oneofField_; - /// Enum of possible cases for the "oneof_field" oneof. - public enum OneofFieldOneofCase { - None = 0, - AnyField = 1, - ApiField = 2, - DurationField = 3, - EmptyField = 4, - FieldMaskField = 5, - SourceContextField = 6, - StructField = 7, - TimestampField = 8, - TypeField = 9, - DoubleField = 10, - FloatField = 11, - Int64Field = 12, - Uint64Field = 13, - Int32Field = 14, - Uint32Field = 15, - BoolField = 16, - StringField = 17, - BytesField = 18, - } - private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofFieldOneofCase OneofFieldCase { - get { return oneofFieldCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOneofField() { - oneofFieldCase_ = OneofFieldOneofCase.None; - oneofField_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneofWellKnownTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneofWellKnownTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!object.Equals(AnyField, other.AnyField)) return false; - if (!object.Equals(ApiField, other.ApiField)) return false; - if (!object.Equals(DurationField, other.DurationField)) return false; - if (!object.Equals(EmptyField, other.EmptyField)) return false; - if (!object.Equals(FieldMaskField, other.FieldMaskField)) return false; - if (!object.Equals(SourceContextField, other.SourceContextField)) return false; - if (!object.Equals(StructField, other.StructField)) return false; - if (!object.Equals(TimestampField, other.TimestampField)) return false; - if (!object.Equals(TypeField, other.TypeField)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.Equals(DoubleField, other.DoubleField)) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.Equals(FloatField, other.FloatField)) return false; - if (Int64Field != other.Int64Field) return false; - if (Uint64Field != other.Uint64Field) return false; - if (Int32Field != other.Int32Field) return false; - if (Uint32Field != other.Uint32Field) return false; - if (BoolField != other.BoolField) return false; - if (StringField != other.StringField) return false; - if (BytesField != other.BytesField) return false; - if (OneofFieldCase != other.OneofFieldCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) hash ^= AnyField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) hash ^= ApiField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) hash ^= DurationField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) hash ^= EmptyField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) hash ^= FieldMaskField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) hash ^= SourceContextField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.StructField) hash ^= StructField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) hash ^= TimestampField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) hash ^= TypeField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableDoubleEqualityComparer.GetHashCode(DoubleField); - if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) hash ^= pbc::ProtobufEqualityComparers.BitwiseNullableSingleEqualityComparer.GetHashCode(FloatField); - if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) hash ^= Int64Field.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) hash ^= Uint64Field.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) hash ^= Int32Field.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) hash ^= Uint32Field.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) hash ^= BoolField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.StringField) hash ^= StringField.GetHashCode(); - if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) hash ^= BytesField.GetHashCode(); - hash ^= (int) oneofFieldCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) { - output.WriteRawTag(10); - output.WriteMessage(AnyField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) { - output.WriteRawTag(18); - output.WriteMessage(ApiField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) { - output.WriteRawTag(26); - output.WriteMessage(DurationField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) { - output.WriteRawTag(34); - output.WriteMessage(EmptyField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) { - output.WriteRawTag(42); - output.WriteMessage(FieldMaskField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) { - output.WriteRawTag(50); - output.WriteMessage(SourceContextField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.StructField) { - output.WriteRawTag(58); - output.WriteMessage(StructField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) { - output.WriteRawTag(66); - output.WriteMessage(TimestampField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) { - output.WriteRawTag(74); - output.WriteMessage(TypeField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) { - _oneof_doubleField_codec.WriteTagAndValue(output, (double?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) { - _oneof_floatField_codec.WriteTagAndValue(output, (float?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) { - _oneof_int64Field_codec.WriteTagAndValue(output, (long?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) { - _oneof_uint64Field_codec.WriteTagAndValue(output, (ulong?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) { - _oneof_int32Field_codec.WriteTagAndValue(output, (int?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) { - _oneof_uint32Field_codec.WriteTagAndValue(output, (uint?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) { - _oneof_boolField_codec.WriteTagAndValue(output, (bool?) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.StringField) { - _oneof_stringField_codec.WriteTagAndValue(output, (string) oneofField_); - } - if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) { - _oneof_bytesField_codec.WriteTagAndValue(output, (pb::ByteString) oneofField_); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(AnyField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(ApiField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(DurationField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(EmptyField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(FieldMaskField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceContextField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.StructField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(StructField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(TypeField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.DoubleField) { - size += _oneof_doubleField_codec.CalculateSizeWithTag(DoubleField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.FloatField) { - size += _oneof_floatField_codec.CalculateSizeWithTag(FloatField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Int64Field) { - size += _oneof_int64Field_codec.CalculateSizeWithTag(Int64Field); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Uint64Field) { - size += _oneof_uint64Field_codec.CalculateSizeWithTag(Uint64Field); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Int32Field) { - size += _oneof_int32Field_codec.CalculateSizeWithTag(Int32Field); - } - if (oneofFieldCase_ == OneofFieldOneofCase.Uint32Field) { - size += _oneof_uint32Field_codec.CalculateSizeWithTag(Uint32Field); - } - if (oneofFieldCase_ == OneofFieldOneofCase.BoolField) { - size += _oneof_boolField_codec.CalculateSizeWithTag(BoolField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.StringField) { - size += _oneof_stringField_codec.CalculateSizeWithTag(StringField); - } - if (oneofFieldCase_ == OneofFieldOneofCase.BytesField) { - size += _oneof_bytesField_codec.CalculateSizeWithTag(BytesField); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneofWellKnownTypes other) { - if (other == null) { - return; - } - switch (other.OneofFieldCase) { - case OneofFieldOneofCase.AnyField: - if (AnyField == null) { - AnyField = new global::Google.Protobuf.WellKnownTypes.Any(); - } - AnyField.MergeFrom(other.AnyField); - break; - case OneofFieldOneofCase.ApiField: - if (ApiField == null) { - ApiField = new global::Google.Protobuf.WellKnownTypes.Api(); - } - ApiField.MergeFrom(other.ApiField); - break; - case OneofFieldOneofCase.DurationField: - if (DurationField == null) { - DurationField = new global::Google.Protobuf.WellKnownTypes.Duration(); - } - DurationField.MergeFrom(other.DurationField); - break; - case OneofFieldOneofCase.EmptyField: - if (EmptyField == null) { - EmptyField = new global::Google.Protobuf.WellKnownTypes.Empty(); - } - EmptyField.MergeFrom(other.EmptyField); - break; - case OneofFieldOneofCase.FieldMaskField: - if (FieldMaskField == null) { - FieldMaskField = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - } - FieldMaskField.MergeFrom(other.FieldMaskField); - break; - case OneofFieldOneofCase.SourceContextField: - if (SourceContextField == null) { - SourceContextField = new global::Google.Protobuf.WellKnownTypes.SourceContext(); - } - SourceContextField.MergeFrom(other.SourceContextField); - break; - case OneofFieldOneofCase.StructField: - if (StructField == null) { - StructField = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - StructField.MergeFrom(other.StructField); - break; - case OneofFieldOneofCase.TimestampField: - if (TimestampField == null) { - TimestampField = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - } - TimestampField.MergeFrom(other.TimestampField); - break; - case OneofFieldOneofCase.TypeField: - if (TypeField == null) { - TypeField = new global::Google.Protobuf.WellKnownTypes.Type(); - } - TypeField.MergeFrom(other.TypeField); - break; - case OneofFieldOneofCase.DoubleField: - DoubleField = other.DoubleField; - break; - case OneofFieldOneofCase.FloatField: - FloatField = other.FloatField; - break; - case OneofFieldOneofCase.Int64Field: - Int64Field = other.Int64Field; - break; - case OneofFieldOneofCase.Uint64Field: - Uint64Field = other.Uint64Field; - break; - case OneofFieldOneofCase.Int32Field: - Int32Field = other.Int32Field; - break; - case OneofFieldOneofCase.Uint32Field: - Uint32Field = other.Uint32Field; - break; - case OneofFieldOneofCase.BoolField: - BoolField = other.BoolField; - break; - case OneofFieldOneofCase.StringField: - StringField = other.StringField; - break; - case OneofFieldOneofCase.BytesField: - BytesField = other.BytesField; - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - global::Google.Protobuf.WellKnownTypes.Any subBuilder = new global::Google.Protobuf.WellKnownTypes.Any(); - if (oneofFieldCase_ == OneofFieldOneofCase.AnyField) { - subBuilder.MergeFrom(AnyField); - } - input.ReadMessage(subBuilder); - AnyField = subBuilder; - break; - } - case 18: { - global::Google.Protobuf.WellKnownTypes.Api subBuilder = new global::Google.Protobuf.WellKnownTypes.Api(); - if (oneofFieldCase_ == OneofFieldOneofCase.ApiField) { - subBuilder.MergeFrom(ApiField); - } - input.ReadMessage(subBuilder); - ApiField = subBuilder; - break; - } - case 26: { - global::Google.Protobuf.WellKnownTypes.Duration subBuilder = new global::Google.Protobuf.WellKnownTypes.Duration(); - if (oneofFieldCase_ == OneofFieldOneofCase.DurationField) { - subBuilder.MergeFrom(DurationField); - } - input.ReadMessage(subBuilder); - DurationField = subBuilder; - break; - } - case 34: { - global::Google.Protobuf.WellKnownTypes.Empty subBuilder = new global::Google.Protobuf.WellKnownTypes.Empty(); - if (oneofFieldCase_ == OneofFieldOneofCase.EmptyField) { - subBuilder.MergeFrom(EmptyField); - } - input.ReadMessage(subBuilder); - EmptyField = subBuilder; - break; - } - case 42: { - global::Google.Protobuf.WellKnownTypes.FieldMask subBuilder = new global::Google.Protobuf.WellKnownTypes.FieldMask(); - if (oneofFieldCase_ == OneofFieldOneofCase.FieldMaskField) { - subBuilder.MergeFrom(FieldMaskField); - } - input.ReadMessage(subBuilder); - FieldMaskField = subBuilder; - break; - } - case 50: { - global::Google.Protobuf.WellKnownTypes.SourceContext subBuilder = new global::Google.Protobuf.WellKnownTypes.SourceContext(); - if (oneofFieldCase_ == OneofFieldOneofCase.SourceContextField) { - subBuilder.MergeFrom(SourceContextField); - } - input.ReadMessage(subBuilder); - SourceContextField = subBuilder; - break; - } - case 58: { - global::Google.Protobuf.WellKnownTypes.Struct subBuilder = new global::Google.Protobuf.WellKnownTypes.Struct(); - if (oneofFieldCase_ == OneofFieldOneofCase.StructField) { - subBuilder.MergeFrom(StructField); - } - input.ReadMessage(subBuilder); - StructField = subBuilder; - break; - } - case 66: { - global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp(); - if (oneofFieldCase_ == OneofFieldOneofCase.TimestampField) { - subBuilder.MergeFrom(TimestampField); - } - input.ReadMessage(subBuilder); - TimestampField = subBuilder; - break; - } - case 74: { - global::Google.Protobuf.WellKnownTypes.Type subBuilder = new global::Google.Protobuf.WellKnownTypes.Type(); - if (oneofFieldCase_ == OneofFieldOneofCase.TypeField) { - subBuilder.MergeFrom(TypeField); - } - input.ReadMessage(subBuilder); - TypeField = subBuilder; - break; - } - case 82: { - DoubleField = _oneof_doubleField_codec.Read(input); - break; - } - case 90: { - FloatField = _oneof_floatField_codec.Read(input); - break; - } - case 98: { - Int64Field = _oneof_int64Field_codec.Read(input); - break; - } - case 106: { - Uint64Field = _oneof_uint64Field_codec.Read(input); - break; - } - case 114: { - Int32Field = _oneof_int32Field_codec.Read(input); - break; - } - case 122: { - Uint32Field = _oneof_uint32Field_codec.Read(input); - break; - } - case 130: { - BoolField = _oneof_boolField_codec.Read(input); - break; - } - case 138: { - StringField = _oneof_stringField_codec.Read(input); - break; - } - case 146: { - BytesField = _oneof_bytesField_codec.Read(input); - break; - } - } - } - } - - } - - /// - /// A map field for each well-known type. We only - /// need to worry about the value part of the map being the - /// well-known types, as messages can't be map keys. - /// - public sealed partial class MapWellKnownTypes : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MapWellKnownTypes()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.TestProtos.UnittestWellKnownTypesReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MapWellKnownTypes() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MapWellKnownTypes(MapWellKnownTypes other) : this() { - anyField_ = other.anyField_.Clone(); - apiField_ = other.apiField_.Clone(); - durationField_ = other.durationField_.Clone(); - emptyField_ = other.emptyField_.Clone(); - fieldMaskField_ = other.fieldMaskField_.Clone(); - sourceContextField_ = other.sourceContextField_.Clone(); - structField_ = other.structField_.Clone(); - timestampField_ = other.timestampField_.Clone(); - typeField_ = other.typeField_.Clone(); - doubleField_ = other.doubleField_.Clone(); - floatField_ = other.floatField_.Clone(); - int64Field_ = other.int64Field_.Clone(); - uint64Field_ = other.uint64Field_.Clone(); - int32Field_ = other.int32Field_.Clone(); - uint32Field_ = other.uint32Field_.Clone(); - boolField_ = other.boolField_.Clone(); - stringField_ = other.stringField_.Clone(); - bytesField_ = other.bytesField_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MapWellKnownTypes Clone() { - return new MapWellKnownTypes(this); - } - - /// Field number for the "any_field" field. - public const int AnyFieldFieldNumber = 1; - private static readonly pbc::MapField.Codec _map_anyField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Any.Parser), 10); - private readonly pbc::MapField anyField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField AnyField { - get { return anyField_; } - } - - /// Field number for the "api_field" field. - public const int ApiFieldFieldNumber = 2; - private static readonly pbc::MapField.Codec _map_apiField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Api.Parser), 18); - private readonly pbc::MapField apiField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField ApiField { - get { return apiField_; } - } - - /// Field number for the "duration_field" field. - public const int DurationFieldFieldNumber = 3; - private static readonly pbc::MapField.Codec _map_durationField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Duration.Parser), 26); - private readonly pbc::MapField durationField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField DurationField { - get { return durationField_; } - } - - /// Field number for the "empty_field" field. - public const int EmptyFieldFieldNumber = 4; - private static readonly pbc::MapField.Codec _map_emptyField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Empty.Parser), 34); - private readonly pbc::MapField emptyField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField EmptyField { - get { return emptyField_; } - } - - /// Field number for the "field_mask_field" field. - public const int FieldMaskFieldFieldNumber = 5; - private static readonly pbc::MapField.Codec _map_fieldMaskField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.FieldMask.Parser), 42); - private readonly pbc::MapField fieldMaskField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField FieldMaskField { - get { return fieldMaskField_; } - } - - /// Field number for the "source_context_field" field. - public const int SourceContextFieldFieldNumber = 6; - private static readonly pbc::MapField.Codec _map_sourceContextField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.SourceContext.Parser), 50); - private readonly pbc::MapField sourceContextField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField SourceContextField { - get { return sourceContextField_; } - } - - /// Field number for the "struct_field" field. - public const int StructFieldFieldNumber = 7; - private static readonly pbc::MapField.Codec _map_structField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Struct.Parser), 58); - private readonly pbc::MapField structField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField StructField { - get { return structField_; } - } - - /// Field number for the "timestamp_field" field. - public const int TimestampFieldFieldNumber = 8; - private static readonly pbc::MapField.Codec _map_timestampField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser), 66); - private readonly pbc::MapField timestampField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField TimestampField { - get { return timestampField_; } - } - - /// Field number for the "type_field" field. - public const int TypeFieldFieldNumber = 9; - private static readonly pbc::MapField.Codec _map_typeField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Type.Parser), 74); - private readonly pbc::MapField typeField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField TypeField { - get { return typeField_; } - } - - /// Field number for the "double_field" field. - public const int DoubleFieldFieldNumber = 10; - private static readonly pbc::MapField.Codec _map_doubleField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 82); - private readonly pbc::MapField doubleField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField DoubleField { - get { return doubleField_; } - } - - /// Field number for the "float_field" field. - public const int FloatFieldFieldNumber = 11; - private static readonly pbc::MapField.Codec _map_floatField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 90); - private readonly pbc::MapField floatField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField FloatField { - get { return floatField_; } - } - - /// Field number for the "int64_field" field. - public const int Int64FieldFieldNumber = 12; - private static readonly pbc::MapField.Codec _map_int64Field_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 98); - private readonly pbc::MapField int64Field_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Int64Field { - get { return int64Field_; } - } - - /// Field number for the "uint64_field" field. - public const int Uint64FieldFieldNumber = 13; - private static readonly pbc::MapField.Codec _map_uint64Field_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 106); - private readonly pbc::MapField uint64Field_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Uint64Field { - get { return uint64Field_; } - } - - /// Field number for the "int32_field" field. - public const int Int32FieldFieldNumber = 14; - private static readonly pbc::MapField.Codec _map_int32Field_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 114); - private readonly pbc::MapField int32Field_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Int32Field { - get { return int32Field_; } - } - - /// Field number for the "uint32_field" field. - public const int Uint32FieldFieldNumber = 15; - private static readonly pbc::MapField.Codec _map_uint32Field_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 122); - private readonly pbc::MapField uint32Field_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Uint32Field { - get { return uint32Field_; } - } - - /// Field number for the "bool_field" field. - public const int BoolFieldFieldNumber = 16; - private static readonly pbc::MapField.Codec _map_boolField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForStructWrapper(18), 130); - private readonly pbc::MapField boolField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField BoolField { - get { return boolField_; } - } - - /// Field number for the "string_field" field. - public const int StringFieldFieldNumber = 17; - private static readonly pbc::MapField.Codec _map_stringField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForClassWrapper(18), 138); - private readonly pbc::MapField stringField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField StringField { - get { return stringField_; } - } - - /// Field number for the "bytes_field" field. - public const int BytesFieldFieldNumber = 18; - private static readonly pbc::MapField.Codec _map_bytesField_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForInt32(8, 0), pb::FieldCodec.ForClassWrapper(18), 146); - private readonly pbc::MapField bytesField_ = new pbc::MapField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField BytesField { - get { return bytesField_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MapWellKnownTypes); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MapWellKnownTypes other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (!AnyField.Equals(other.AnyField)) return false; - if (!ApiField.Equals(other.ApiField)) return false; - if (!DurationField.Equals(other.DurationField)) return false; - if (!EmptyField.Equals(other.EmptyField)) return false; - if (!FieldMaskField.Equals(other.FieldMaskField)) return false; - if (!SourceContextField.Equals(other.SourceContextField)) return false; - if (!StructField.Equals(other.StructField)) return false; - if (!TimestampField.Equals(other.TimestampField)) return false; - if (!TypeField.Equals(other.TypeField)) return false; - if (!DoubleField.Equals(other.DoubleField)) return false; - if (!FloatField.Equals(other.FloatField)) return false; - if (!Int64Field.Equals(other.Int64Field)) return false; - if (!Uint64Field.Equals(other.Uint64Field)) return false; - if (!Int32Field.Equals(other.Int32Field)) return false; - if (!Uint32Field.Equals(other.Uint32Field)) return false; - if (!BoolField.Equals(other.BoolField)) return false; - if (!StringField.Equals(other.StringField)) return false; - if (!BytesField.Equals(other.BytesField)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= AnyField.GetHashCode(); - hash ^= ApiField.GetHashCode(); - hash ^= DurationField.GetHashCode(); - hash ^= EmptyField.GetHashCode(); - hash ^= FieldMaskField.GetHashCode(); - hash ^= SourceContextField.GetHashCode(); - hash ^= StructField.GetHashCode(); - hash ^= TimestampField.GetHashCode(); - hash ^= TypeField.GetHashCode(); - hash ^= DoubleField.GetHashCode(); - hash ^= FloatField.GetHashCode(); - hash ^= Int64Field.GetHashCode(); - hash ^= Uint64Field.GetHashCode(); - hash ^= Int32Field.GetHashCode(); - hash ^= Uint32Field.GetHashCode(); - hash ^= BoolField.GetHashCode(); - hash ^= StringField.GetHashCode(); - hash ^= BytesField.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - anyField_.WriteTo(output, _map_anyField_codec); - apiField_.WriteTo(output, _map_apiField_codec); - durationField_.WriteTo(output, _map_durationField_codec); - emptyField_.WriteTo(output, _map_emptyField_codec); - fieldMaskField_.WriteTo(output, _map_fieldMaskField_codec); - sourceContextField_.WriteTo(output, _map_sourceContextField_codec); - structField_.WriteTo(output, _map_structField_codec); - timestampField_.WriteTo(output, _map_timestampField_codec); - typeField_.WriteTo(output, _map_typeField_codec); - doubleField_.WriteTo(output, _map_doubleField_codec); - floatField_.WriteTo(output, _map_floatField_codec); - int64Field_.WriteTo(output, _map_int64Field_codec); - uint64Field_.WriteTo(output, _map_uint64Field_codec); - int32Field_.WriteTo(output, _map_int32Field_codec); - uint32Field_.WriteTo(output, _map_uint32Field_codec); - boolField_.WriteTo(output, _map_boolField_codec); - stringField_.WriteTo(output, _map_stringField_codec); - bytesField_.WriteTo(output, _map_bytesField_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += anyField_.CalculateSize(_map_anyField_codec); - size += apiField_.CalculateSize(_map_apiField_codec); - size += durationField_.CalculateSize(_map_durationField_codec); - size += emptyField_.CalculateSize(_map_emptyField_codec); - size += fieldMaskField_.CalculateSize(_map_fieldMaskField_codec); - size += sourceContextField_.CalculateSize(_map_sourceContextField_codec); - size += structField_.CalculateSize(_map_structField_codec); - size += timestampField_.CalculateSize(_map_timestampField_codec); - size += typeField_.CalculateSize(_map_typeField_codec); - size += doubleField_.CalculateSize(_map_doubleField_codec); - size += floatField_.CalculateSize(_map_floatField_codec); - size += int64Field_.CalculateSize(_map_int64Field_codec); - size += uint64Field_.CalculateSize(_map_uint64Field_codec); - size += int32Field_.CalculateSize(_map_int32Field_codec); - size += uint32Field_.CalculateSize(_map_uint32Field_codec); - size += boolField_.CalculateSize(_map_boolField_codec); - size += stringField_.CalculateSize(_map_stringField_codec); - size += bytesField_.CalculateSize(_map_bytesField_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MapWellKnownTypes other) { - if (other == null) { - return; - } - anyField_.Add(other.anyField_); - apiField_.Add(other.apiField_); - durationField_.Add(other.durationField_); - emptyField_.Add(other.emptyField_); - fieldMaskField_.Add(other.fieldMaskField_); - sourceContextField_.Add(other.sourceContextField_); - structField_.Add(other.structField_); - timestampField_.Add(other.timestampField_); - typeField_.Add(other.typeField_); - doubleField_.Add(other.doubleField_); - floatField_.Add(other.floatField_); - int64Field_.Add(other.int64Field_); - uint64Field_.Add(other.uint64Field_); - int32Field_.Add(other.int32Field_); - uint32Field_.Add(other.uint32Field_); - boolField_.Add(other.boolField_); - stringField_.Add(other.stringField_); - bytesField_.Add(other.bytesField_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - anyField_.AddEntriesFrom(input, _map_anyField_codec); - break; - } - case 18: { - apiField_.AddEntriesFrom(input, _map_apiField_codec); - break; - } - case 26: { - durationField_.AddEntriesFrom(input, _map_durationField_codec); - break; - } - case 34: { - emptyField_.AddEntriesFrom(input, _map_emptyField_codec); - break; - } - case 42: { - fieldMaskField_.AddEntriesFrom(input, _map_fieldMaskField_codec); - break; - } - case 50: { - sourceContextField_.AddEntriesFrom(input, _map_sourceContextField_codec); - break; - } - case 58: { - structField_.AddEntriesFrom(input, _map_structField_codec); - break; - } - case 66: { - timestampField_.AddEntriesFrom(input, _map_timestampField_codec); - break; - } - case 74: { - typeField_.AddEntriesFrom(input, _map_typeField_codec); - break; - } - case 82: { - doubleField_.AddEntriesFrom(input, _map_doubleField_codec); - break; - } - case 90: { - floatField_.AddEntriesFrom(input, _map_floatField_codec); - break; - } - case 98: { - int64Field_.AddEntriesFrom(input, _map_int64Field_codec); - break; - } - case 106: { - uint64Field_.AddEntriesFrom(input, _map_uint64Field_codec); - break; - } - case 114: { - int32Field_.AddEntriesFrom(input, _map_int32Field_codec); - break; - } - case 122: { - uint32Field_.AddEntriesFrom(input, _map_uint32Field_codec); - break; - } - case 130: { - boolField_.AddEntriesFrom(input, _map_boolField_codec); - break; - } - case 138: { - stringField_.AddEntriesFrom(input, _map_stringField_codec); - break; - } - case 146: { - bytesField_.AddEntriesFrom(input, _map_bytesField_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/UnknownFieldSetTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/UnknownFieldSetTest.cs deleted file mode 100644 index 438b2ec..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/UnknownFieldSetTest.cs +++ /dev/null @@ -1,194 +0,0 @@ -#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.IO; -using Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf -{ - public class UnknownFieldSetTest - { - [Test] - public void EmptyUnknownFieldSet() - { - UnknownFieldSet unknownFields = new UnknownFieldSet(); - Assert.AreEqual(0, unknownFields.CalculateSize()); - } - - [Test] - public void MergeUnknownFieldSet() - { - UnknownFieldSet unknownFields = new UnknownFieldSet(); - UnknownField field = new UnknownField(); - field.AddFixed32(123); - unknownFields.AddOrReplaceField(1, field); - UnknownFieldSet otherUnknownFields = new UnknownFieldSet(); - Assert.IsFalse(otherUnknownFields.HasField(1)); - UnknownFieldSet.MergeFrom(otherUnknownFields, unknownFields); - Assert.IsTrue(otherUnknownFields.HasField(1)); - } - - [Test] - public void TestMergeCodedInput() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var emptyMessage = new TestEmptyMessage(); - emptyMessage.MergeFrom(message.ToByteArray()); - Assert.AreEqual(message.CalculateSize(), emptyMessage.CalculateSize()); - Assert.AreEqual(message.ToByteArray(), emptyMessage.ToByteArray()); - - var newMessage = new TestAllTypes(); - newMessage.MergeFrom(emptyMessage.ToByteArray()); - Assert.AreEqual(message, newMessage); - Assert.AreEqual(message.CalculateSize(), newMessage.CalculateSize()); - } - - [Test] - public void TestMergeMessage() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var emptyMessage = new TestEmptyMessage(); - var otherEmptyMessage = new TestEmptyMessage(); - emptyMessage.MergeFrom(message.ToByteArray()); - otherEmptyMessage.MergeFrom(emptyMessage); - - Assert.AreEqual(message.CalculateSize(), otherEmptyMessage.CalculateSize()); - Assert.AreEqual(message.ToByteArray(), otherEmptyMessage.ToByteArray()); - } - - [Test] - public void TestEquals() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var emptyMessage = new TestEmptyMessage(); - var otherEmptyMessage = new TestEmptyMessage(); - Assert.AreEqual(emptyMessage, otherEmptyMessage); - emptyMessage.MergeFrom(message.ToByteArray()); - Assert.AreNotEqual(emptyMessage.CalculateSize(), - otherEmptyMessage.CalculateSize()); - Assert.AreNotEqual(emptyMessage, otherEmptyMessage); - } - - [Test] - public void TestHashCode() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var emptyMessage = new TestEmptyMessage(); - int hashCode = emptyMessage.GetHashCode(); - emptyMessage.MergeFrom(message.ToByteArray()); - Assert.AreNotEqual(hashCode, emptyMessage.GetHashCode()); - } - - [Test] - public void TestClone() - { - var emptyMessage = new TestEmptyMessage(); - var otherEmptyMessage = new TestEmptyMessage(); - otherEmptyMessage = emptyMessage.Clone(); - Assert.AreEqual(emptyMessage.CalculateSize(), otherEmptyMessage.CalculateSize()); - Assert.AreEqual(emptyMessage.ToByteArray(), otherEmptyMessage.ToByteArray()); - - var message = SampleMessages.CreateFullTestAllTypes(); - emptyMessage.MergeFrom(message.ToByteArray()); - otherEmptyMessage = emptyMessage.Clone(); - Assert.AreEqual(message.CalculateSize(), otherEmptyMessage.CalculateSize()); - Assert.AreEqual(message.ToByteArray(), otherEmptyMessage.ToByteArray()); - } - - [Test] - public void TestDiscardUnknownFields() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var goldenEmptyMessage = new TestEmptyMessage(); - byte[] data = message.ToByteArray(); - int fullSize = message.CalculateSize(); - - Action assertEmpty = msg => - { - Assert.AreEqual(0, msg.CalculateSize()); - Assert.AreEqual(goldenEmptyMessage, msg); - }; - - Action assertFull = msg => Assert.AreEqual(fullSize, msg.CalculateSize()); - - // Test the behavior of the parsers with and without discarding, both generic and non-generic. - MessageParser retainingParser1 = TestEmptyMessage.Parser; - MessageParser retainingParser2 = retainingParser1; - MessageParser discardingParser1 = retainingParser1.WithDiscardUnknownFields(true); - MessageParser discardingParser2 = retainingParser2.WithDiscardUnknownFields(true); - - // Test parse from byte[] - assertFull(retainingParser1.ParseFrom(data)); - assertFull(retainingParser2.ParseFrom(data)); - assertEmpty(discardingParser1.ParseFrom(data)); - assertEmpty(discardingParser2.ParseFrom(data)); - - // Test parse from byte[] with offset - assertFull(retainingParser1.ParseFrom(data, 0, data.Length)); - assertFull(retainingParser2.ParseFrom(data, 0, data.Length)); - assertEmpty(discardingParser1.ParseFrom(data, 0, data.Length)); - assertEmpty(discardingParser2.ParseFrom(data, 0, data.Length)); - - // Test parse from CodedInputStream - assertFull(retainingParser1.ParseFrom(new CodedInputStream(data))); - assertFull(retainingParser2.ParseFrom(new CodedInputStream(data))); - assertEmpty(discardingParser1.ParseFrom(new CodedInputStream(data))); - assertEmpty(discardingParser2.ParseFrom(new CodedInputStream(data))); - - // Test parse from Stream - assertFull(retainingParser1.ParseFrom(new MemoryStream(data))); - assertFull(retainingParser2.ParseFrom(new MemoryStream(data))); - assertEmpty(discardingParser1.ParseFrom(new MemoryStream(data))); - assertEmpty(discardingParser2.ParseFrom(new MemoryStream(data))); - } - - [Test] - public void TestReadInvalidWireTypeThrowsInvalidProtocolBufferException() - { - MemoryStream ms = new MemoryStream(); - CodedOutputStream output = new CodedOutputStream(ms); - - uint tag = WireFormat.MakeTag(1, (WireFormat.WireType)6); - output.WriteRawVarint32(tag); - output.WriteLength(-1); - output.Flush(); - ms.Position = 0; - - CodedInputStream input = new CodedInputStream(ms); - Assert.AreEqual(tag, input.ReadTag()); - - Assert.Throws(() => UnknownFieldSet.MergeFieldFrom(null, input)); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs deleted file mode 100644 index 4b9a569..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/AnyTest.cs +++ /dev/null @@ -1,157 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf.WellKnownTypes -{ - public class AnyTest - { - [Test] - public void Pack() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.AreEqual("type.googleapis.com/protobuf_unittest3.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Pack_WithCustomPrefix() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz"); - Assert.AreEqual("foo.bar/baz/protobuf_unittest3.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Pack_WithCustomPrefixTrailingSlash() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz/"); - Assert.AreEqual("foo.bar/baz/protobuf_unittest3.TestAllTypes", any.TypeUrl); - Assert.AreEqual(message.CalculateSize(), any.Value.Length); - } - - [Test] - public void Unpack_WrongType() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.Throws(() => any.Unpack()); - } - - [Test] - public void Unpack_Success() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - var unpacked = any.Unpack(); - Assert.AreEqual(message, unpacked); - } - - [Test] - public void Unpack_CustomPrefix_Success() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message, "foo.bar/baz"); - var unpacked = any.Unpack(); - Assert.AreEqual(message, unpacked); - } - - [Test] - public void TryUnpack_WrongType() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.False(any.TryUnpack(out TestOneof unpacked)); - Assert.Null(unpacked); - } - - [Test] - public void TryUnpack_RightType() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - Assert.IsTrue(any.TryUnpack(out TestAllTypes unpacked)); - Assert.AreEqual(message, unpacked); - } - - [Test] - public void ToString_WithValues() - { - var message = SampleMessages.CreateFullTestAllTypes(); - var any = Any.Pack(message); - var text = any.ToString(); - Assert.That(text, Does.Contain("\"@value\": \"" + message.ToByteString().ToBase64() + "\"")); - } - - [Test] - [TestCase("proto://foo.bar", "foo.bar")] - [TestCase("/foo/bar/baz", "baz")] - [TestCase("foobar", "")] - public void GetTypeName(string typeUrl, string expectedTypeName) - { - var any = new Any { TypeUrl = typeUrl }; - Assert.AreEqual(expectedTypeName, Any.GetTypeName(typeUrl)); - } - - [Test] - public void ToString_Empty() - { - var any = new Any(); - Assert.AreEqual("{ \"@type\": \"\", \"@value\": \"\" }", any.ToString()); - } - - [Test] - public void ToString_MessageContainingAny() - { - var message = new TestWellKnownTypes { AnyField = new Any() }; - Assert.AreEqual("{ \"anyField\": { \"@type\": \"\", \"@value\": \"\" } }", message.ToString()); - } - - [Test] - public void IsWrongType() - { - var any = Any.Pack(SampleMessages.CreateFullTestAllTypes()); - Assert.False(any.Is(TestOneof.Descriptor)); - } - - public void IsRightType() - { - var any = Any.Pack(SampleMessages.CreateFullTestAllTypes()); - Assert.True(any.Is(TestAllTypes.Descriptor)); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs deleted file mode 100644 index 141faf8..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/DurationTest.cs +++ /dev/null @@ -1,132 +0,0 @@ -#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 NUnit.Framework; -using System; - -namespace Google.Protobuf.WellKnownTypes -{ - public class DurationTest - { - [Test] - public void ToTimeSpan() - { - Assert.AreEqual(TimeSpan.FromSeconds(1), new Duration { Seconds = 1 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromSeconds(-1), new Duration { Seconds = -1 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromMilliseconds(1), new Duration { Nanos = 1000000 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromMilliseconds(-1), new Duration { Nanos = -1000000 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(1), new Duration { Nanos = 100 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(-1), new Duration { Nanos = -100 }.ToTimeSpan()); - - // Rounding is towards 0 - Assert.AreEqual(TimeSpan.FromTicks(2), new Duration { Nanos = 250 }.ToTimeSpan()); - Assert.AreEqual(TimeSpan.FromTicks(-2), new Duration { Nanos = -250 }.ToTimeSpan()); - } - - [Test] - public void Addition() - { - Assert.AreEqual(new Duration { Seconds = 2, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } + new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = -2, Nanos = -100000000 }, - new Duration { Seconds = -1, Nanos = -600000000 } + new Duration { Nanos = -500000000 }); - Assert.AreEqual(new Duration { Seconds = 1, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } + new Duration { Nanos = -500000000 }); - - // Non-normalized durations, or non-normalized intermediate results - Assert.AreEqual(new Duration { Seconds = 1 }, - new Duration { Seconds = 1, Nanos = -500000000 } + new Duration { Nanos = 500000000 }); - - Assert.AreEqual(new Duration { Nanos = -900000000 }, - new Duration { Seconds = -1, Nanos = -100000000 } + new Duration { Nanos = 200000000 }); - Assert.AreEqual(new Duration { Nanos = 900000000 }, - new Duration { Seconds = 1, Nanos = 100000000 } + new Duration { Nanos = -200000000 }); - } - - [Test] - public void Subtraction() - { - Assert.AreEqual(new Duration { Seconds = 1, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } - new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = -1, Nanos = -100000000 }, - new Duration { Seconds = -1, Nanos = -600000000 } - new Duration { Nanos = -500000000 }); - Assert.AreEqual(new Duration { Seconds = 2, Nanos = 100000000 }, - new Duration { Seconds = 1, Nanos = 600000000 } - new Duration { Nanos = -500000000 }); - - // Non-normalized durations - Assert.AreEqual(new Duration(), - new Duration { Seconds = 1, Nanos = -500000000 } - new Duration { Nanos = 500000000 }); - Assert.AreEqual(new Duration { Seconds = 1 }, - new Duration { Nanos = 2000000000 } - new Duration { Nanos = 1000000000 }); - } - - [Test] - public void FromTimeSpan() - { - Assert.AreEqual(new Duration { Seconds = 1 }, Duration.FromTimeSpan(TimeSpan.FromSeconds(1))); - Assert.AreEqual(new Duration { Nanos = Duration.NanosecondsPerTick }, Duration.FromTimeSpan(TimeSpan.FromTicks(1))); - } - - [Test] - [TestCase(0, Duration.MaxNanoseconds + 1)] - [TestCase(0, Duration.MinNanoseconds - 1)] - [TestCase(Duration.MinSeconds - 1, 0)] - [TestCase(Duration.MaxSeconds + 1, 0)] - [TestCase(1, -1)] - [TestCase(-1, 1)] - public void ToTimeSpan_Invalid(long seconds, int nanoseconds) - { - var duration = new Duration { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => duration.ToTimeSpan()); - } - - [Test] - [TestCase(0, Duration.MaxNanoseconds)] - [TestCase(0, Duration.MinNanoseconds)] - [TestCase(Duration.MinSeconds, Duration.MinNanoseconds)] - [TestCase(Duration.MaxSeconds, Duration.MaxNanoseconds)] - public void ToTimeSpan_Valid(long seconds, int nanoseconds) - { - // Only testing that these values don't throw, unlike their similar tests in ToTimeSpan_Invalid - var duration = new Duration { Seconds = seconds, Nanos = nanoseconds }; - duration.ToTimeSpan(); - } - - [Test] - public void ToString_NonNormalized() - { - // Just a single example should be sufficient... - var duration = new Duration { Seconds = 1, Nanos = -1 }; - Assert.AreEqual("{ \"@warning\": \"Invalid Duration\", \"seconds\": \"1\", \"nanos\": -1 }", duration.ToString()); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs deleted file mode 100644 index 5dc5035..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/FieldMaskTest.cs +++ /dev/null @@ -1,245 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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.TestProtos; -using NUnit.Framework; - -namespace Google.Protobuf.WellKnownTypes -{ - public class FieldMaskTest - { - [Test] - [TestCase("foo__bar")] - [TestCase("foo_3_ar")] - [TestCase("fooBar")] - public void ToString_Invalid(string input) - { - var mask = new FieldMask { Paths = { input } }; - var text = mask.ToString(); - // More specific test below - Assert.That(text, Does.Contain("@warning")); - Assert.That(text, Does.Contain(input)); - } - - [Test] - public void ToString_Invalid_Precise() - { - var mask = new FieldMask { Paths = { "x", "foo__bar", @"x\y" } }; - Assert.AreEqual( - "{ \"@warning\": \"Invalid FieldMask\", \"paths\": [ \"x\", \"foo__bar\", \"x\\\\y\" ] }", - mask.ToString()); - } - - [Test] - public void IsValid() - { - Assert.IsTrue(FieldMask.IsValid("payload")); - Assert.IsFalse(FieldMask.IsValid("nonexist")); - Assert.IsTrue(FieldMask.IsValid("payload.single_int32")); - Assert.IsTrue(FieldMask.IsValid("payload.repeated_int32")); - Assert.IsTrue(FieldMask.IsValid("payload.single_nested_message")); - Assert.IsTrue(FieldMask.IsValid("payload.repeated_nested_message")); - Assert.IsFalse(FieldMask.IsValid("payload.nonexist")); - - Assert.IsTrue(FieldMask.IsValid(FieldMask.FromString("payload"))); - Assert.IsFalse(FieldMask.IsValid(FieldMask.FromString("nonexist"))); - Assert.IsFalse(FieldMask.IsValid(FieldMask.FromString("payload,nonexist"))); - - Assert.IsTrue(FieldMask.IsValid(NestedTestAllTypes.Descriptor, "payload")); - Assert.IsFalse(FieldMask.IsValid(NestedTestAllTypes.Descriptor, "nonexist")); - - Assert.IsTrue(FieldMask.IsValid(NestedTestAllTypes.Descriptor, FieldMask.FromString("payload"))); - Assert.IsFalse(FieldMask.IsValid(NestedTestAllTypes.Descriptor, FieldMask.FromString("nonexist"))); - - Assert.IsTrue(FieldMask.IsValid("payload.single_nested_message.bb")); - - // Repeated fields cannot have sub-paths. - Assert.IsFalse(FieldMask.IsValid("payload.repeated_nested_message.bb")); - - // Non-message fields cannot have sub-paths. - Assert.IsFalse(FieldMask.IsValid("payload.single_int32.bb")); - } - - [Test] - [TestCase(new string[] { }, "\"\"")] - [TestCase(new string[] { "foo" }, "\"foo\"")] - [TestCase(new string[] { "foo", "bar" }, "\"foo,bar\"")] - [TestCase(new string[] { "", "foo", "", "bar", "" }, "\",foo,,bar,\"")] - public void ToString(string[] input, string expectedOutput) - { - FieldMask mask = new FieldMask(); - mask.Paths.AddRange(input); - Assert.AreEqual(expectedOutput, mask.ToString()); - } - - [Test] - [TestCase("", new string[] { })] - [TestCase("foo", new string[] { "foo" })] - [TestCase("foo,bar.baz", new string[] { "foo", "bar.baz" })] - [TestCase(",foo,,bar,", new string[] { "foo", "bar" })] - public void FromString(string input, string[] expectedOutput) - { - FieldMask mask = FieldMask.FromString(input); - Assert.AreEqual(expectedOutput.Length, mask.Paths.Count); - for (int i = 0; i < expectedOutput.Length; i++) - { - Assert.AreEqual(expectedOutput[i], mask.Paths[i]); - } - } - - [Test] - public void FromString_Validated() - { - // Check whether the field paths are valid if a class parameter is provided. - Assert.DoesNotThrow(() => FieldMask.FromString(",payload")); - Assert.Throws(() => FieldMask.FromString("payload,nonexist")); - } - - [Test] - [TestCase(new int[] { }, new string[] { })] - [TestCase(new int[] { TestAllTypes.SingleInt32FieldNumber }, new string[] { "single_int32" })] - [TestCase(new int[] { TestAllTypes.SingleInt32FieldNumber, TestAllTypes.SingleInt64FieldNumber }, new string[] { "single_int32", "single_int64" })] - public void FromFieldNumbers(int[] input, string[] expectedOutput) - { - FieldMask mask = FieldMask.FromFieldNumbers(input); - Assert.AreEqual(expectedOutput.Length, mask.Paths.Count); - for (int i = 0; i < expectedOutput.Length; i++) - { - Assert.AreEqual(expectedOutput[i], mask.Paths[i]); - } - } - - [Test] - public void FromFieldNumbers_Invalid() - { - Assert.Throws(() => - { - int invalidFieldNumber = 1000; - FieldMask.FromFieldNumbers(invalidFieldNumber); - }); - } - - [Test] - [TestCase(new string[] { }, "\"\"")] - [TestCase(new string[] { "foo" }, "\"foo\"")] - [TestCase(new string[] { "foo", "bar" }, "\"foo,bar\"")] - [TestCase(new string[] { "", "foo", "", "bar", "" }, "\",foo,bar\"")] - public void Normalize(string[] input, string expectedOutput) - { - FieldMask mask = new FieldMask(); - mask.Paths.AddRange(input); - FieldMask result = mask.Normalize(); - Assert.AreEqual(expectedOutput, result.ToString()); - } - - [Test] - public void Union() - { - // Only test a simple case here and expect - // {@link FieldMaskTreeTest#AddFieldPath} to cover all scenarios. - FieldMask mask1 = FieldMask.FromString("foo,bar.baz,bar.quz"); - FieldMask mask2 = FieldMask.FromString("foo.bar,bar"); - FieldMask result = mask1.Union(mask2); - Assert.AreEqual(2, result.Paths.Count); - Assert.Contains("bar", result.Paths); - Assert.Contains("foo", result.Paths); - Assert.That(result.Paths, Has.No.Member("bar.baz")); - Assert.That(result.Paths, Has.No.Member("bar.quz")); - Assert.That(result.Paths, Has.No.Member("foo.bar")); - } - - [Test] - public void Union_UsingVarArgs() - { - FieldMask mask1 = FieldMask.FromString("foo"); - FieldMask mask2 = FieldMask.FromString("foo.bar,bar.quz"); - FieldMask mask3 = FieldMask.FromString("bar.quz"); - FieldMask mask4 = FieldMask.FromString("bar"); - FieldMask result = mask1.Union(mask2, mask3, mask4); - Assert.AreEqual(2, result.Paths.Count); - Assert.Contains("bar", result.Paths); - Assert.Contains("foo", result.Paths); - Assert.That(result.Paths, Has.No.Member("foo.bar")); - Assert.That(result.Paths, Has.No.Member("bar.quz")); - } - - [Test] - public void Intersection() - { - // Only test a simple case here and expect - // {@link FieldMaskTreeTest#IntersectFieldPath} to cover all scenarios. - FieldMask mask1 = FieldMask.FromString("foo,bar.baz,bar.quz"); - FieldMask mask2 = FieldMask.FromString("foo.bar,bar"); - FieldMask result = mask1.Intersection(mask2); - Assert.AreEqual(3, result.Paths.Count); - Assert.Contains("foo.bar", result.Paths); - Assert.Contains("bar.baz", result.Paths); - Assert.Contains("bar.quz", result.Paths); - Assert.That(result.Paths, Has.No.Member("foo")); - Assert.That(result.Paths, Has.No.Member("bar")); - } - - [Test] - public void Merge() - { - // Only test a simple case here and expect - // {@link FieldMaskTreeTest#Merge} to cover all scenarios. - FieldMask fieldMask = FieldMask.FromString("payload"); - NestedTestAllTypes source = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 1234, - SingleFixed64 = 4321 - } - }; - NestedTestAllTypes destination = new NestedTestAllTypes(); - fieldMask.Merge(source, destination); - Assert.AreEqual(1234, destination.Payload.SingleInt32); - Assert.AreEqual(4321, destination.Payload.SingleFixed64); - - destination = new NestedTestAllTypes - { - Payload = new TestAllTypes - { - SingleInt32 = 4321, - SingleInt64 = 5678 - } - }; - fieldMask.Merge(source, destination); - Assert.AreEqual(1234, destination.Payload.SingleInt32); - Assert.AreEqual(5678, destination.Payload.SingleInt64); - Assert.AreEqual(4321, destination.Payload.SingleFixed64); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs deleted file mode 100644 index ffc6041..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/TimestampTest.cs +++ /dev/null @@ -1,216 +0,0 @@ -#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 NUnit.Framework; -using System; - -namespace Google.Protobuf.WellKnownTypes -{ - public class TimestampTest - { - [Test] - public void FromAndToDateTime() - { - DateTime utcMin = DateTime.SpecifyKind(DateTime.MinValue, DateTimeKind.Utc); - DateTime utcMax = DateTime.SpecifyKind(DateTime.MaxValue, DateTimeKind.Utc); - AssertRoundtrip(new Timestamp { Seconds = -62135596800 }, utcMin); - AssertRoundtrip(new Timestamp { Seconds = 253402300799, Nanos = 999999900 }, utcMax); - AssertRoundtrip(new Timestamp(), new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Nanos = 1000000}, new DateTime(1970, 1, 1, 0, 0, 0, 1, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = -1, Nanos = 999000000 }, new DateTime(1969, 12, 31, 23, 59, 59, 999, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = 3600 }, new DateTime(1970, 1, 1, 1, 0, 0, DateTimeKind.Utc)); - AssertRoundtrip(new Timestamp { Seconds = -3600 }, new DateTime(1969, 12, 31, 23, 0, 0, DateTimeKind.Utc)); - } - - [Test] - public void ToDateTimeTruncation() - { - var t1 = new Timestamp { Seconds = 1, Nanos = 1000000 + Duration.NanosecondsPerTick - 1 }; - Assert.AreEqual(new DateTime(1970, 1, 1, 0, 0, 1, DateTimeKind.Utc).AddMilliseconds(1), t1.ToDateTime()); - - var t2 = new Timestamp { Seconds = -1, Nanos = 1000000 + Duration.NanosecondsPerTick - 1 }; - Assert.AreEqual(new DateTime(1969, 12, 31, 23, 59, 59).AddMilliseconds(1), t2.ToDateTime()); - } - - [Test] - [TestCase(Timestamp.UnixSecondsAtBclMinValue - 1, Timestamp.MaxNanos)] - [TestCase(Timestamp.UnixSecondsAtBclMaxValue + 1, 0)] - [TestCase(0, -1)] - [TestCase(0, Timestamp.MaxNanos + 1)] - public void ToDateTime_OutOfRange(long seconds, int nanoseconds) - { - var value = new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - Assert.Throws(() => value.ToDateTime()); - } - - // 1ns larger or smaller than the above values - [Test] - [TestCase(Timestamp.UnixSecondsAtBclMinValue, 0)] - [TestCase(Timestamp.UnixSecondsAtBclMaxValue, Timestamp.MaxNanos)] - [TestCase(0, 0)] - [TestCase(0, Timestamp.MaxNanos)] - public void ToDateTime_ValidBoundaries(long seconds, int nanoseconds) - { - var value = new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - value.ToDateTime(); - } - - private static void AssertRoundtrip(Timestamp timestamp, DateTime dateTime) - { - Assert.AreEqual(timestamp, Timestamp.FromDateTime(dateTime)); - Assert.AreEqual(dateTime, timestamp.ToDateTime()); - Assert.AreEqual(DateTimeKind.Utc, timestamp.ToDateTime().Kind); - } - - [Test] - public void Arithmetic() - { - Timestamp t1 = new Timestamp { Seconds = 10000, Nanos = 5000 }; - Timestamp t2 = new Timestamp { Seconds = 8000, Nanos = 10000 }; - Duration difference = new Duration { Seconds = 1999, Nanos = Duration.NanosecondsPerSecond - 5000 }; - Assert.AreEqual(difference, t1 - t2); - Assert.AreEqual(-difference, t2 - t1); - - Assert.AreEqual(t1, t2 + difference); - Assert.AreEqual(t2, t1 - difference); - } - - [Test] - public void ToString_NonNormalized() - { - // Just a single example should be sufficient... - var duration = new Timestamp { Seconds = 1, Nanos = -1 }; - Assert.AreEqual("{ \"@warning\": \"Invalid Timestamp\", \"seconds\": \"1\", \"nanos\": -1 }", duration.ToString()); - } - - [Test] - public void Comparability() - { - Timestamp - a = null, - b = new Timestamp { Seconds = 1, Nanos = 1 }, - c = new Timestamp { Seconds = 1, Nanos = 10 }, - d = new Timestamp { Seconds = 10, Nanos = 1 }, - e = new Timestamp { Seconds = 10, Nanos = 10 }; - - Assert.IsTrue(b.CompareTo(a) > 0); // null is always first (according to default behavior of Array.Sort) - Assert.IsTrue(b.CompareTo(b) == 0); - Assert.IsTrue(b.CompareTo(b.Clone()) == 0); - Assert.IsTrue(b.CompareTo(c) < 0); - Assert.IsTrue(b.CompareTo(d) < 0); - Assert.IsTrue(b.CompareTo(e) < 0); - - Assert.IsTrue(c.CompareTo(a) > 0); - Assert.IsTrue(c.CompareTo(b) > 0); - Assert.IsTrue(c.CompareTo(c) == 0); - Assert.IsTrue(c.CompareTo(c.Clone()) == 0); - Assert.IsTrue(c.CompareTo(d) < 0); - Assert.IsTrue(c.CompareTo(e) < 0); - - Assert.IsTrue(d.CompareTo(a) > 0); - Assert.IsTrue(d.CompareTo(b) > 0); - Assert.IsTrue(d.CompareTo(c) > 0); - Assert.IsTrue(d.CompareTo(d) == 0); - Assert.IsTrue(d.CompareTo(d.Clone()) == 0); - Assert.IsTrue(d.CompareTo(e) < 0); - - Assert.IsTrue(e.CompareTo(a) > 0); - Assert.IsTrue(e.CompareTo(b) > 0); - Assert.IsTrue(e.CompareTo(c) > 0); - Assert.IsTrue(e.CompareTo(d) > 0); - Assert.IsTrue(e.CompareTo(e) == 0); - Assert.IsTrue(e.CompareTo(e.Clone()) == 0); - } - - - [Test] - public void ComparabilityOperators() - { - Timestamp - a = null, - b = new Timestamp { Seconds = 1, Nanos = 1 }, - c = new Timestamp { Seconds = 1, Nanos = 10 }, - d = new Timestamp { Seconds = 10, Nanos = 1 }, - e = new Timestamp { Seconds = 10, Nanos = 10 }; - -#pragma warning disable CS1718 // Comparison made to same variable - Assert.IsTrue(b > a); - Assert.IsTrue(b == b); - Assert.IsTrue(b == b.Clone()); - Assert.IsTrue(b < c); - Assert.IsTrue(b < d); - Assert.IsTrue(b < e); - - Assert.IsTrue(c > a); - Assert.IsTrue(c > b); - Assert.IsTrue(c == c); - Assert.IsTrue(c == c.Clone()); - Assert.IsTrue(c < d); - Assert.IsTrue(c < e); - - Assert.IsTrue(d > a); - Assert.IsTrue(d > b); - Assert.IsTrue(d > c); - Assert.IsTrue(d == d); - Assert.IsTrue(d == d.Clone()); - Assert.IsTrue(d < e); - - Assert.IsTrue(e > a); - Assert.IsTrue(e > b); - Assert.IsTrue(e > c); - Assert.IsTrue(e > d); - Assert.IsTrue(e == e); - Assert.IsTrue(e == e.Clone()); - - Assert.IsTrue(b >= a); - Assert.IsTrue(b <= c); - Assert.IsTrue(b <= d); - Assert.IsTrue(b <= e); - - Assert.IsTrue(c >= a); - Assert.IsTrue(c >= b); - Assert.IsTrue(c <= d); - Assert.IsTrue(c <= e); - - Assert.IsTrue(d >= a); - Assert.IsTrue(d >= b); - Assert.IsTrue(d >= c); - Assert.IsTrue(d <= e); - - Assert.IsTrue(e >= a); - Assert.IsTrue(e >= b); - Assert.IsTrue(e >= c); - Assert.IsTrue(e >= d); -#pragma warning restore CS1718 // Comparison made to same variable - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs b/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs deleted file mode 100644 index 8a9c3d0..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.Test/WellKnownTypes/WrappersTest.cs +++ /dev/null @@ -1,432 +0,0 @@ -#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 Google.Protobuf.TestProtos; -using NUnit.Framework; -using System.Collections; -using System.IO; - -namespace Google.Protobuf.WellKnownTypes -{ - public class WrappersTest - { - [Test] - public void NullIsDefault() - { - var message = new TestWellKnownTypes(); - Assert.IsNull(message.StringField); - Assert.IsNull(message.BytesField); - Assert.IsNull(message.BoolField); - Assert.IsNull(message.FloatField); - Assert.IsNull(message.DoubleField); - Assert.IsNull(message.Int32Field); - Assert.IsNull(message.Int64Field); - Assert.IsNull(message.Uint32Field); - Assert.IsNull(message.Uint64Field); - } - - [Test] - public void NonDefaultSingleValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - - var bytes = message.ToByteArray(); - var parsed = TestWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual("x", parsed.StringField); - Assert.AreEqual(ByteString.CopyFrom(1, 2, 3), parsed.BytesField); - Assert.AreEqual(true, parsed.BoolField); - Assert.AreEqual(12.5f, parsed.FloatField); - Assert.AreEqual(12.25d, parsed.DoubleField); - Assert.AreEqual(1, parsed.Int32Field); - Assert.AreEqual(2L, parsed.Int64Field); - Assert.AreEqual(3U, parsed.Uint32Field); - Assert.AreEqual(4UL, parsed.Uint64Field); - } - - [Test] - public void NonNullDefaultIsPreservedThroughSerialization() - { - var message = new TestWellKnownTypes - { - StringField = "", - BytesField = ByteString.Empty, - BoolField = false, - FloatField = 0f, - DoubleField = 0d, - Int32Field = 0, - Int64Field = 0, - Uint32Field = 0, - Uint64Field = 0 - }; - - var bytes = message.ToByteArray(); - var parsed = TestWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual("", parsed.StringField); - Assert.AreEqual(ByteString.Empty, parsed.BytesField); - Assert.AreEqual(false, parsed.BoolField); - Assert.AreEqual(0f, parsed.FloatField); - Assert.AreEqual(0d, parsed.DoubleField); - Assert.AreEqual(0, parsed.Int32Field); - Assert.AreEqual(0L, parsed.Int64Field); - Assert.AreEqual(0U, parsed.Uint32Field); - Assert.AreEqual(0UL, parsed.Uint64Field); - } - - [Test] - public void RepeatedWrappersProhibitNullItems() - { - var message = new RepeatedWellKnownTypes(); - Assert.Throws(() => message.BoolField.Add((bool?) null)); - Assert.Throws(() => message.Int32Field.Add((int?) null)); - Assert.Throws(() => message.StringField.Add((string) null)); - Assert.Throws(() => message.BytesField.Add((ByteString) null)); - } - - [Test] - public void RepeatedWrappersSerializeDeserialize() - { - var message = new RepeatedWellKnownTypes - { - BoolField = { true, false }, - BytesField = { ByteString.CopyFrom(1, 2, 3), ByteString.CopyFrom(4, 5, 6), ByteString.Empty }, - DoubleField = { 12.5, -1.5, 0d }, - FloatField = { 123.25f, -20f, 0f }, - Int32Field = { int.MaxValue, int.MinValue, 0 }, - Int64Field = { long.MaxValue, long.MinValue, 0L }, - StringField = { "First", "Second", "" }, - Uint32Field = { uint.MaxValue, uint.MinValue, 0U }, - Uint64Field = { ulong.MaxValue, ulong.MinValue, 0UL }, - }; - var bytes = message.ToByteArray(); - var parsed = RepeatedWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual(message, parsed); - // Just to test a single value for sanity... - Assert.AreEqual("Second", message.StringField[1]); - } - - [Test] - public void RepeatedWrappersBinaryFormat() - { - // At one point we accidentally used a packed format for repeated wrappers, which is wrong (and weird). - // This test is just to prove that we use the right format. - - var rawOutput = new MemoryStream(); - var output = new CodedOutputStream(rawOutput); - // Write a value of 5 - output.WriteTag(RepeatedWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(2); - output.WriteTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint); - output.WriteInt32(5); - // Write a value of 0 (empty message) - output.WriteTag(RepeatedWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteLength(0); - output.Flush(); - var expectedBytes = rawOutput.ToArray(); - - var message = new RepeatedWellKnownTypes { Int32Field = { 5, 0 } }; - var actualBytes = message.ToByteArray(); - Assert.AreEqual(expectedBytes, actualBytes); - } - - [Test] - public void MapWrappersSerializeDeserialize() - { - // Note: no null values here, as they are prohibited in map fields - // (despite being representable). - var message = new MapWellKnownTypes - { - BoolField = { { 10, false }, { 20, true } }, - BytesField = { - { -1, ByteString.CopyFrom(1, 2, 3) }, - { 10, ByteString.CopyFrom(4, 5, 6) }, - { 1000, ByteString.Empty }, - }, - DoubleField = { { 1, 12.5 }, { 10, -1.5 }, { 20, 0d } }, - FloatField = { { 2, 123.25f }, { 3, -20f }, { 4, 0f } }, - Int32Field = { { 5, int.MaxValue }, { 6, int.MinValue }, { 7, 0 } }, - Int64Field = { { 8, long.MaxValue }, { 9, long.MinValue }, { 10, 0L } }, - StringField = { { 11, "First" }, { 12, "Second" }, { 13, "" } }, - Uint32Field = { { 15, uint.MaxValue }, { 16, uint.MinValue }, { 17, 0U } }, - Uint64Field = { { 18, ulong.MaxValue }, { 19, ulong.MinValue }, { 20, 0UL } }, - }; - - var bytes = message.ToByteArray(); - var parsed = MapWellKnownTypes.Parser.ParseFrom(bytes); - - Assert.AreEqual(message, parsed); - // Just to test a single value for sanity... - Assert.AreEqual("Second", message.StringField[12]); - } - - [Test] - public void Reflection_SingleValues() - { - var message = new TestWellKnownTypes - { - StringField = "x", - BytesField = ByteString.CopyFrom(1, 2, 3), - BoolField = true, - FloatField = 12.5f, - DoubleField = 12.25d, - Int32Field = 1, - Int64Field = 2, - Uint32Field = 3, - Uint64Field = 4 - }; - var fields = TestWellKnownTypes.Descriptor.Fields; - - Assert.AreEqual("x", fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(ByteString.CopyFrom(1, 2, 3), fields[TestWellKnownTypes.BytesFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(true, fields[TestWellKnownTypes.BoolFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(12.5f, fields[TestWellKnownTypes.FloatFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(12.25d, fields[TestWellKnownTypes.DoubleFieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(1, fields[TestWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(2L, fields[TestWellKnownTypes.Int64FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(3U, fields[TestWellKnownTypes.Uint32FieldFieldNumber].Accessor.GetValue(message)); - Assert.AreEqual(4UL, fields[TestWellKnownTypes.Uint64FieldFieldNumber].Accessor.GetValue(message)); - - // And a couple of null fields... - message.StringField = null; - message.FloatField = null; - Assert.IsNull(fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.GetValue(message)); - Assert.IsNull(fields[TestWellKnownTypes.FloatFieldFieldNumber].Accessor.GetValue(message)); - } - - [Test] - public void Reflection_RepeatedFields() - { - // Just a single example... note that we can't have a null value here - var message = new RepeatedWellKnownTypes { Int32Field = { 1, 2 } }; - var fields = RepeatedWellKnownTypes.Descriptor.Fields; - var list = (IList) fields[RepeatedWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message); - CollectionAssert.AreEqual(new[] { 1, 2 }, list); - } - - [Test] - public void Reflection_MapFields() - { - // Just a single example... note that we can't have a null value here despite the value type being int? - var message = new MapWellKnownTypes { Int32Field = { { 1, 2 } } }; - var fields = MapWellKnownTypes.Descriptor.Fields; - var dictionary = (IDictionary) fields[MapWellKnownTypes.Int32FieldFieldNumber].Accessor.GetValue(message); - Assert.AreEqual(2, dictionary[1]); - } - - [Test] - public void Oneof() - { - var message = new OneofWellKnownTypes { EmptyField = new Empty() }; - // Start off with a non-wrapper - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.EmptyField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.StringField = "foo"; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.StringField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.StringField = "foo"; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.StringField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.DoubleField = 0.0f; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.DoubleField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.DoubleField = 1.0f; - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.DoubleField, message.OneofFieldCase); - AssertOneofRoundTrip(message); - - message.ClearOneofField(); - Assert.AreEqual(OneofWellKnownTypes.OneofFieldOneofCase.None, message.OneofFieldCase); - AssertOneofRoundTrip(message); - } - - private void AssertOneofRoundTrip(OneofWellKnownTypes message) - { - // Normal roundtrip, but explicitly checking the case... - var bytes = message.ToByteArray(); - var parsed = OneofWellKnownTypes.Parser.ParseFrom(bytes); - Assert.AreEqual(message, parsed); - Assert.AreEqual(message.OneofFieldCase, parsed.OneofFieldCase); - } - - [Test] - [TestCase("x", "y", "y")] - [TestCase("x", "", "x")] - [TestCase("x", null, "x")] - [TestCase("", "y", "y")] - [TestCase("", "", "")] - [TestCase("", null, "")] - [TestCase(null, "y", "y")] - [TestCase(null, "", "")] - [TestCase(null, null, null)] - public void Merging(string original, string merged, string expected) - { - var originalMessage = new TestWellKnownTypes { StringField = original }; - var mergingMessage = new TestWellKnownTypes { StringField = merged }; - originalMessage.MergeFrom(mergingMessage); - Assert.AreEqual(expected, originalMessage.StringField); - - // Try it using MergeFrom(CodedInputStream) too... - originalMessage = new TestWellKnownTypes { StringField = original }; - originalMessage.MergeFrom(mergingMessage.ToByteArray()); - Assert.AreEqual(expected, originalMessage.StringField); - } - - // Merging is odd with wrapper types, due to the way that default values aren't emitted in - // the binary stream. In fact we cheat a little bit - a message with an explicitly present default - // value will have that default value ignored. See issue 615. Fixing this would require significant upheaval to - // the FieldCodec side of things. - [Test] - public void MergingStreamExplicitValue() - { - var message = new TestWellKnownTypes { Int32Field = 5 }; - - // Create a byte array which has the data of an Int32Value explicitly containing a value of 0. - // This wouldn't normally happen. - byte[] bytes; - var wrapperTag = WireFormat.MakeTag(TestWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - var valueTag = WireFormat.MakeTag(Int32Value.ValueFieldNumber, WireFormat.WireType.Varint); - using (var stream = new MemoryStream()) - { - var coded = new CodedOutputStream(stream); - coded.WriteTag(wrapperTag); - coded.WriteLength(2); // valueTag + a value 0, each one byte - coded.WriteTag(valueTag); - coded.WriteInt32(0); - coded.Flush(); - bytes = stream.ToArray(); - } - - message.MergeFrom(bytes); - // A normal implementation would have 0 now, as the explicit default would have been overwritten the 5. - // With the FieldCodec for Nullable, we can't tell the difference between an implicit 0 and an explicit 0. - Assert.AreEqual(5, message.Int32Field); - } - - [Test] - public void MergingStreamNoValue() - { - var message = new TestWellKnownTypes { Int32Field = 5 }; - - // Create a byte array which an Int32 field, but with no value. - var bytes = new TestWellKnownTypes { Int32Field = 0 }.ToByteArray(); - Assert.AreEqual(2, bytes.Length); // The tag for Int32Field is a single byte, then a byte indicating a 0-length message. - message.MergeFrom(bytes); - - // The "implicit" 0 did *not* overwrite the value. - // (This is the correct behaviour.) - Assert.AreEqual(5, message.Int32Field); - } - - // All permutations of origin/merging value being null, zero (default) or non-default. - // As this is the in-memory version, we don't need to worry about the difference between implicit and explicit 0. - [Test] - [TestCase(null, null, null)] - [TestCase(null, 0, 0)] - [TestCase(null, 5, 5)] - [TestCase(0, null, 0)] - [TestCase(0, 0, 0)] - [TestCase(0, 5, 5)] - [TestCase(5, null, 5)] - [TestCase(5, 0, 5)] - [TestCase(5, 10, 10)] - public void MergingMessageWithZero(int? originValue, int? mergingValue, int? expectedResult) - { - // This differs from the MergingStreamCornerCase because when we merge message *objects*, - // we ignore default values from the "source". - var message1 = new TestWellKnownTypes { Int32Field = originValue }; - var message2 = new TestWellKnownTypes { Int32Field = mergingValue }; - message1.MergeFrom(message2); - Assert.AreEqual(expectedResult, message1.Int32Field); - } - - [Test] - public void UnknownFieldInWrapper() - { - var stream = new MemoryStream(); - var output = new CodedOutputStream(stream); - var wrapperTag = WireFormat.MakeTag(TestWellKnownTypes.Int32FieldFieldNumber, WireFormat.WireType.LengthDelimited); - var unknownTag = WireFormat.MakeTag(15, WireFormat.WireType.Varint); - var valueTag = WireFormat.MakeTag(Int32Value.ValueFieldNumber, WireFormat.WireType.Varint); - - output.WriteTag(wrapperTag); - output.WriteLength(4); // unknownTag + value 5 + valueType + value 6, each 1 byte - output.WriteTag(unknownTag); - output.WriteInt32((int) valueTag); // Sneakily "pretend" it's a tag when it's really a value - output.WriteTag(valueTag); - output.WriteInt32(6); - - output.Flush(); - stream.Position = 0; - - var message = TestWellKnownTypes.Parser.ParseFrom(stream); - Assert.AreEqual(6, message.Int32Field); - } - - [Test] - public void ClearWithReflection() - { - // String and Bytes are the tricky ones here, as the CLR type of the property - // is the same between the wrapper and non-wrapper types. - var message = new TestWellKnownTypes { StringField = "foo" }; - TestWellKnownTypes.Descriptor.Fields[TestWellKnownTypes.StringFieldFieldNumber].Accessor.Clear(message); - Assert.IsNull(message.StringField); - } - - [Test] - public void NaNComparisons() - { - var message1 = new TestWellKnownTypes { DoubleField = SampleNaNs.Regular }; - var message2 = new TestWellKnownTypes { DoubleField = SampleNaNs.PayloadFlipped }; - var message3 = new TestWellKnownTypes { DoubleField = SampleNaNs.Regular }; - - EqualityTester.AssertInequality(message1, message2); - EqualityTester.AssertEquality(message1, message3); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf.Test/testprotos.pb b/lib/protobuf/csharp/src/Google.Protobuf.Test/testprotos.pb deleted file mode 100644 index 71256aea778e8a7f1d74a709e2c84ab3acef5727..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 205207 zcmeFa33Qytb?4jP*NyGNLg3>Df+G2;xsxDBf)qtj5@jq+5)?Ky08!KiHGl@#B!Gs{ zfGEgzyu^0o*iN3Eu^lI|b7Cj4$95)`*Vs;!%*6ZdN#-5D%&`;OaXjywtZ&A7nQ;=o z->vOy08NQbCYg8UNau*?Tg(4e-KwvaTeofnuip^tUY;*3E#*r~~4C zVktTjX_)<`Xezgqiwg5g`NhdAx%ruVG+kVr%Pj>_PjO*ou`qLGDe63S?6k=c_03Oq zL{Zo5Y^35!(PF-oUwk4z)e%HjmX;PuXO147%0H2xEiS;QV@8*DvN(5CRh>c{q0~}{ zqd^d5^HYV=(qds^d8tsGk8<-<(Q+wIaiUUjd2uqYLM96Hxy2P#u2Oq+y|8p8DlV$O z#bwGlSDY$L7bbIp&>rO$^AViqq%Ec*cs@~>;>XgJ+!Fst?Ph0-*9-GA(PVLcsvwz4 zk_nvr(iw^*{~cOWuu@cKZLCsARpU8t~Bo;*T#ihbzzMaTI zDVn8@f>6$pnyxMmf|#7m73T7bNV0MvU{)pzTL|hnwT!4-IfA$#|EzKZ(hh<;Rh(R& z%g-+<5lfRCMgB!%79)B}ezB07Eybc%4Mb!RmA9>{)L@AG|iDJVTCDlOzEr3aC#ARTK_`p&%WMWqrQq=RlTdZBM58W}n_dZ{a$iTFL7 z9lF1-H`5z+UnVjW^$ZPP&i0+ZFdAJL>hH~DN20F5UP1>)vwhuTqeIz|AWC!++4EOhe27I<_aI`No(jN5<_VkbS_6?qIk3fh9hem^_zi*&# zlysv*?TYRCe9_RkXdsjAxd2R8cVBFt0&JfqD0nZeO$Uu>2D;8? zMxq1HClwl|XDpi;kWwRxk+JTP(Z12K(M)uHXsA~SdnA*+zpp1Va%a>(B;r38jg4d| zNN?9@mtqYD;v$|3bdQbnDZ%v(j%KpivEk9ap}~W+@+Blg)w{^st0X)$D7BTok{QZg z7FdykYJv9X(uEA+H1wdBR+k85gwD}3TAmDs^c5O9u4gouIp5!RJ~P;pk@5@)%%#4O z%t0EgkFuQ?OcC>?E|}6$U@Se7a?wQcyR7RXWZE<8I~R5J-VaExO-&CN=`-DhOe14G z7mUn1g3bd`*D@c=;u*%W<*S8K;YIPl9vv9wd!CK@3(E(Cpf>RQFqux=D!*#OFvEssh2$f-`Kzqy&tJ*U<*w(J z+M|p4>FKC9pOXz8J0-Q(D9JLsOP2Pm`KJrBEa0ycCa**+>Gh5qjuR`9oA>ovKySQd zn;?60lalQpV0x*t&n;CB#7hqqfdcENeO%6nYhlrsFcLvuLW4 zMbq)B4T4^!7EPW0PRSw!QJwxaOR*H|yk&<;NYn|x#YB0EYOoXuPi$y52_a6pggyyR z`Zl32aV{a{yUis`lJGW{FiFDOHZ%_>+@kF5zwZT`E4EG;sbM9GzJZ6J+j>)ETq!d-!Bit&kJakjOQB(>Q<7q**_G89o6&Cj$p zk)+O|jHs}((oC%I#kX!CO@l2>w*-X~!Db_Zd3sQOYJ5&B+gd}?)^~R3A!AicM_Erti`v^)cyW3o{(NmpWWPA9d%n>51e(C{HwdOhkn;7tm6 z|9W7fknC8sWwFIx6&PL)!quY5vx8~f402QF;q}NTD#=AQJ=x}Rp{Q-pP+$Z#ZY83y zwQSEd>Q?3aLe)Fz16?O#O}a)EijwGh8*ONx8oAaa<5P@CmRyxgf7>?SxEa50 zC0%3IF)4ar4^5AeW0?k8cM_ z>BpkiBV2j?%@}uxbY5J4Gs-c;xRR=I?l8$}vkf*-jdbN`W~^%`SzU}~M!WLT>GAFe z=^EnF=@D-_*lO{|*Nl0`NdM!Hd7CZV>QV3Epw&jWuiSn*#}%WS8TYnWj5QYFQ}pU$DF(Y4;9+#e(VZjKEB7nu5$%(D-B() zasA;flBR()fx=VYUE8jpaW!yL;7?4LwJE>S_Xj~)2SHPaq8aUeB~4*XkQ5c67xF`N zgTDUpU~@8T4w9&dn}1~g^ST=YQ?}_ses(JTO)m&FpH*w-yMn68D}`CDxvcNpw|-hX z(Xl>TR%Z&&1T_n}71noCY9(FY8CA+(&M<2;gac*so-RUC^`@IGf*V77r2Oejuu1sz z<`)+890ca4&PlaP;gO(u%7vA047&YRFS{X*>yxQ1y)$T9GvsiJI%)N~lj&nYC~UIk z#8Wf5n5y-gll;4(xtV|Knj5moiQJ<6^Hln3&>}eus+MIq7Bo$pMd7?!Nh%IM{vh0F zP&91%&Y)G7E;l>7(w|$L$&cn{2AAh1@{4keoU`@Fg)OQV(pz3epRLMDM|@aIFq@xT zUMz89W{1R6He-F~fg3gN+Dut5CkzX!TX1e&NDpiDf#s#;+^k7nobL)xyU*b{;Me5p zR^?r;h}a$8OnKJ;c1d}eNQ(<{7@V6m{X}+$EW~W6?jfVP2gnG?ZlHL*YqpRpg=d4R zCvvmP`k=n)#)6V;mpF9nU0%3f(r0zH^beE4R%yB(jzedAP@SlrH3(G-_XSPEiv^Ce zX%rP~nsH5N7zOouT+)f8^mW<*c@@i>qvhS6xo$=f74xTm#Nez32^q777Ujfxex}5+QQh3ixS4=tPhFR-om(+;&*q?-NM=dZ z8L{g=2r9qwcxgmddzX##?Og$Nqy(Z8-3lXwOz5yd|(7% zH<5Y-GJ$PJE6jSuqEWZ_#Uh7Vt7pLnf|ikm97p)lOa>+FK^>q1$Mb}$dNx(=ZX&!m zKPm%xObK}t28o4l5v(u%*mLBoO~&A9!bj3V8BvzM*c;Y#=n@MX!^?>$7a3)wBSt-sko=SkW^n0rG0&Z+xL+dU_11y_>HJvVzZL~4E+pS4j*6~&+)eT_t+6|EHe2J`M zXu2P*wJLF02V9eQ4f2{!SeDpy!*b*`9dS)!kXc~6Vyx|qiL5K4?T+h`mvzXs$w5CF zv^ey2oidSitX;QUpP{T{uFC+2^5$9HIm?(>;*;&PqCm}r&U9z*TC0N zK>=5;T`DN$Un2?EX(tb@Rp}x0f80RI3W_?Gvx{X4Pg4F!QdUr9#_4p!{G&>^PVshd zy(;rZD&;z5X8LfjT?EuqoD*ZlzWJ;9Nm=pRY0&MF>evvZ8-n0mv6#(2zD$-h`)Ng$ z7BCmhr^BEbvS+pcj>&GqM#L6&(S`xi%~mi5QB({f#mUSqEUnlKuk?Z@Q$AZPmJ3Vy zC-p*)HHrLgyFJ*Xmt1Soa)e@5cV$@u9W+Wttc+V$Wt5&HHbxI-vP0wdclD2DniH5W zQCW3pp`y128?ocd^qn7EW4puwq>T{GL@F!`5Di7u>VOBEs}GrNo8Xpjgu(;Co>4R( zTJLeGZ}h@=@7S;|&>E(-K?-Ka(Sz^{F2~CiAv&_tMRqp(ZL93TZE)7AgiR@~AF+#Fbck{1*KS|Xr-P8QRXI@?%Zgv5^&41%GF=fG-<_~}C z?{$R7{@7+e-|Qdagx0iVr3UGw`1PvzbS|ul*@`9Ue&NnaOZK?aw%uTNN2k_3P;lsw zm2u*JTN$UUCwI4ZH;x(O_hC7me{L)FH~f?r)Pz-g5^qa-!H*hWuu{Wrf%ESdtkhnx zQhUKp9h3PN?9^YdQ_p7pX?E%#`2VAon%p$uzLZ>SLSwHC)RZxrvqHm6eqU^RCO@_9 z{Gmig@EEr9#PhRlEE<}hU16@^{9&GJE5+zKcaC!0(P3%B-4<>*nSjN7ZYnA)MF(=+ zZJLkrPv+(pX1S2VRht}Fg65C(?2fcz8;gC+*u>7QJ+aSN#C0UL2M;TQwyMs=D?P7m zC>oWEGs;MdJ3*7P%NXxPT=L>p))LlNf;%nROSv#Kfw5l1#&Kqu?T517vkU$}U*W>? z&RYI=)^5T84a4|hS zohxwv2n)Z-;@pDR1yTxC*5lj~n#`#SWlM5{Xqx+Y+zFC~57 zxmIz;e~}TPx>#|hrUj!zB&e@e+?k4WRw049GqpXYG1t3uC+C$WInj5e3@4I{wcuT; z8kgK7`CV8G+T@UTmn9dQ!Mn?ni`C%WWyvY`*|OwfIe4}#x!4Y#CHVnUm{gd&C)JqV z#sx7hX6aKJK7{%F3}SpDj|i1SC}#?!d&-bfAl-v}w%Y3@J^r>fE*zQe8BhUx)uhMC z&QBoso>exPJ*uOsq?Em9YpYmFid@2EFV>bC#iRXt{T^j}DRH3mIuwy$uS4-b>2)X+ zGUIPIC_X3|zt^Jppk#b|(M1?$>acxO#r8qTP#;|uh;t4l3CcM?v)!ajf^yEGh`i4^ zl%!;ID9HM}LrH;h-altiQlOl7C?f0g4kZQ3d51#63l60UlnefOi&CW`ZH=lxx!_Q$ zK)K*hs>5WT&s`f;*=kVw{0kPP8k9cYTFO>~(igOv+E#hIs@DZ!a=>phC;=z~et%?80#F8A zuM0pKaJ?=7Wnk+zgHj(R2mM74 zX#i!&AH2nsr2&*7-(J~j0A;8qv~i#eZQg3i(ikR(U0E7I8TN;4Yc_&1?8?#z%CIX- zBPheJEKOnZJ|~wZQ10`GZCRQ?xzEX^36%SsT$(_+&&g#&m>lsBn;LBZWyHVF%4Gvx za>UaYQnk!IA}s#9zLW#qsiQ={fEIqDxVDCkB~qyETYld>6~7P5+=v|UW3vC%9uZT#H4HiWz0WdDNx1^p0yMxV_h7*sQwa$$xHrTgA#&r z$sg-ADML^$X{&9@5`uE6(e}s?luPM724!QIe85MssS3Rjln4Avw(c82dBATpm>WTP zpb5KRofMP@_Utn#o5JK}|ExjT1j=Rq0bBP?pj@V)I^QNxF7G>SDNruod3SKTs?p{! z^|1fQfwqHO5|}Q`GdDA5JKJ(&sH9CewUWe+^qb-Muz%UgX)_!j_B#xZ&2W6AnqxLq z?#*y~Wbb}6cWeohkNJn0JFI@ye(qZsF&}fE?H0P(V@(?k#1;S_+hhT^0Qi{eAX~#^ zj&7!TZ3QIfK(+#sb0Av*$vKd%faDxVYnYsHAgzE*IFMFACK_!?S^=5Zgk6)WS}PzE z4rE)HoOB@D0GV_k+W?t#Alm?$bRgRRnRFm+VRFiWv;i{ZK-vJAav*JhOgWG?K&BkX z_Ar@uAlm`SJCN;wR%K=KY`J0N)na!Z(;b|AL^GVMTa0c5(t%H$S6rZ?>|GPwni zX$P_+OwKrv9e~U@kR5=`IFKEH%s7x8fXq0Moni8d1KA146$i2tkSq1JBs&4QvdMP* zoq$|%AiKh3!GY`oq~Jhy0a9=vy8tOTkX?Wj97q%^AhVn7 zAd&`T)`9E}lXDJaHz0EkWH%slt|YqwnR6xC4al4W*%Kz`9mpO)<{ii$K<1rH_5d>P zWU>d4c?YsLOfL9?rVH%_WWj;#Wo%ifx3kz@Ko*XjwcbYh*PMz%wMJVABzG;uggJ?XC;`f;WS z4RaWVPdbK&VfbXd?7U>YJ`BT^YCCKkhT+QogWMKlKTw+pt6t*2!b`R_M;xKZE|RUW zY|qVXQ7ikdm(*@F;%*O0X+$(@HxDUs`W(iM7M!rETgW7b%Z~$)8Bs zWxx>%_Y)~~txKZF_7fP5>7pJX+fN*{i;0df`7+0?18y&K+&akiGRLihY%hbG+E@BV z!_>>YlwBwutx{y2nZb{GLI#^HnG~{hd+;Lk2VPkHYA^9x6bPLa6$m*zs7x-4wV~R~ z$yFS-*vjt>Te^C@1F&gIz1pjl)mJLzp#@02#$yq_fp&mOh1HO+_H@w*;OaX8n^ajK z$^05`vtB1dQnc52ti&}Ikw4|JMbTJn-Krs9J^9Q`yf5-)$45xBuGztJKJqyke>FA9s|i|vs(Q+FYyMC;~pw6 zDPQN+$^tf(@}=^x_xz)(z)%zz@^#)$1w;VtLO_ir$^3e+Rxiwnh0W_dHZ!t%gRB*D zM+f`nYDKE(okxO)C`B@?exsN8Iht+2tggf#3(Bk9G`?QcO-OqaN|Y{hxoi2Tw2VI$ zQI;4L%%aju;ZJBv)J~$BGA+v1GxbKVRz`qSDk+tElSo-w0g6gNzR}agCV)y2peqGQ z<~Mmbfk&vzPbHVrBoy8ie&07p57VgJCZ`GJ}V^6 z_ZF{J##p&dNzS*T-Vh!_X;S&55R$ZS^_t~tleADjAE%Y9kT$K3b!jQ=+v2n$2S}S1 zjR&Mk>$B;u{v|K*%cdLf8Kr(nz5(eIsk$)rcBzSoFI9*5-tN^mD0x7UvYZ4{kvgr4 zY-%=XrCx9MVp64r)M*uk)tAUQRVVd&yBBV>q>5GBB?=UTsdsp6098h=!$Q>?7&f0! z;nrY)UR4!VzspPf8olZs)rD5+D@8@8&!x?&xANB$;hd+0_oh`{&h#VH2B~*>wW`rl zRnm`s)$@<3eguUCA>ZX`oeBYbg9PaA4@u@<^>*kz9wbfkt6s;^-~#2W4y)heC4Pf) zo+&FQ3RR4%BQ%;b^z+nzs8pB=Nv;$Z@h>3S#~4&DGI!&$poMQ_l_V1`T<$FXmi@4<5f;}>U|9iZ&YDNP1wg}MQ79^#8pZ&HV zk;(h?wt;R*!(hg7to{QNDRURTEbKrkD7j z>D*{sQom`(xEhhs2Rw8&Qe-IDK>nr~;|QP`3DBc3B$+?pp+%E!3JIGJ$QUPGu||sg zj2&8_z=HgMr^jIeC^7-M$dD?z8CoF0dPb^$oFdnT)gSQ^AEQg`F6$C=%9veEVOY#_ z)%|*L@tWLGm$pX-l=_IRSFP0RqaJs(rCv~!1@a@NUIb7t0(89~$^21|4@~L>Nm)MX zaf@5TR~J@)+)Mnn5g$sT)WtYnOmM+DsT>h${*uGTkDuXL!_`H1B8kfb%7h+tQTp%qjD-cMBOB;VNPAfw$q)l5z z+Am7lGYFrR%U8X`|Ap}JN+zdKR`_z(qKD0P^fN`VZfBLJ8^Fj~>h@KyO7?w>aX)v=ADoD^IH`Uj@h2}N2+n^pw+2VSG>gd{Bj{lmBnB2Y-1Rs{NoaTyTke=-YH za*9A9ZCVlNfAZM6-luTs`QPyT4Q)M~dg$Y<6YW}X(J}4%4;OgSd#4MF2wV=Vj3c}J zl(Y7OX#(@lclw;rxkw$Qp}gu7><$Pmjv=YFST!TEM|eSpSLFwADaM5Bd|YO%5xh zj!@tB{ItR1Y^ECWPs}JsG;K|QUYkLJ^=+?3&s2~qcO;q+!J@x?*YoxM0ZNmqNhOjR zepeP?T6oeMzw4n}HY7;j^$v;BQIJUcr=EYvM9L`*q($PC2C`m#Tap%}KlL!>)<~Sw zKpr?~kSPE6JfrQd_vNGp(jrx>ST_ASt8~Ked0P)y5~S~WhuaNOO_=&K&p&A*<+KLU zBGrKOXCB%RjUBO!S525CqSuOR{Nj6?RIm9+6-BbA|CG%9CUC|sm=mm?+U=g4{A4rwFRArivWuytpCcZ)qRavu>Q*1xP?6><>ElU`ma6zZ@r{y9cWVjwTCiYww#b6 zgun67TeNW4t!UU0@Yj4{av-jPU`SA19017Qc+}jbfa%|O9D)C-SPDoUQv3ke|4mH= ztgxh=spj8!Elw2D(gelAlD7Uqxv-?Qe;~rrJqPOVzqczqDA+*$(2U6h@J$n- zdl4j=|K4lSD?CUF`S-HIldV}(Sp9N8@k-xq&GZc;^<}E-S7(@KZB&+uebw~8x@gw@MTl3G)`hogQ7`o zy*R>5z0p@^yG)K!&^OtFLQzo2H<}#<0Th$~T~J6ezsVL9l7ha;%3~uMCO`33BM;6v zQ*ZWh@g-v4C~V$hyATv?Am7Z6Sw0s6U_*fJLXc#Bi|s;?uz8E^LYueHc+sEe7mU)0k9!J*9MZz@36Ijgv~o_ZMKBfzv3s}W!P{Yn)($V^|uIZi?Dg8 z&!;ba6$&{dA%x-HDXu z-R{OYK~4R-^j(>nwxXo3ez)(x&(~8EG|}(&YwK01wo0kq!d3PJO_y)eDGL zsqQnre@2xGictwtml={OJmYf`CS`^s>ofi)ZNLIaIiB%3{4lX-m7nns-Jzy zGyY*Y!B3HyydR7iF@p(d8Hubu7&8)CeK2Muvie}m2*1LRj*%yfJ{U8C`cTYB7R->A zkt||9r&BNKCFEEh9{>ARQxF)PFc; zB#ZhF$BdFN`f$uBDU3cGGXnV|F(X;?Ls~|%=Kn~{NY?xxi5a2JhjeX(G7Hkx2=$WC zu8n~DXv|2q1dx`IYzaOZGmR0pF^#Ej~M(I;X?sP;b@GZH&9 zNXrO2Ge|cwh+6NH@dt~g8RR}YG6XRCWXvcKMxTrs)rYCyjv0w58l+`}DH^2vjzoL# z+i|bM7!A@fs)x~U$BgQQ(Qn6$8p71?#EisR4bn2gS`8BW1KlXHXZsz0lRgk^^&4RH zJ29gM82wJns6iP0PRytgC1=b?4B8+qqeeRav%c97xB9YPe%9Y=yEi6nkgi6JFnTs- z)F_Oe6-ICH82q=P^z;+|k$LZBxJF&2vT=${v+G3xDw?_B`09Ln#IqYpzau+hnJMJ( zA{xVWD`yMFVXB!x?mBW7{hcAy>B3qoW>I@%Ae8!j-<-;9ld0uXzJIq8C=^nF)KY*% z+@G=?2$HOyvfmygQuvgAP#@7iB85-+?RTlEMM$LZDgVfwYHHaggZQUoMl!WPT1GOp zd^%<%Q_H7gMl!X0I%XtO%co;TYHIm(%m}uhi5bb%0%;k^)bbhIQ@5!}`!n|2gM`s% zVn#Bxd?se3rk2mdj7a?1n2}5^kd~25EuW1U$<*@Mn2}5^pN$#G)biPwk(ydQ8#4m= zb1@^CS|BYWnOZ&oFslTD~4LQd7&qdO(Ye@LKI}E{Qp~yaQ|_RR(`xllk6hI0&}RmAs&W@+ zCa@Dx>E!Z_923b5G?V8fNga)g85L(8>dh&IeW%*|+hF5T!0vOz8dxSfXQwh%n38jP zv_ms9=Ix=$EBVQ5=x60Sp+d-!8aa{%`-Weyb*{ux{crdi^?D5wIex?6cObY&34_Q# z5@8&VdIVFco^mLkP({I#L-_XSs=OB^Dk+{#5hJIZD4ZR0nXo{x%w@v*Bi|_T+tj}C zkNk~#ivkJrKN98#6?0~!Z~7P}Zx^!y%qXtpc!+B0dhy5vzK%t7vI*98l*e<>Q`#wi=w?~JLMt2?2 zJ-WnOQrv*!h#;DrEz%OwU*o%DyrCtkD)Bs_O)`K%;Q`L~jA=drl#c+dSAm4<_qm*+ zDg#ORzVCBfcZh}GEgUHLi7jnA^`2i{{>u*c$QgvV2;guVYXo!pfSogmQA3KC`W>7e zkWs11uw8~g9U~DtQQ!OA{F8MY_Q()ek4eNX6!(5Y+aFr{0m8M%JoS1ZMfkaYAP z_<=gC6B1$kz~801CnRbA7EFOU}AyCaY>T3P!&^H5aoYo16xFZD0l;gL z!Oq|mM<|fey`N5|wzuuO5r94cb1-r!q4Lq6$@rRNghtN<(W42{cN|q3m_40j@8eR? z8c!$DY#)*0bBVF~^-2F{DgKVN+?6qhV=6-$$$@))vZgiIBW1__m9qa#GPRKx8y?Ir z7UcwBSs5kT?~Y<&!;UF2ty9E8b;zFSb<#4$fz)QWI*mD69^dV-Uv(5kcC7_*)Jq@{`usFX7@nDj~))T&E*#2rzzDXTKjZm zr8gQXKj)Bs+m@h4rr&|w0$vk02&Piz8)sP_4u77*+bOv^_`gpa4yk`KJpH$lZ3HF` zE5ki?QgHDksPMn82@&}_*qx(&7HEXOFvxcwkHaVWY_1I1#gddFnz+-}yX}H~z)UA6ZF3SwQxLKcz7k)EcLMN%G{4uaXk7QZZ-#WueYwu>|b3M5seM8e^+yo7P0lw z4oPq5&~p_hTE%2r%PEd2`_|}I+8bBBs?80(Z5tka(h-&WG>z`QVeL}wa?ni0%-CRj zs);MI`p%=z)8GnN`&!e;O#qbzhQopIQVs&`b0UJ<{yezilTH5Dp!Go55ZC?H3A6Qg z*`!MQydRg!qfe_fvV6Ll*8i>+u`J!?(r4`z9?4|Muq*v;sS)vl^Rk&1s9}v^uiw zML|f>R5nu(CI#_)el5RZTq4WQaFg}L?Bi&(%6M2lt=|K$kD?0N)T>#8+` zLg)@QQHJsXU6r{Uqp<=;V`U6GY_G#eRlrEC$B=>ZM5q3D9Y#w9jF!q6s|M!sx`Y)l z!g7q>U<>k4BO;%>@g!i`830FIY``AwbMD~&+l2t+yhT(I4u zuO4#NRn@fE>2f|d=K(z)L(=zZhqAC7S)MRjFnprd%C>oYF1Mh@vii!UH*3vojU)yk z{hy6rLoFWr${ma%GhT{R}lY*ilGHl+r_@}L_D>(pvt zJ^vFCWukhmA1H6nBbeul<6Ws&k*!=@7NEDsIKSWtmwT?4(% zx@i`xrf0{(hFTUSu-ERjZi>aa*;}zF4=raQ%X?i5z2UlP7ON(A$HIn&Gtaf_y5V?X zJE62jh1oyrwnc7Lu!<3tF?$ZP^}2aRs}~3{BNradJ@@|Wj+^OWcJ*NY>TjgtCTtZu zX(d}Ty$Sm<*sWP?WMg)5OxcIIW+!&DA7=S##D172EPV8a+p!z&CCht4pL_{rE0yfp zJ=s|0J=yV_X_8fInCz;J*#qmgIC@uhL#4sGLc3K(cJ)5z`g84b^!Dton<>1KOohco z_Jz$3Zw{{CbiJ_ISuc|pHaitM%Ky~O&i_{1jKA}OU1km6Q=DJQ73Mjska4aDn|b|o zO2|D!Ih{6Z>ANe9WX}W9ARSUaRw6&_PPE`2Lmia_9RMP@QWL)$Mv=^ z`T8t!S~*QEMRUc{5?&5?uAqR@3jv7@#vJNH>sd{UN!tx-Cu?{iu#w~C$3<9R;Limw zv{-1^1U5I0Yt?x*4r+@yv{iN=C3D5q9#V3-RNXBV?;^bK&WZAJVM)1ZoyLkn_P_M! zAfgbnc{$rtckVd#z9KKe3o02F7K)45HHt_26Utkw_9P+CG2k9y%5*g3Zkb{{QNm?x zeja0%x#AO?$U<|BFE>s2f4&$Hp)(sx6EQTg3_AaP!`d6LC44xXFBW-~e19pDx2H(Y zZNW(#qu@t^n&8VJhzS<;v31Lg~!W zqf_|coh>flh@u0-64-QbK6+FYXtFqaggqdSf0T{};|VapY63`7IE$5dfj{7ZnqMI0moXI`cgzdi7L!GZk? z4(wlWVE=*x`_WAFf&=@1q62&5_??q}VrAF1U<9t>Kp@`jKr+?g{ z;0lUJi-OrW;ZQI+OrCHknEE77I200|bSPrB ze$qc-QShNaq%8|p>&cUC)&Zb+yFTeq@OFKhLlK*FD2sys1R^a8Ch5uB9Ey0mzRjWF z?fR5M5rgwn{%sbe7L-#C1$*=4DW3e){RMOLMtRhvBRP_PtFo_4)Xyj`DmD0sWR!=Z>B z_#OUfi&78D9S#LE@Z=qBVp%9(09N41I~)q$uFp6WG4ej+-(gW2Ksn=3u<=fwX|tY< zG4W2GaVU7ZzSE(I1^1o)8H<7iH<7lD#M||quD@WvoxIbb;O+V@ha%pt@AB`oC{3W; z$@F_c)Py4&H9@bZ`XG_6ue!Z_3tq) zE#9ur`gdEDW>C)JwNcAcyj`D-?ywXnXYV?zOfj)e>q_)^YV?xvqlUJ&@pz)B+hGe8CNn`ObWU<9KtoecHRg9 zI)3xD*H%c-&nb6%%55U~&TSV{V?}{}4$qA}48+*)T}%vkSOkw=S6e2#KPX+1b+VWO zD<@OzR9Ik7<)?G_qEdUL9PZuBkSzn%MegNFvBaVepYqxV3im9Q*h!UMR zR!k06HAorpe@GdJHGmLA4dcs^LJ7q%Ka4@8PDs>!E}?L`&n3h>%rXi;RQd&r^4O!tsOk(urxheE=K9g56!5Bm>U6q)HBb|^B_ zJ#6Nvlw8kBKI~AK=^k+?GSfZcKWtHCrhCMp$V~T$Ly?*85r@J|_ozdWneI{l5sM-- z-J=dgX1Yhs9F_8ArhC+(Fw>2jQ8cAyx^e$eiy|}KxI>YdZrq{BOgC;u(Ui}-4v#q$ zndu($$Mq;m94L=D6q)HBbG=Sxy2l&}GhNQ1$V`{>AG0Vj)8!nB%yc<3)1}l*mvbo0 zbQ2CmX1WPKXHjIPn{X&H(@mI}E+v8AWiiy|}Kl$l+K1ZB$1E>NIMF}qALVql0~NX&a}51^yTPt}6Ex)eI|p6i3mF9@p@ZBEuR!O2g!w zf4iDsArQfw16IS@9Cu!1HXst5xsFatA%eNvP6Zbc0UE%^(EzrctthS(Aas zHtqA)1|f+F%S|A7S@Zh!{mN@)8rMF(dENjMKd)0gR|>OJ>DMKLt#Q~n@lRH=)jSk5 z4KEhZ(&1)XAt(c*s&2p4%dUwD%hPr(F6LHLE!U=1F(FRq4GWE$H1E2vm10~jRaV7! zRn9Ub%~RWHMC;n)xsY_3x`H}sVO^jq)vUXo14h!S^2E6?4pM|JiP&1mqv1EM(`pEn zE4?eI>s!jtsb&ayy|)0Ng`QQv)0cuqo?unF+(As6N@BArrza(oN)zGEAmEv`$;HCL zQgM-%5OdbDkhbQaX{0!pH+`M_=|9F1yI9LyEEVS!`yshViK0B@<)DRG4uP~GFgFeq zm`KwiakNll6Z>}ro%+inQE_m?n)Oov8fnPkX{_RZPr>&r*f+9K*uRH^1SgPN+ zt**CnLs6{+$GgcAB*|x%3sbF%Nj8;#vM`nYIb5U-iJ$&~{Njwric_Wd^v}~w2!n^XvnRL7)y4%S9mZ*u_oQiQ?@6KLGn4l4R=R7 zH=ZnH&5%fhMu%0+GloCo^LpXlFv;(>e5CT9i3WLpFs)BTIuwpMrbtK9lqGyjmk; z%U^TUBgaJgtOu{PYI@-YvTV|LA6%asttc+n@(W9mIt}7jjO)(4Cde49Hg_tQc1|V} zD3T|f>t}p@(-c&BX?>EZ6Cp9J*CtwnCzy~~A2cLdytb=aG!b*z8IG_xe=_$*>5h09 zU!Is+hZngnS>jR$2j%$ zVx!+&{`6ua*DS?NBXRODV^eBFm0G4Kn!HU7TZ8xWS<24vaN?-f`SV^hB(Fcpgd80| zaYh|baXvL!oXW2{nbK!dwBwOU*%>b!5!oMA`AVE-u?CyHr!aLlPCW4kf879{ICh6d zlq0VhPNSA5R-JR%V=miAEFSrS&ckkv*A=}ui1<%Ge96m?oW-5!jK;h0k$e2kAbM$e z;_k|cyT{8C(^*S7&hff#kT^F!p;LqWM;?z3&K2ZIOf4nl7?}@{9x|yreh^*EJ(1%Q zC?4F$Q3kvXw^5lbhoq><(NV8QkKy;*(?uUeut%K#XPAIyA zjtwnJcYvPhc;dEL&vd+2zh#HM2&FDXlB=ZdqsCzE%|CG z|A~ECBkD=vbCBaWzhOdo+zRE_E}P$awuJkd6x-Rn-=t9y*-Sh{guEgK({Z9E2=(z-(k zdQ4BMo8^#J%b_gk!EvCW$k$`umefkR9`#g#QsB`PJv)x6rXWsK3q3oJ8W!a1HI0qR zj>hgajSU5dUgfl0P^A35xQWpGq&xNQ(NBsI2Z!E$y0L|l$o;1c2WomQC2@ixYN~Uo zUfsJO=}+gh^du4%=Wze0SxA36XL>AgusFB(w5f#BkDS|gyJ11f^Qmr=4;>bi?y*Vn zGn+i$sGn(sg2VY8dhZA&`P%i)777mMJGu;qq*UVk(H9vGVD_c-Swm9k2m4azEkn_7 z_34p;N{D`|Z=+=>`mH`(De5ZW!zkHztGJ)8mXyMxFRhQilK7TLUQFqi10i5|(N#ip zUl$v-PMSD4T)f4~UUXjVpS+7}bf@oIoM=7}EApa=e zhLldJIxZQ1wOZA|Yn4WaqDptkluoNUF4d~ZK=M(#OWdK?C_p}7&J3#Lvk~2^J{N$b zjt@8#`EDLiPI^UsBHzseoEiK-Nh*oPN!Kpm!Q1vi0^Rg(2 zrt*_a@66g5)tHH$7q?{xrWb~?3S{ZY0xd=nr!;E8IJ1mKD$29C$uFukr})yCWl^u) zc=EmsTOPFpU@0KZWJDKIlGWbDk)c6xX}%yPI*J{uMu8xKn!xQQ5HqT>H!{^?$r#`< zedAL{txnnlyhFREXk9S>*C&xVYs}b)uB+r4II$OUfJx)?KrhPR(O|B=3c_i`aA- zly4nV5VI`0p;6j&1?cE{4okO!yig?v=c3tqs8&C6q(4e1QZBgqFfKms3dS%2rRTtEHS#|03MM1( zmXw1TpbeGgmdaUlnm5rkD-$KAEJ#h+e zf|&6L(*E^T8bE$h9KE{~tP_9I!y~mtCBdu8QRxEJ1pK5YF0VBz-9XaBsPqH^%24SH z1SnLhBF?LS%JYBPRz*3l{wYsQf<#M2p7v7uNfRj0A$3QF1e>P_wM&0Uke`-!-DHre zrAwq<>lwe-P|SUhHmeltwe~p>V#)eiZ_{R{x&OcayB~;iGi*@Z9-j@pRlZm)zOhoZ zJN5KH&~lEQZm&x?l3xl>2dQZS(UHj=&plRwU^8{B&M_>isI1D7{?k;ju|jM`HDPN| zBkoMuz#A2zCAH#pAwNHba%BZwVe&woC|+$ycsOX$PfL%-fvs}it18>9Bhay#?BV`k z!*w2qD^DuEGpe#p5?q$BCulHzeO&sw@d^{It9>jhUGsXAOIB2(zRt7u&R@x3AdyVe1WDBI^A()E!n z+oUsE8s%zrX@!HqCtDjtE1fk|`s3Ad24nlSYKDqk?9QM{E%oSN(vxpe20G7bA?jP7 zHwjQC#IB%TFTQn;kiJ~s`TTt<(3#eEDSbBc<94YBf(@=ej4z7qyYWhNbX|+A5o<@r z_M@z1%QiV2MTfmXpr#K#ugO_+n{>UDhGd3WgPg5X8PQ10a;j&0552W=Pch4gb-isY zXtH+sre@mDPsj7t%pL*hiZxmkT`xRM+5oj8QNv4Jw!sF<;YZt3LDOpS$UzcMZY?gE z;{{E~MHEIObI2e+!xzOBPO1v;TUXrG$ZPA(4S08krAvI1tkW+EHdllW9|$&a&L-C* zINU@ZKdwLM*6-^9WPP9GTp~`b3z*%w3PJ}Ss;m7kHO(*QKR^BR)xoAp15d@zm(QO; zkv*O|FRJ1wM^Oy2RkOK?{H!`gYwA3_PIi?zbo5J>tj@`4lD>MS4=E4b9D;m~oJPqw zzdfjvzq)V8fm&U*Rsy77gl$2s`b?(sc4~8UNXIhPXX8pWt2#U#%LJ;UQ#mcvUsZuQ z@JTg#a`dQz`XofyyTvkHQ?Zu-#s2oVbLoM5N9F3R?NjNG`sO|tR?F%>SMShRcYg+p z!KNV47rgq1x<;FQNB0emo;ul_3~h!n9gr$daH6xhN-j)kfW8MZy=19g9YUI#u#vlK za*M2cXsExr)?to}X8Q)uH`h7L^Vy-X;pV_03}i+|y3S{s>s^ZO%cGf*<^~5L#ezkn zW04sg8)$9{c|}BV962Y&BE^O^L6o%Fp^RvhmQ?|y2-7`5mFive;->zt?o9vq(C}#A z&|p_TvU6eC%za~h*-S6;D+?RW$iZK8GCdh=sx(ek{4&a#SdK31v7T77vg=S->zeqx zez38^@}nY?d#r(mo;?q)V%3LwGWZ<6@(t;)~_H0Vr?PAN7jw$dfGcxu>@z~^?+jYj0p0BIo@Q6ldL!Xf6m>k(Npr>{-JS8LtR;ABMG>e* zSS!Z#yS-pb<&|Q^GH}4I9l)B^()uZBAdentYK^?JCRh0+uFG0sxu@5y>q?5Fnavf! zD;9J|5ESOow&^962&^t!r$S_aR)eR~#@Qv8#0OeIrxKiwg(`L!^_@G{2~`(nZ8^hZ zLG$En0Xr-)mdNLLbZ~}+ly{)^Ox1L5wv^9q(9sx9=vc`ii~0OwSq_;l;v72KUt}h6C2Nrs1LnzIDN%{l-VT+`dQ~3hGA8vN=kDS-S2wS;ZV~`x z(z8txp3l!K1#Lzp>zbdsK%($WutlNBnd$t@xbg!&zPvPjx^;Uwe^o-{LK@}PdyEvg z(`zWQ&zQrx`8b**H8nPMt{+>Bd&li$pZN|M~>10jXTDO)bFN+9|()}mL@qffyZ{uj% z=X0gjUFC_JCMPp0wo64~&(>0$xH_r3B-fMkXq#L2kfScUK_XO#99F^MLBN$sf?884 zE0or~I;jqqwT%jvPoi|aFui0E_p4;}D$JlA2%1F{>RYhM4ya^JgqQPWK_)5XgV9V6 zs$>lW#vD%uTO<+VV@_@nm!)o3sYULL87eZ)ML8FjCstg~I-<)dVYYAmi!Hj-93Yl= z{ID+2U7r;R3$31^-pu$&--8(zBdpE(`$jY4*|EXVzJW}0vTVVAF;%;-d4Kxre$cdf z2NvEHY(-*Xf59iQG%iol$QQ|lYPI=s!^kF+3dPbT((t{JBbu@|NTi{k;=Xx3(H3CIZj zud@9?nzhY!{9A|H=+CNwCrt(lZPgpyxV=k9g0QhDl*9+}I|RO{7oR_7Fj ziOdsuz1ghI8Y(;=RA1!@Xs~7SX{xBx<6zB{q~qd<0f0tljbTRqpPpnth0NFNQVl)SjSVkFj_2y25>&rr6P4}vd1%W-_TFVn*} zk-jac)5{Q+v~Bz^_Pv*}PX8Y2>#~Kl ztccW6<~T-r4B4_`s?7!}s7pd_w(0&g3eU$;)m)u^2ZsZ01#N}5`ZJe>P{q&uU!$1m zU&8aFnd&PS@7DjN#rqRKXk4|3UDL)lEZyTl3kS<{3q{n&lPlx1;^3k+tp<(t%EDC~ zI{M;#{gUm>#=hRn!0^y$X0Ye-_}JjRgF}}Fv(07jD%ro_XFnV?uPs!#HKUM#ccbmkruSszjVq*H{mt1OV9$1!I zwlK+TvyE}7S-&Xb*StZMxx>rW>o5%{OEJBS*QJzMwIN%t!*mi3U~)4vi*f_R0*P9x zF5BdSRl>H5L9La8Ox5$qgr$>GrurnWl>iZvtp5t7aiwBYCmep{GoaNMN=~tvem4u2 z)rSjgUTSBH+IfmO**dVUZB}RL=r`%JE@#_UFtoP8Ot-0p+|m^VSH)!$FRN$?XDunF z?;JGgaG_<5Yu+5;Y(zapQ!=LT8%%hQ36?XiCG)~XoK~8(F57G)T;emqHj8WDGKn+E z(M4T$t4Yvn-a4^)(_i<37PTLsd8XXS%RmsQ>qyGij1kxRuDmW^N0(gHQkj@w-0!xz zAc$jbC^qIPeE_7kqiUXF=dOcfLnr!|i9CneMjxyRW^bil7vbO`81;Jh&vNAm0k3V| z?&f&ys1A)v7rY10mYL|z6lXc*h|f9H1*DSz4~{a_f9`~ez?1W z|EFwzdKMc87IzoF@T@PE`uh|At=bFTt35#NPlPYHESeH4>nmIe5X*w;qF7w9;TPkg zDF!u`#bWCvcF{{`@S-ID9g0@_Qc^}(x|3+z?Kv^e;s}H5HVQR2fh#GZjFYE8jK$c& zi!lR+4zsvr5(AWSjyPvpT^xKjv6bY?g4l*tE(FXbV)sp$IjKU>gQk|T!4o)Djvy|` zKdT(L-qN+>T`P>(jRP+6B6U;@YT&oX6+)Cg1r#)~cPM4>OJoq0yQ6ZI8q@}Gs<<-T zieU6jkx042ninG;sv>bp?wE;4jo3knXRG3(xIhsrd3{xr8yI|!gaWiEg_vVmA%Bqx zray8wN}PO66Ct)~Vg*;6Ub;?;Tc=l1X(2x;POr#S0OR_i+(N|XmpHyE$>@*4Ni=$) zZzLKSIyZW$E1QYb^{5Ch8d)zMSnle_=GbFx20h$&N%__zCJ68su!D zdu((lI}$|ct`V}PRZQ35ZmH!$4a2O99%E;h-Tk@l!>u%~~lmy?P1 z2!v>GXf%lW`v%xZ_hO{iuGp^67Y&_@1~S>63&3=B_p$H3tQel_8yys8=Z3Nv+C{@% z+0nk9vHq@XG(46a9vaC+QnTK^k)Hl8_UOGG@P}uVxj!>F8jW1&>hE7&(I8^6mB~u! z%c~i6XDDSCr#iw4)|Ub0^3kYNDE`%h@F-wE)`;lKdiwZGZGzmKB>?!J!9F-fRq|hjEr@UjP{L=z2LG)bzOu^dq#cdqORWi`$p(V$VmDx zJz%8IbQdMIo(o3i9YN=R_M@(4H1msRqH7EU#rYSRvmmCx=)k=yD7qgtOYR_pS2uQE zcmelY+LX-aFuERP>8ieG(JKocwc9?eSNy=S#UDA%H06LktC3qQu z_&eZdn;1QdY~_Zkk)fJ+5LD4>h0)ZqXy2oWVsVKTeQsd^3XxpJ_7FR_(}^=)+oNKbEkimBCAtt@Zh?ka zRL!N&T-LP>nm{#WFh2{rbP8SeKz9J~Hp#lbBwayS1dEC1Y2%DWUE9CIw_b2C4aIYi zHdG~wTL5>|?^Je_P-MGf*KSK;V|mBE{lQTRk1gHZi3h#5-E?H#HRa(%DZ5;CDercs z1Y#a~H`kQzz)(+LZ}GRM+f{MZT-c6C>6FZ7(is<#m&}}IQNm$RUYC%pl=rMDFBCSR zXX~}yClpN1vN#qiP$Z*!0b#F`BQo?=j{@^K96tbQ7_qENfEsE$VZ>}JW zStz#6Qt5~?i;E{&XTvG>!& zT>Jd)y}S}B;v?Zj-tauA9F#5<7mg@R&8pE=EfCi>m%29N_^E3%^=(Ef>e|e9?J^4v z@Vm%uH8E}WE8$g}&E;h{u?F%~wYpg}!%}{yw1qx%aTPkM?{##`I&4ty=_- zF;KSVHGuTjv$I#7Uu?mOyR0`mZvHLXyU>p=7nju>K>l(d*JFZ(;& zhSiLr?K*Ao)cj$_6&m6H$YcH?ReT7F|Cj@ji>i;Ao=hAdk41ZJNNocSCSG0Ef7B1i~8CLM@e51ceZ1aW{& zZr^890y25RuW+;WDnXaaex@c*rt7UM~ zR973*aXfHWcOQyr;I8r|={AS=tZQ=_(Pv$A$%sB{K1c4H05facR6zkU>)M=z^S<^Q z$t_br<{gNP=<}}Q$cR24*?uY``n)R%Bl?1GyMv7A3l2m^^aWQE8PONo^!VrY;$(G}NnGL5d(TNjKnjjn9ds{$?=1G2)ZfZIDV`Y?~a#NXSt95;-fos@#e zUMCWj(CYTF%~PoZ?Pc6K9HLTksXX-x&p*@FrS~?n6=4U(7E4yC z`mkR1DE5vfyU^myJO)O}H%W)`|6muU`cAi8U;|O#4oxiG{}tY@6PDy^ z&nvuBcLWbg!PNC6e;ap_dz9r_N$srECK{b4N=Ekhu1xcBXII)ewOV&wT>Mhla>-ze zLx_-@O^y0?rE(7;Bu24}y^u_euktpx1}Bh~ye#e|{!gx&?Oiod#%mFp(p?tgW06Z> zvd?`t%pOl5ynVJk^AepJJr?`9g`ceuC-+Yn_pZ+ zkI4E+-KLf3>-oZ>-rTbGqH%BrBiCBxp02D_IJrtdjyHICzPxU7K>r`)Xq&;8&QkPXVdlZy44O{4?=r=k0oHMl+(O2B zoqM@Fq7WTF#=43dwj>y153UW5mA!OSz>}RleJfw^%oeV(1}v+Lloif#(U?~VplG%- zbe=cL{WDt`8Cwa6tDhvt8>RZTGW5-V^FOUJ_;b1G%1HNsb6go&jQyMP%Fy}W?4>rl z$}pWtfWEyaEmK8~H+vhkw;T!J%X&+B4(2Wih;vkv<1OVmxWf8YMpDOviAn+*;{bBJ z)#G-i6>%-kwwH^T0a5~D5#!2(07U#9&vcl&F!grn*<)RI%WcWjWSmb)^3nin<5#>b}C!Y4YS3&rakwsXaOSadM>?OFRIhjC5BgB@J^ zW)M}6c%Y?FDi*a9m{E+yf=fL;!C?%VJrweMOiPiDG}9@LL6+yQ%@?oFn-RRMZ!*+M zCFAC-Lkw^CS~dnpj1+<}^$spLqQ&UX&(ADfsVoO4c=i&KK5n}Jz;}2XHwU{7V11bS z6%p%3?W|~C{5{E;K-5`QF4q2%DlS(&Fux+@vJKi0rrufJX>h110da#ikmH>m$B#Bg zW0-nZ`H+G0ObLiPO(Qwp<>48}=4c92zv^)<+kTfg%9H?{37T=Li5$P`ZITtF9+ozQ zsb4G4f%|6(h;wWp$FE6_{U%3qnEG|) z-hES0EkKbnhH3%o-C9{@87al+JZ#6pAC0dWr8%8;Tg2lT%y&mj;5#5rV${dbZ>=1lS3 zk$T2s>nD?>cHRN0XLjYhgIHD{CKjw`Ja&JEWN?1QV+E#>i2R`E-(n(RDWpY`d&wX4 zPzC9%QjZUMEn6)K(g)eJ8YD{ip}0)!Erhg4GA4c~Mw0q{$isD#24)`!NtrNclIlTz z%wxUr20Ra;I>2O58N14egqf!~GZkHdUC|NBj7HiC6zp10A?E@vC%R?El{l}{PvZoR zWxkpQ0W^(z*T;`F5yQ0-)AHHT?T5*^_@f=CjK4$Mz>wUz>yk>p*8dBATYy2PM zUK3R#@3WpCwY|qz$~wEpm(u2$sa27Ac1JCmsIDj@)e6+8P^3n>rZxt*Z*tj>r3jjH zRzLeY_P5Kzkj&G|v-pg2Zt=)BM6Si_1-WG3bNKKPncAZghthnRylS+}!G{tQx5bLmeW#7v*2dz zN3YW^$3QaW$a_$%u2EaF4iV)qMx=Q;{LoTo^(T^ZBwh2_xRc8?{;Y?^j!BHvpY?X` z3VuQfowWbK^LMo^D4Dyx*z?Glc}jFzD!E=$^@&*J`6t{_$(gaKh~C6uX~GI!-iosQ z)saNnFn zOrBf_0|^fUND`6>nFPcH#at#Z7?S*ECLnDUCdnijm}KHi0tDNiKowD{C?ZOKhzcTJ z>!teb_1o5Zsbb>=ETZ7A1RZOrOBS`D)#Tg}FENXXZHj`3pv3Ls^kS>gwbOV|22;)=7^1hx0PNML0X zhh|w3dVeaXx74vuCG5wX-q;c-cAior;euu;y4cZ#BZ#XcPfTQJBj^OSP)JFPLAX{) zd;$jq>WE!5F5L5FuPq?CW~T&9zJhs{$*Fyc6mz#edP2(4JsHa=l{sj{E;Q4Hqq+Q) zet0yQ6U8>RX^Na`{M@^Ma`>RS@cqOS1LYD#QbCqmU92|bT7HnKI#@Avu6TmR3BPfT z-Oe^>29#BT z-O$jZA^!tYEii`eDxnx5VUnlV7FR!Mn*We2j9i3Ko+4b-$wswOuYM_M`bRdZ^CoOm zjVZuX`%=yNFKJ(@rpa4XFMm0%o|I^sqBl*EPJB6bf+C-OIj-mwY5L1?MJIPvz5JEf z2~T=OF+#$m%iGWi-dg3*2}^s$TRI`5bhTdnTGI5NbmI78C)nP{bt?2k^XY2|2b1cF zk|mY@DfYy(B~kSDEn5QQ|yV7B9*_MU}Drfr36hVMo8+(*ORtW z;#;eH>e5&Q($^ErjE)n!$u|>@S{#xVVTuuwbdzr;9JYkFK>B9FX-g;q>6;11E$@>! zt}2Vnza;6SNvY$mbQ(ip6wiKQP%!EFgK5o#NYAlhBusHR5s?dD=LSJjd2)N8Hvc-A zVX{S?K~7bq>^fvFO=0MCHg9{guD)VasyE5E!z{YU2Fvs%i#FRlu23|v=n`^!;NX31 z6#pl@9_&OYtSvTA>45fa967G;=FnzzKPyF;kPr-d{!4XdAV_zK`a``^33DwdxWmdIdLv>80;?Z2hRM`c8mdgsMct4BFHfhAb^kry;TPK7$8=z3||^a`l6peV^vZY+v4h;c2A zFHKu?${cb?y(|q|OtM7LI7M&VQ%b!o4Px9=O1&%%V%$?oy^QT!fCStdQ>^^z21%oU zL@`2=7{4)XYs9x!`Q+1Mk#5|WTDDr@1VL^}Iq7joA_&C@Nd&nm<*X;X1=39^hdrSP zq?=Msd(MO)t@Y|3q)mSaK{_W81P5PY%U!>lNF1&9e~@CF7jas}Ew75ip#&ln9TAF* z@v9@oM>DH9^XNM%ty)|v&-Ik`Og_n|L z6eA?bvfEM)iTqQ^vfI+*otOC3z9ltnk3r(oH>Bw^xt)t}91m+@!Ncd;jx^XsD_nj& zPYoHKhrKLmO1%*YDd1#9I`f7!WK(N3udX+w?GXhDsW+sc5WYn*e?xlO*|8|IZ+hlg z0YM<$F&%>9L_7PLgkX3+89{9}ffEtbX7i35L8+a0Qd1)zT2v$Jw4k7ry zSRv& z?iYs+@rfOEu$A$dQEPY_&@AR7<{H#e>t2UC9ud=HgC?TF5(DgRjE@ZO-6tnbt~O>; zz#Y1fn$56%=R4m9W(zjCItFqWQn~gI9vD7&Se~Ha>S}GC;(#!dvhy+ln*O{DgF$YP zh!j{BNK=5N4I8~I)Q$SX5q4yB$1UO@C7ZhKMDfJ2#PPDLn4#S~BH5+OX2e0F>25(U zb!7vU6DfpQhdaB``@(S}-|v^EIOuyvR~m;J5y{-%6D|pwkbWs-aMFe|ZazIO!Nyal znfXLg4lCWRvC(n%#_SR!^qd5ZOAKSIMbIJNYHBnOj`}F5N3|l2>>h=yhe&736*+Vu zcR|8)7zb0kDg59lLu-xN1~}Xip?e`}PB*^95Jn1qAyyax31cI>hPo#vDa%gWj8`U} zj%v&pt6lp>G0ezVkVu8kSX4qZdA0{nmxXC$_<+z4rV>5kwX2GNT*bLi3T%(2jip%F&b&L0hnnCT;8fI;U8dkvM$3v-+~ZsfP_yJMz# zhh>sl=*lqT*%mQDA>0qKpTZ$^1v`-uH*4s+iM=D-pfIu`8^IL>1nNTcBL!!5>%4CE zF!7p?b|eu;>pI*rV~H+1Z_srME4czca8rrhrCV^e?bJiIQ!6$$4vrkg(|xIRWx^*{ z5A7s$Qs!06N>_oe&c>Do2e~oXl62*K!+hh6?AO>mJB@v#SF3I9x`=Pl8=n{C%jf8Y zlqle+_r^YEEXVvHKw0-gm%7Z|PkX$OygH+794EIe8z5lh01Pc3URjS0AChTCgCE2N zNm^F~Y3Lpan(iBYMnnlW?!jqDK0#9jf{9$t4qY=SXJ}21Ms}ISG2V7BARa?^N|;gt zV%99g(4oU)m`u$H(v||3A4<{9iT=*07-!}x*}M)PH2jbOgc!+pU&2l*mxU>K8yS!I z7DH!;|2ricw0UaQq&0ptO;71~glj;CSWDE|3mI~RjHMvetuIIv%NN3elCMvSO`BQ8TnV&u4)7Qq#w^zi1~Q%1IKA@QZwFk8tvJ(j;O0emu@? zLa+8)x9!Zq*nmTqfDAe?DTG##%WnNBJS70pc8~KP;7nrG&L4r-)HM z9-BZws1F4r^`*ssI;Xz0_)n*#d3Neci~n?rFXcTYqdscsnI3!czA`cNmBW8ukj!#klNTlJgz6~!Gh+LowpPN zHEh5R+ewbpBRdsw6qcdrEYo5e&Z#&gk+`-Y%bCE>nk=lqM$h;oPhSQ2%(r3Em)=VB zXdv%#rcS~b;XuGz6GI@y_YNJ(w`EI~qSx4F6CL2{Ay}G!IWWQDA#GIzF)K5)q`of+XW~x!Vjj;aGL@}ofM=?*M{-e*~f$FnrGFP z+VE5Np)~EmE!lLpAmik5CL<*Ju;Or>bF?v|ZdL?|hjJveF?%R&UlA)C;4`~p5hNZ; zS8uZO^BNa?*y}YLYu|Di0O+r#>2o^17-hh8T-fbe`4h2Wrm`!a}APV=pf5Q*7(G><&RbzA9A2kwc)Al zbt+>zaHc$3+j!+;MsR2SYz(!th0t*fWq$i=K87;CeKl>5qCz{{uck}gZfG_pipzDQ ziNv^a@_#jb=DD>kVk9};eLYRTot8SzZJeJ?lPJJLP@ULI8PbZeVsW!I&hv<;x$J#C zZJt}(gh3hLT35f3mS=UY$$-NQA&klfUW$0w6|o_*aO9{UyI+Svp@V?&B<%J8@%N2% z#>^Uti>w_gJi=`2sCuMR=SuUT%LDAU9W)7^`96u%$RwZW(H&5bC3b=2o;vn`rXERg z?}|-P{#J??%`=N#f*El)N5cx7wMC<7eh#qHq#>2%T9CDZ0?GZC?16#CTTS*AE>NnM zzk`Sm<0jhy#mEBqaZ?PZMSj`RchZG!&7cSid?!6U$`aWQzLU!m*$%!VS@LzC#ejM= zO*=atOmpSud^vy>RUc-M1!d>5^vP8pbh=Ue*lkD zP!OUWGzKd~#LUAmLG;i*94q!nvy$G=B?BmwD~gAhn$__u6ePrm)P!Kh51N}qcK`!# z9MIK*(?FSw%Y=_(&`q{J#F-%ndJ#DeUzNdqG+*p>PWNau+0_&kMe(GQYhQp--~`6& zF)j8VFE{$_LIq#ZhId7EcwCEVJ~H%cNGrIqRU97NJ9J*7(P@)=cvolki96n~TI4bG z5|wxcFdxyOv7L-H`nGRujQdSrIwc?Six%^i*jqqa%nTeWO%n5VXf^>2)GS;~q}uB? z7)f__yuSGwmn%X*F~gA6H&{Y!e{-c=Uf_VJdIT)ANaUW6^6eiQ97FqJ&5*nv*C&&c z-(nM((wHm;crHpmuzPEeb_E|xy0>TWDufl#e5MD)wQ6Cmh$L|$WLXKIsP8DBn53*h z7<`DNhmeS*%z*U9v1ly%qz-{ae0xwb0Jv>DlW-J2(YgSIQ)$oB}Auc5w8k z7|g%5RL2C@l`?HhP65}IGHt7scCIUB+Ey#=Tvy8agJbITr8FX;i{B~6c51Y9ecq0C zme-fsqa-H8jpFHk_+3kDv~zuFSrqEze4%*O+S-qG;!sO*SbcdZ?e6#{Ck`xFZkDqM zdCqiqA+~m(r%U=|PSIim2Qad@kB_0jYQt%FF-g|4Ptw{wg!EPY@G-NS`EKSXwuD-G zrCA*@eK86{mx8?F%dnS)`FzP{RuT9Qx9(mStLuB*XmG2K&VSmX2{yaYu##I#aV`mO zwV_4V2bI7)^*Sp;&zI-)lzZ;WOYQE01%;sJ%S(&gw}T?|e0iy{DuRNZFE5>OCNc0L zCyu)}m(p`OUexfkqavxL9?>jjzLTKTaMM%YRfnBUIPj+{rq8<)7dD={5C=jqo8p{j zb}Dl&y0=J*_g>bu8FUQ{V%KKSwVU&<$&dKvQaF(STe^00i3naN%M7}9bBP=JLXocB zTv~N@?N(;)XVTr*Xa@G$Sm6Nu zx)K53>l$0pzRknX$T@|`>teH}(b>?sqLQI83p9Wg(U=7quglSpXZ7n!bw2^CrL#ce zbtPiGU+c;cZq;{`I9IjXi2*(Yo!Yb6qJHuQuhSrK~Pk<(Lt=XaDcGtq45c}MBw zQ_R1!mf~~%CJpPsT(u+@?y+*Gs!m}5B-a$K+%&XjkW|#7f_8|CiE%D#2X_$2is1gH z9CtaozbWShZYrP%FZ`9yF}&RGE)l-=zQnc@1$v8qyY?ww&_s$I1T*~RvOF!)1ou0N z=FH}AAui><^f84_9N=g@gN5IaAI&flGPUat9f zmx8lpEuBN>?=BJjcE5MNj-P%h?dtf8|3T;3Us=xMC?HYtri|2+QbBPmCWqaG9|&Q7 zkG>&&azfN01f7Y5s6&YRazfN0#C@fD+%451#C@eRR@DC12{D%#0!f5FelkMD@nUgN z4(F+yd(2E=TDiN^=lhmpWCLqDpptRITnIoXA_3+?fcNACmh zc^**-CBhvK*j`MVbvyD#a-oCzIkA+5CkS^WLlkj^;?Ieh$h1`IY3DWvp^b^0`ULv_KV5Bzvd8uVV?coZ8*d{~F(Gr%rPgNv{Z6hEV z=F5Xy%1r}W6)hO5RSfykcxBt#%&=8hb!@fX8BZKmNM}UT+&OG%CTz*ma0mNHgl<|W zM>gzoF2#}_V$sC@*}|oU^ZZO6z=?l(uiTPRBUu%(r(tnt$G+U$p!W>1Z*1%#IPEYj z>gHf{?J2UTQVU=O&%J;0@G@6CDjQoX94`f=t!p& zMI!~I+BY_Y(<)muAwRnj7Z$#@x$}tbo@9(L&f3(cmTkgyP|UE);avN9@r^O(1pjxJ z2yiw60@luoO!}iy$L1~b;ApAcz1AoqAdZ&sT9bA_5gq$zDcD9SqGKN|VH^FvB!8O> zbPtr$%^m-kG&T*7>+sii5J4r8 z=9k3_&GG$OvBj zWio6cLX&z|YxK$zlI2rnYRY}h&v_-Lk?4`!CKvR*q5o{H0kPM1bZiPNrV_s~TOExy zm0-__)>{GHr=x7KG<}pTjd_nys73I?IoA5^y=J|zD1q#}!)-o@DeVc(;{>3V!%vQ> zn9c>;hfyq)lOv8(#vLRw?O7W$l?B^k94w5a1#>u=4A%QGdek!LBVnR;W2c-OY%6LO zg$N*sEHkiZse#zxEL|MG@E=n?_`R^$)^k%kLHt4=bew1+T9ho z%^Xo5Es^5xROw8pUjJ4~XA&T-17{uE=sF)VjmkAeWY15fTr2TN8)W@Y>DEs{;*mC~%l{eGWlG>d(bZ*&5amCm zE=%j3L3lx_>5FC8dSy}jWr=I0?~yTQhP2-6%j{uqOO0Z7eM;mt@t+@QiTAPE`KlSF zFEWrBBF4otF}j{Az7*rkl)z1&IGh6<&_*cp#JPI(u)_JW4NyE4z=9aIP24y+dUagr zgT!P0Ns`EQG@HH%Q|6ZN9L0PW5=ROf8D59vkj9NTV@J?3hE8XKn}i?b6Y^A{2!In` zvx*&-MjQ`DPWDlUNH76Z%8D?-_2m#*&Ra-&eL2K~Q-lewFXJPx<%uGz)%E2Q+o?mJgTml---zM-7HqFnOYc07DTnc)7DIJV`r#^OV1r|0 ztXl9{NJ)c(i|`3q zInk^|Fb>jshB-k&+{k=#g1V&~4sCdAq;L25KZ-ElEn>bu)TVZZM)J;by1L`$icN37 z!YB?*vEnUqqo9yX7cqm5tB|^I4p*Z31!*#f7dICn^brcb#l8 ziNo$Rikg_j7hs6}tx~;*{Sy0Ov;6v4)eI54lS&Mp2~g92P)P0YLr444o2ZbFFl4d# zIXdlwT|A_=5fwd{>6~55pFw+LPE1Be_jX~w*w@vIukT*v{|}N;i#5!d6_KiUmcv;H zoC{;$StjG8i&6Q0-B~6~G8B=jca|5q7Z#O~s&|%`tO`<Q;T4oq|XUIBYlI@k;m>|9=}`9#QTE$y)^?FjZ{nHP^(b z5R1E%r`&vQy)_fEQf!rNBGki3C5J;KZ#Xm3+MeUbr3lpbs16J1u!TOzWl-W6HSqle zs6oE&I^@3OIXpvFQc3$cWdm^oM6`AZX_#K}d(fh0)Z0lr8ku1Bkdj*L9(FcB_4UUz zA~{&V>9YLjt~VpKM1ZdF8QU$BT%4OGTD_oVP3fV<=vPOqOISN>?802Mjneqxy`*9^ zM{J#mq4;D5AU3z;vWJEQhk5b`i8WtkCg5YI<3mA)*x+(1k9D_OLQZq45hU|RY&13>27iuxFl36=Foo`3p)|l*8ej2VY>fVj)f^v0 zu5F&OQCKIgggt@-Tx?9xY!#OWy&tn>fg#?YvGcCOV;+fRYYzSi@_(ENP)t93;4sq) z%8ki28@9r$)3dS$wuFjBvu8%&uv?wFx3;@rBe=|{r8RRHyPB3V_;EsL17aQq8pcqm zE{RQh$9sL=%ApZw-{3^y-sfS~$|R!P$_hqsTRE(Ta_{@(iBnNdop#rVO#$m@#LRZ* z&|G6Nq-!e&F}*}Le%y3D;g2!PM3}a7a6_&wI$5w2di>}Z2gjl+%ar7UeQtzVF5@tk zSoP8waEu$i>`YRGaUi^83a+O!6Xtzz5%3A`tV0vi(i`IF@*0GWhMXWBgqsd+B+6vS z&nPY}X_7x#VQiwboQQ^j4!6uKb1(d50S#Te5I89k*erX?%s+S;s?ENkT_j|muG&P| z6y+KCnbC$R7R5TFDJwUF?J_-E&t+C%#fj^=%nBdN6;+uPK2{E?rC6P8c_OuxujeJ! z^N*E}Ulxn3=N~JR5aT;CkIs;$aDN%|=$CTysIOyBnQ=6lrQLqddJ#{TpTyIr=;&ig z>64j8eczK2QT7J98i^=B=KFIZ%HD8)Ik@^j7KnI%IT%JMLd5&a!7xe@BHmxdFnXTR z5J*SMB)nf`=1aem=ol02`xwc;76=hF#pWK(QB!R0(R_U6UwgECoLiA*r1GylTJG>u z1&W|{w0zn!OBXvs!SA0h|K_YV00dPaMpVhhOfgt(cnhkZFNY&hilF-WaCGeo=RvU^aa9=26wK);%(F`nY50$Zt&1Oa`f&K2r6{dulg>8l` zY!7M6ZbM@hwqg-TR+Rl`X1)5Qa?{s>{YNfFUn*n&k-coD%nM)n4N@L}P#%a*d5Tc} zE0OXPY5gma@)V)`S0d%*3-#5fi1IT<`L9OGQvwf)PI-#Z>#L%?=ryZe{pWJiPXfK< z3-!-s!r(54Ub956N6KWt>+>_>!Ul=8!1OZyWf{dw7E`WNrrb8>8MisSGAl>aT57(p z3<7`_ARtXR0VzV2N8&7_2s)3H+dXjxMF{vvnN)F)NKVeup5XhElMm%`(za|*nV3{B zJmiU$;whApc9fdYNC$EBGtx*Vk?-d;(l+b+QAk1)X!QLkBq<_^z8{4oMI_PpB_w5x zp2ej5fhOG(8KY-u-u)oXJ4!TFEW$@t)a06_4cWi`1}7H)={FE#za=;SHBK(xg3Q0h z$wiTV|7)CF^6>ldQ#83|X>$EIPA*E|LD44{Mab~uIJsumt3NF_-B593v>fApT5efb z`wy}2Y|XA;h<(2^iG6*S^prEP&%~$tEYv2Xo74hB({Totp8LR3WVC(}8JZ$w`bA`D ziVW;8B12Pzp??t>nj#GS3o*2KaJG2jvELvM0uWSz7*SOUoW~*$^48i5ODjcCeJt|e zY!byA#r+7*kFf{U1b6;o%OHwzpY%BTK@D$o?r_;g4)L5mRv*k}97rAU5I?o}C z3tI|=yep0vZEPd0_!J^wbV9smjHOKnrfhIXb}@KxbYyg|a{BA5eWQb8=8(^V!G0?? z#bQYUg7F~|lA>s1>JcC^URYSm;E49`M}pyk5BFoTWkKC(;UKC;$iIS_d;{$VJ=?=Q zY628);|sHlp@nrBTW4L0@Z&9&U`eM4BivF6x-~^u_m)aF$yQLD`=qWPGZmHl# zuUXcvS$1pXH>bb?5LAH}QPnKFwGtFq-dcNMmQe)NTPs0wIBdXHIKM-X! zZ$b3~l^~-jg6apNj8>Szhn^xCJx4P7Ls3Rk0uPEVqbWj$4@pMfTwG);J0c$kzWe2I+zmhH5jwRe+>b~unF+aPxM@~uzaUGmsX6EpeiZFTjcH9pqFpaaM z>x?)!D#@587p1jpw>w~qs=_FoC!5$#nr~?!N?LA*q^J*ehGSW=gkWAb#A?wR*1j%tiUVRB!36ZCMsiK4}qE(vS1Rjugk3A^5z$vV`hm+#vFK+yHxRuo$ zBwnzb^3K6Au4lcL>sf`2J$ljMYjkg{0)Jo7_`O0Wxqn=@xh@IcEbUUwAWI=8#Qj*M z=GTc(lq~&trQB(P%F4`U9(ZD1d%z_9cx9#wMSB2|B5^)h zX`5?CK#IWnWM!V4)F}e#lNC{07+D`Y9~RFs?@a=t;P7r*UT=K^+!(h~v%ly}QpV)6zLMh-_f+l=F5av$_! z*F>nluLNfRa5v;bL?T7H_V<<3bZef7gh)GDNj-p=5=5dHA<4D)XbwqaI9jQD@G+Hv zbhJVm2!}-JGnJ6EwytX&Rg92ypz)bXaQosdkUmqHb4sAT4m3VfA!)5c;?vJoLelPf zDyu%l2uW7`&*nJEs{h$ah!3PPkUpEU0ChiCNj(^|p2`SMF+!3N{&P7_GQxkZGAHtj zjPRcmgE~&I%jYX018v=HN}G98^510Q zPWG*ZTVrAMJ)noSozbkToM+!Vrd`jkPsPMB&Ze9S=sU0nK3g6k09nyK}8+M^$yP_!Sc&#?O-V6t;6?9IlH)# zPnk)` zdcT&$Jrr0+2kFk^D_X_L#R;FvmtZc6vAY%IYsV0?Hden4{6AbE@UC3E%2HJ^OWj=S0? zNIq%Me$62&BNwc}0%-h&cFGjh%oRs=X7I*4rP3G`1;`00;#g7`1dr}|hci|*E+U$H zm{5ysG%%qsWiu|f%(QAN64ZSfaq^M7R-{gWeln*a4}yRjC+UssZ%8I^SuRiW#|UG! zdq{Z_(T$af4WVrQqeTM7J&-$R3Cd3LwH`1wa$P7w$|!@`0QAPWkKA`4@-WJP%Q?=S zcs$Xlaj7xFh3;!&ZlsKBvIbLYevsXHmM7sm06PIgwD-`aCDTqm_s9ND`PJeN9FRPNxUJ(X!wTry5ntrKTGCh?t zwQsDl5&HdRb}f{p;oMa%FYowKwb2_jdP#|4@?%L(2i5%vbu=GzMp#aLx?(K$QOkyH zNQ1z3KJpRs699Qg!e=hjOqv`qk50J7q@>bVD9VsC2(DI}7K6YLCXpoCL~QEkVmVIZ zOy&zo18>TPt>UX~6@TV(&OTnCpphV(t%BvZ2@20;8pkE8Su(!EH z@+SOI0ma~%Sp_Y<_|oNnR3Im7T1wGRMK_|5y>T7VGaV8=M5rNYl?_n($2VWzfu}01V#!VA-x_p&f zlI8Esggf?R_knbEF3Ky*L*kByY`<}2huRv0dlV<`$w?%dFY`A zg}Gso{PJMcevL^;Uht@AtyS32M+H)fH_R*yY(VhT(Ph-1MQ|pxCK84@APn*P)Zws>4cNgTOCM9yqKA;oimnJTH!d}Flo;cIb{%1mb%4nTA$o*^ zv$liG&KLy}bH(TiH|tCD$Xu6|o7nV+kepa<&ov!@l7e&)@fVI7xs(d|Vo@B16MCt_ z7$V(e=7FgB*vWcvZ*lBozqq$JcCujHTO2#tuJ0|5U81qOS7UeYj4*aQc&J)l+HusG8=PB(~F+UZtHRoh4!&!Z_CNxUBdl}Ay=`tn?jS3-7i*+8&C5L_!$7LBp#t-s$ z*Wx!w;L^c;wsL0`jNP1Ea)gB^VSa@vNU@{`I5Nu;dT4a1Q7*WG$Jx~7OJW9_DU@4c zu_s&Nqsg6-0WGv2;Y3v-3jP?EMc=k5dO?F0KhX|`LDu?1j|M(=rM4n& z0bjY2wBOneX;aAvoBr=hXi(rI9hOHLN>$(v5vHwp3W}rQ;qp8-Jbq<GDQ zwAp5i;i@S#_K*^b(Lg+G9lF{E*f=+YZD#5cdn5AqYgl`-tovGcvxNm&f-eL6UNcG9 z>b)^^zsR_$LL zUSxwXCe{l&dzO#Nvc?9~h$|!3nJ5$XT=4<+q1za-OlV~6ZTl0dMBnhBY;-knztUJe z5oBNn;D{Ht@$rLfOq^f+C5V#FGmtVQmqety*osKU$S~;zGJvyADslNtP>DrRt7QhtmLMfVJxkX4G23^xzDB#JHpJuOqq}sW zWH|G(kTJ>WtQBOatkBSVjRY=>zYNgFgh(_KZ9P)T#J zfCp&E-JF&gIhxLj>_@*|ZJQt8g67w&3;Y@}Dl=wZuX2r;_M`K(AN@u({c+fjQl|Dd zsssNdNGI`OTj-`N8?{jI3q*#q>uZ$XKHEU9K#J)KrUHc|lj&VfA<5()6)7Z{{G)2P3RV=-A?1&%qzCxI4N2`(dXa1;q#5?P*8l{Wt!+^5Tw`kN@;ji@yKM#~)wY-qQ3>-~HP~pL{(0 zB^!>fHLpLgO}Nx&{p>v-UG%2xRp-Lmf@1GD6zkK~8smpLkFOm!<&Dn%#)mo=*G`=D zYNOrd7)UnF`+mDhF}_D!c5FJlfB%v2U}JVlAzF04s5V0bpx*=7tm+L0q^E!2vTfT3 zdbe%8Y#J(c)D}#sF>vYjo>lD&$Vfc>yYBYy=43dzc2W_c-UB$f5AR+-?qe=2I$sH2 z6nlNq@PS^oCd5i#tbAGHYp?j+S3kI@={ukJ;G*mJ`B)7;b+4ns&;I@W zi<++c*!vf$!t9^D!GEamc=D!yf8QclsOhyo^ndmHy|1$0*WK~ZJM0~guIqg5WMl@f znTX7bgiIo21h`pv=!gDZA~f`4wouUz`%8q=WBfFn^uzuPC;bvm{^;??g%iJDBAmjr zmvkPO$S~Uw7m+mmLgdc)b@K0DyJyk2U*5C+yZ?CiqF-G42OIAHn;)O|E`HCtfD3s> zmp3{u866wh-TA>U-My&I9yQs6nzIL9P zX=-||H6uzkJ$Ki0JE!?-E1~UEzWRue3t#q@ znT7&u>ho%qs|QDRM?!m{`z5s*?A0_R68>xICv{D}2O>z9Ah#F3^4~wNA^4vl+7?;_ z3gh`F7=jcigh5)bhu(?MX+e(f zXfaYG7a#odf~E{p1)apt~h&SNTOv`{lqDvMMqsxuDtq94@<6;`&#sc7-DTtZN`3AA05Dx z%BDNtYcMK(ZQ(lub6%}x)60P@ng$Dwv?3Ze{iT7ZhM5)txC%O|ZcGJWI$;Fx*$)RC zTJ0MH02zkhq9-DQI4pktox8pyGR*F4(HHjh^J=s0Yl|3k7$;BZgkTs4M?l|t%VnC* zeKYlKd}A~ncg}qxnubw~aPIzJ|15;+eQn`8!)dSvi8=hJG zW_2%`h8wf0tNLmV)S7s9t%bZZBWmEuSEcX0`ypZ3($}nS_1(l%asX$qIW_>FxX%ET48YlI1YmuwrnF|OyN?aR`|magGy7Wos{)8)MdE9(HV|b8 zkzt{vYR8Jj-`r#%=Jd7tR{;wZjunf?Z!i#b2jN(3thHGpw_`=)!N>kVTcl?fgCF$U;i%yQVl>H6NHNAlsi^b{^8#Y%4{Y;0hbKSu_E)0R~nf12*$C2OD%ca zv9ZWwfAIxTB}GOm<6IaUH{Tx{grn~^2uWY7e-($(E5mDF2?X6R)6cO% zxZNSl=xec$1mH-`U;C z3!L};=s^udTX*-9;4sZ5xNlZyPimQZKQciHU-jgzzwI9%@YauUCsWY4S50cI`^j7T zhg<$Tt#$VmTI-(F+Uh57?a`b6JFTrQwzhihCADU$52LIZzgpe+?EiUxvyI=c*4ZPp zwa>3r_mA%t+$YsS-uS&^0v+J3{jC}r4;qMIPt`3<@rFli8NKT##{@ZpCvu3*rzeM0 zh6wqA8$NJMlsbtiOBk&>$vyPUXX$Onx9zu`wlg_&ph*-@Byi8cX8&w z9#0B;H;%PhgtL1?_Z>QPaD44bjJ{Wqo0$}A<5B%%WA8R$kXV6vMP76(Il1f`!hwd> z0v`#*PRK_N0bq_Rrkey=O zzCFqn4GHShdvoW5FwTt5TVw#Y zuIQc7ol{5kh&v9%Cb~Z^c!paH04H7?*znYx)1bwE`F%M}IIb*Sk*gyXMq_+*&!MZu zCV_+UD_luAEyf}*G(IuTML7D89^ho9F>pa|f1`if=7CGr_w_XRy}fVS#e~*uYHYZa zmpzS*+qPfY*L(g21C0x|ZQ0b**WXybbrVmw4)pbI*fFrJub(i)_5FO>X>ZnVy|mHu z{Ox@`{r!z?eU09Wwr}A~q5=56^;-ved-|6*dbe)evSU;4*7KJ)fY8{wZGdQ*-ivy% zpfm=yEw^T;e%IKxxp7fX-^L37vwlPGmfnF&t-;N`16W`B8=JTF$?IzS`o4kQjXSoi z?;|3;kLdEAhI+QCw}0c7^}QGMY$9#-R@!XzT->vDpwWN9`Yl@~b`*D_OSbm(3HxF< z8ykASa{Y!aJ!*=kF9m2{&&C0DDF3w);(_26yqxSrhF{R52QsYhyL5Q~+TZj4?4VZf z`Ynx3>n~b=eoud6$&*oqf!VmDuje9R4JrC}Z0H~89oR9@(>Qbq_Zs1Pw+{65_3f}@lBJCDB~XU0ujkuM zM&WH+)m!mO&$hlx1y*#h5m?^1t@R>^QdDmoC|09Ec!hz^``OsqbN-gz z^Lw^#>=8cO1m=?7{+^`_STDGpFPI|pCF^MvMxkMGBzQ4I`dwgMh|G94dN()LZ@L&D zn__J^puab;3m^6G*myypIRSPLCXMx$I(99GjR&qc^4wqyMy@xOY|s(HS#-JoR zqSAzooE>0X<~EaF+MGuL>CBtO(}YInE<3M`vE`ldCM!wb$@c47_vh2-3;--7gS&x( zbUe?Tbo}WWJ*yM`8)LgxI>79#)BQLA;|mhqmtT}&yPCNq2S9V{_v{j$`&jWUmcfq& zc=U;ZW;tUU8&5H(1qn}cE5SR;ZmFjCc8E@3$Pv4vWE>YM3o=kLoKXcIgnORJWGVu7 zhr2|C8Sx-^R#NS1)?LQLmeT`=fP{;rcfeZLQ@%lt@ zdfpKn`dpH;9x56j+_Y{nFtKydk&NEQ8(ZxDr*STE2p$Kb;Y3#i;Cq|~nP%jH3@7Y_ ztMNATRXz~TRwns0X5Brz>6ya2<+OT9Kc7=mf{C?F=O*2&8~x^LW9dSiPbaddIP)q$ zzwl5HCqXkLSVwestyXF#F+*u>bEh1An&n@!E?s-7zo@8Ei~mme-CFnG(0twe6G2IM zJg4coiLm2R>e6}XNmfH-eNOXf22#Et=cUg%-CqFmytLVW>jUyZ3J1KBOXnT8IDp*H zw8=pNW@7+JtaWKa^C<>W9vU0d4X4?scxOo_^kvae~tL00Rf{M524sp@)0KvyVT!0 z-#-9k|3Zyzsw5v5H~m(k=SuNWy12qYOs!0Q4|wVlNIRoeQGr*Nq)KdQC0e`${}`{x ztLLW+!Ye$~Db0x`Dn5VS{7{j?rCCM1ZYafy;)hGA=uG%KO)vCbHrGopAoyK`Yo^BU zG@ojO(|zhMNPp)U{sL0GAf4gA0r~=xx7i2u@&zY!)?OnQKf1ZI>2RVuoY(ur3dR#x zKqt*Igrj2SLgZ#KGIEL57Y?`)zsywm^7u`DL8RdpuZsq`I!>ZPiww7aXtzXIMB@ND z{>TwYEzna^p3=@1W2Z7Hib}gkJODlU%?lN*5-*0*#kjmR^Fjv`URE5wMyR|u-RIX< zQ-Uaa)1k#8y*|7wey>-v`KuuiA_RiaPHg0!SeaJoWrM>e{BKo7% ziaN}wm-a0_i?3<6g=Viv_m>=2i~4azOMu)W>2qayv42ZR=NSIP`ldl2DR%@ka3iDC z8cTXtn;%PjHnQ+|N;IkA8%+;|CXIBX+`?d8E8`bfIvAUzq_YoyV*N2Xm0nan!HK9M z4ZWzmATNXSi|n2qy3c!FkCo?Tuf@@0<=J_e>SIPcuTF8i+?Bo7=i`Oy;_Pv%+Yka> zf@~aD)H$`9wU(ARW8u;K<+an*mVgEu2~32D!>!Gc~jzRVGBNo6lZxwz}=P1 zJ;4i%%3aA~t>tMmiFMzcv^u!fBDhw-@#d~1yaOCX2iFR?Hz#!m*9y2dM{u=z`7IG# ztq86LINrQDfYbfP6dha*aBqp=YJhu71lLwCzcp!b4BCp|+5pF!w*+vy(v6~n)BVA3 zP3AauZGd}g1UG|QT_U&{MQ}3!$D6kXaLP4K(ZT6rw!0&^8GySxf}2?{-xI;jEP|T} zINsbHz$t+?MF*!m-}gjtGXZx`1UIW*ep>`Ls|aou;CORS0H>6}6djz>V81Pbn+3SH zMR2o;QcIehcC(A%W&@5lZwug*{gtAFQ{vxy6Vh0Vy=DXM-UzO}UVeK7*Ioq2HT6~A z+#A3t%_T(#ryQ-n2XM;BM$y43S>=7nY{yQQ zzTX$YapU_tBDi`H9M`8;d2?R?r|Z)xIymL^dPf9T2i!X%IPOh!ZEL~zHE`Y%bJZ5(u55!`WrF2x9|)^sxtZPC2NU)Ha?@{amhVD%07!fL$6@WHAkTz)*&f8VA4<}$@U7eqNav>q z@$H9`)bm3&H_N4fYt!{0zWrbMTX_rA%l06?{gb?1IRbEVx*o*0f10lkQ zmP6L*eZ6cC;@dyZ-|ASNi`R=-{YBocj@#>Hdl0|<%e-BkqSwpzKtyh-SN}R``g9;N z>Tmh4BavGm^4}zE2SwzTKxBI$uzLHEB=vQttzK zk=c=g8l?|Eo3KID=(IM=u^~K&U_Te}X>FF%0%^?jAin*4lAaO1l|KTh$@Cz;eIQ9s z4{zmbz(w175Z^wSq$|T)c@osi_CP(Y)vFIBOg~gk!)pOydmylF_3BrWrmqID(i*-J!M5??KgJK+0$6(>uzLG{5_XZIQd_u`_S8=PyiRGw0CIZtCpyWi7nW1!s6`4WapZHaAUJn@JwqA(9z60aSJ zA!pJ`zLB(O=cjvk&}YAyq`C*xt~Nz9Qv5~|Z{<_EUmi3|Rab33{$|qB7K;%3o5?I~ zIR%TCk0clp92WMeD#dRm?V+|}m3R-! zp7fOK0fEJX2un?WD~H9-j$#Ij(zlZ|Uf(K<6h#kpNQzR^wZH0FXx$iehAYK%A{wO)# z#k|#^-5(`O@O(DH0rRImzeH7W4aKbQsS^6~AP$1){L^H<-)Ka2VEr`VUTlX&=|7}p z_y~z>C_2~7OiMuekEAV*h`8oIlEt2blDGD)<)F0NXMUbE{W5Tk)b5{0uHm{Du6Bqc zO$mf4{ycCE4QUs_Ik(D4T`Q!9}o1$lharGSHONeIs4fLt^)%?nl85&9Yt^*faA^Mi8s{& zIEwSUBH*q|=eu6j0l4eZQ_nDPCvbH`1b0Fa+zEi=&2^!v697li!JPoO>m#@m0C&B> z?LcmF1If$Mrq`rN$N7cqAs7I3C3KX4c{HwMq3j172k4AI#|aiaI(bRcj^<@)%OZ8A zJR8YSDLOOVDPvYx8NMYstbG^4m@%^jP^vuG0VQ-J( z`&UnT&-eByzP}|+yF>GG_~Nxa`HT!{T+i`_wCPO@&{^1g_YIBU=;3L^qAP%zX$E6} zMmUz@h{&?e*1B&>NH6#6{3-2pOhh?u=Xz>M!~R5#;qTB-!kj$*F$vnXo*E&-Jv6z@D^Biq}&sJlEH$5?qv3K%z@}0^$}un6;CW^ zl8@B5gZ3PN6&v5?qcBHlf!*m zgnJSOnh5tK;Jz)=;UwVl#^Ig>TnY~NB;dX+(%~fFzAcA)Z-m>xQWN1efO~Hmj>HJ-J?fdxU#3aNi#3dopl&<8V&~E(M2sGH~A> z;hqfKx94#0i*P%!-9)&Zz`ZXGCsCci<&DGb1TF=K+X>wJ(lx%@?*#6Bg3Fr8Zu4Df z)BDquWu(#~57PLc14kVe55HhH<83!Si<9%!#BK=Z(7tfe+%OI%4KH&#Epuzi2h*kx zvoK3k$`JLzl>4!)z@qZUS{0;4&1sgOX?P%EzsU@;%j~v&a!*I%Lgi+mN~_1DrPz>9)hUc&>(R{<6V z11#lgNF_d{I5QT(>Tgo+*7mx*{79M_Qq)y56pgYfQuiY%Z8{{i`;m0UIYL=)OY()) zqnXdFtzpEug5l$-yg56b(HM}2%cL_+IbH;Lti4=VRO+<(agkhVJBj4$)la19r<|xN z^ZFBM?Kt6}A`Sjs${B%{bQSGH(jUd#_4NOfX?Yb@JTtu*hzEa%sY?vUSH?m-a>d>r z(99>(+Jd|Wo&6*?eB}>dq)(Ep{x)!xL9J@;XJiKTSUqk+)Nn`_tw* zwi&4VDaxnG_ToTQrdb~Ne!?n1@=t56vF_?*vHbTbM~l|oc(mw`th>Mf#L={TRt8gp z$bG`C?U{ zJ;^(%^Xyt_{edI(<7+J%+sh7*jaUR|YhSaYBZI|EA_T;xt+l#Br;hkO7!-q*8M41oM%7bPV5MpjXu8&_2zP((7v)g@96?WqhFPY_? z;3zBy3O{HJ)*3tdw)jHfwt|?aP7ATjOJ-NfVFo8Rls%8?0W|R?JFRI}d#yW!I2=BB zaFn#X?4jizyYlb>{X-@=*|C&OC+;&8Q)8*!h`$*bK17hs;RCzOl~*|#NqK8mj&R>b z?kMYlQD*rPYJw?Lg-}Sb*;uup zuNpiCBtaYskQQ#&mA?|X;qfJOwaYFsE8^yT7y3@9LaoqGA)Qfn^^;(|{Rlx(7Ox`W zI&j)u0tw`m&mT=W&ZJ+A4~)KszCX$c25E&_uOq*yr+;H#?{>lymRgGJ04@-|@V%3~ zfcBavLHm4e*fC@b<+aalJmcWbF7SRam~cZ(#FM#Wwv&&JDhBxk0ao4C7%P!Fbn&8;{s!W^`F?D&0X zv^YUM8|V?Nf_s$QQ`W6o<8+%ouKy1n93D5loV$BQy6lC#%}p#3k)(Veks^4FJbSZcoI8Ex>6zLUn-CGQ>rngxwVhg#QG3L$ZqP>ry$N)u-Z67(jSKs?ZLQhOOim}2aaas_s4ZSk0uIyOvlt=F5PtUOJUs5r9y5JZQs4*VgOTd6{h8S5zF@z}^9gnvY)kw@hCU`5i!nEG)P#mVjj#e(lG&c9MlHlVk~k>K^aRXw8&yAMzs{!F~}-g6tXc&rBC| zd{Ti=%=?wP?oxT(eXbcT305MdAQL@HJ6VtwQxu30{xel83AvjCS6YB;m>M!v>I!XQ zZAo3z=v>*^AXHcm@L1PP0-6ws_eh2&!IropyObeB%Z6F(nJy>GCYv7NQxic;V5MQE z@8tp!Vy&{23fUN4&ZSTTFoJ!aXVnxhH1OLU#X}$M#nl{3W1ikOSR(n68fpmdHn9s;C|gUg$#wl^Z@y%dr1`o;CVSiM6S*xgtut#n||WjhOXgW zOA?@(CMKy2UdFb_9F7Sk{g8ZJjSEJvmKU;%TnNX!+NV2Kf*{A&dlz0BLygN7VSV{> z|96}pvH%jeU~efY7kqY7Vi+s`>fwVBL%0D)q1uYC1;zbb&gb*kTBJKsj^#I`Fq?JU zrK1^c_^J_;j6ld*EM|?*kkZ3&w*v~=GCJs2C+k{dgrmAodmg;(i^t&9DL4SOOh3&H zn=c|7Nq52QDR7?J#+)M}o+ZBBRu_M0R>mCTtymz^5MV zD1=2osG41ArF{-_o;Q=$Elsw5V_kL=5a0L`Wndzcb9;zhXmLR83%tIxvEMQi=za-n z+%{8_?&Q{`vI=E{>md^JS*}Z%j?KHiT(2NmkC+)>f|fH7%6=f~cI4ZWRzCxwh=KR^ zgfoy!Oe$j#zJr}<<@)SUp_pTczQcW)dvVmVix~!iLu;(_5MA6JTr)_U83rfpuGR7Z(MrWIJi}c_K8| zO~m?GZPA}=uW?|vxM}6nrs(}jVqhkSr%lnnZX%9sPxQ1YnjKs*i@?(fFqG-zX;bvm zrs#U9Xo}9P&ZlHn=Tn+8 zetF7N{K92ZTuG-Zl%j??+B^o-+h*03Vc%3Tuzs=LUb5Z)2g z+ckedrdr+ETkDwIn(4Gg#3|?Z9Z!7L-*HSTTIZ|MT6qAaS;@>rzo3NKZ?a4KH3&*L zT_V}wg2@N|U6vm%T$V7-wFXtoIy=6wME%yjP^z!0HHSF&kY)V1DS+HrsV~;6_ta)h zRL&MwEMMN#G-(rfvu~zE9ajmrR`luyXSE}1BZ=f&c-PVw zO2x5iwLzasvdLqG5`P62Nmt@)hDVDYNQvj>hMB<*eVOgC7q(f28R6l@Iww` zl6ZZFu6!W<_Vc!q_Q~(guqT_g?I70^zO1uqHG8mm%eM6cL})TnnJs^m99Ps@vo1_ag?wVCK+Gq0K{y^`A3HCoRlVEOHngnh zvDMZ+Zwjd~1_nQ_Wk`4zfMT}(OUab>{L9EnHn6RmsW<7->h@&A?@hlWZ`BeKH{#KX z`YSi$cDA<8{!4_?vF^P8eXVZ&2g8mpDWB?tlZVKF6lU#lUv&( z7S00VL7QzL^X+sOLCj~y-Sn9pFq~qW>B&c>@oVi0Cv0ucOuJ^q?JHZ`Gbe0q&uk6p zwRDP}DWm~TzROvUCXF%EFw40A3)rL07Hwr&EQ!#jqddrsU^b0ksf z=HmHn2AgqPlP>DmFafqY&BCKB8@9+m z)ZvTgHn-JICHoa6{2EFd%JU(W?bZDh`tSksBcVG=tY)?NYD2j_FT+n8=FY2~5}@#U zQ&}`AK=JD<3P6PHrjWf&KqX8z(e=&%gyQD%+>W_LAa;vJ0fty>b9q*Vh%&%!o>R|Y zK+Ov#!{DI!>@@`#;+zW#FqGW#0${|>z&#gE?u;&cnE*r_a$%t}md>)!8MtK2G>EM3 zE+8UK*it}5`75`8NE{p3X6xj!u?tQnV501kTMJ{Ol$BcYo`Uu&#sp)FCW*jph)?6-%bGxLH5*BV3>;z@{N@) zpSK_b(@tv6>A_6kYK$z@%fVn;DeVMIq{^InY4>ER=nA9>OigSiwQ{PEU97Ylszf05 zdTGyeKqg>97$3EAAa#K30mw#^x%dHGk&c&$gTG`S*KOfC5nScuk>Tsv;K*{01737^ zn9C&1p9P=0p}>w>Zj!Pj;}y+y5;aRGE6$PJohK4(xEYTN*8to}JxFHUXEGydMtTc~ zq(G3ScC`#{jcfLn7*3m9`Tk zuk(+54FnCHJ@B5@`KolhY^yUx#OzgRHI~5eD%M9E7*o)$A|1zR2AEgZpt~$A0G>Dy z4j&z@d`)_lt7VW6_}37n>JUZTYi7CH!aF*A4Qfln;M0q1Q!Riw;%?{8P)F-3Uz=Xz zibCxU7S_&i5b8PME-p9=#;}T|Y&lNRM8U^+>DtOK>W3QYo|a zOYkYW*L#Gg&kaesu;X^`lAR7n15+Pzc9L3r`2Zd5^79;g0FR+#PNOj;$rp{}rR(rl zt!rF6G$zl#K~!!vWfg*3SMUSVrod*C*cc_V0-i5%4<*Wuw+D|?L^9oww0OKNMLd*l zNERH&LaI^2Ip?KvoH{2HTe!f<$#HN5U(y4N2EI{#_<`iXcWpJ-GG0r%+yqm)3}*F+?cQ* z2ybcW#)J()DALl6O8s-HwM2;XO&Ze$1uivTS|Of9fkq6xMN}wGrHR%}5`)CmiSmPfBAc2H1FNI`t)^vJ$WY z`lgJ^t>DFjh?g?Hy)tQyoS-zUuS|}Y;8#ZB>Z_BcJJ?km*O2wy`6}Pv(TFk^AUw*i zR=zD|8cF5u{2KAcoWeH+Qc(evsPXE=6PfS;lz8AMQ3T#=5`>0GMG=%lGv7yxZ6}S~ny^t@VvP_Sew(HSi+soT{N?dz1(rTj*6Ts^^-(_28?RjG7)!eOE{$%a;6#qmJm zQDoa0-qOMwmEG$Zun5Ve?@XHRfkhThKOTWcgyo$H`6#qpmBb@=iAU63#aHJ>#@UF-t6hZ1PF^Rfe64~F9upZ8v0N)ON!_1%#El}yM#OEXrXn_YV z1t}U37DaWNA}zcnVO11|l+ZrPcOMIfP?IsBs&fcMhR};J%gyB|{v0;v(SWX!^b!^w@ z82;`Db>*2tPse0_!>wA{Ku+us-IP1!hI->pdBO*{aczXqHqXm6O}jYaBkU&;cAQJQ z7)*r*9bib=EGeNR-UTfE!bbQ77vaboUA?Myu~ib1Vdk-3KwwBj;$NFvJYY`npc0El z!m4MU;w=RJfHK?l+Qk^v4<}8WPk?W=qhDAaw`NBfo7!RZI}7hz$4>2}1uKXe7m*^8M=kdr1_k#P6A5 z6zg*{_oN3lO_N;&{xm$MdM6!|3sT3gaCqwcNJ@f|gTvFFb8~PW!Xblu(o|2Ci|mr< zzF6f}0p7SMP48rNkzV(OS_PLTIrSWaXTk^5 z>^Ao4oV=FQ+O^MRk8zpifaQRZheB)Ltnhq*$4Ujml?SmV3Lqg%Oe^zJYUzt0`s4HZ zGFA3l<8!!9!P)Ue1iYeFkB=_PA4^TUo0Z z*{9_^$T&7SddOV7@Ws;a4Tq=qjA(&-w}%LYGlKZ}m5vdJ`*r;P?qkf0^QX^tkBHAd z?GZ8dv`56#9ud2qzK!$g+c=-TjdNlg&98MEr+f}D+A1$j<`L0lKd~>K(sXL@Nst=^ z?{z6*(IX;ret1Ua{BU}n7)L+drC~`^7NVe^{%~pT{Ggxya9Pua==`9c?=G|dWE*%^ z(_qqZSGmDDD+PLx-~uj_UUBu1Ifv!jIx}EuN3*?`*lX;7dj{=l#k|1B7RSqVO#T_U z9<-h4oUE@ayqU1=aRR$_gESG-;rxA^ZP55(BC7dnCkboVadd{tosBDpj$A!Drrjn; z7Qz$!LQm>)4<_wrxjIQFfJc|%+aDT?Tj|VR2_%}{#TC(n(<)kFKRZzm#!&2q?Ss6h zB&g7l4fjv^)_YvlX))XQVxg8LFD4k#*&?CP+Q(tC9*EfK20QvlpAX3_%|X6_Aqtt$ zXooC{L1d?n2i#`l$*3dJXg5uh+Bq_C(cOf5n1@F8bXi*Cc+>Z;kbIjOFIt|%y9@sT<*!H$DQ-^9YQWm>Tt6|i$PcTUsiM+QUB2$e=h&(GjD|3~> ze*Y|X@3PqQlKJ(l32rpcV(+dKIot~BrE{_Roo!ghv5L0VtW_aO&Xy3F3|jD=r6~3W z*xdppdYE(%?KA=R#n!3LF}=OWlhG9Sv)S1-d|>wdpg%SkM?e8`TyH{@8G_Y>)sRh;>Yv@)7(iQn0^EkKoS|u z!vK;Xi5U{$03bOe#X$xM4hUcn7-lq*rDvD5lFLC(vMgDC&f)FKvSs@@OXc`vN!Hdn z$d+@cdRz9EpVxkW>~7V1Kj(CxzW4V7z%X?A?H^>#kiYKR{q57~^y%(%PHTaLF2&DR z{mU{Am;A2F{F%sgggc-;nmlc`_57%M#8GWwklp>sZCkgvG?sMv$Maq13XXoooNv>M* z3UGgXT^@Fkm1wCV*t#UTSp7k_kK4}jevTH8Ack>jI9&EtRMk{)2X1K_%A|G6loaX3 zuP|7(o6A*0WSF!4dRj;|9B!~MZ&B`&Sv(!hObdtSX?7Y9H{xN_NZ=?uJYUO4Xuc6{ z_eCZ325Tv%eH6r}TP$bQEH2_IMpsc;zU1L=lScfhu(S>tXq{W}4ZC&cHUUQ$bs=sCH4dTt z_A;k}3OJRzjedxXFBBM(@~L<;i^t9u_l zPW-f`03yNd&2nAqi}yrWQ8Xy+ahnh==Wj!7h{36gPD4^tK@_< zYwa+SAk~isWR*F08G20)yjh^s{=P8A4vx-pUXYZ91qXP-@@@a4cO2&D&UQ~;`WP4* zNAmDq39Z%J@Rl|+a}q=DX?)uT&v*?Dg)_9WjMzC0nWx9^OOLgkgnpKf={Q48Zm)zh*YwK@N;t^cZ-DzrgoB62% z#gSdR-Z{hvK&n0I1)Ozi;pSPfq@Hp`i8Nn-$2>4vU3=Vzw3d%Z{9%TV`{SF1{rte} z05#+$7L8#4(W9N>leC5WJHIg`_Ay(dxwthJYzFV)QU(^HfZSxskp=U~yFaucAzOOy z@3l_1JBRGHHf^Wjva-?Rie;4yRJI*(I~G5D@}iVz=r z#vMg^E&}M6LmCcKI0xaZLD}`N+a>9%T)MB4oq%85#gih};o>QkOEh8F$lSgbNZM^B z%+>opM)Kyr3~OTNC6j?jnZn{=&+V8-(D=cHAnI%eTJOeszcES2ftBCLLsAQI^Ryfm zo+2JD!)MVU`agCemJGecCSoCVq$_i>6E}5*n>+v|?8BI&XV^u|)%mt_MwRTJn)+o; z=)a>^?JDh%zhBs3zt@`dAZ}p6xdT5e(Ne%43f}EZ1(8jtGBI04!diN^xA%gwSGt5n z*0JkUb<|J$f2TR)xk#ZP6+VO;%kdeVN3uYLiG%v69)bxs4$GVK$(Rl>o9zF;9aK`c zVy5|p)pigjQVOR@3x@4T{D4qR&ie=9v58T#CsRMsb6J)c3r>g;SbmtnUCSZ z;QzutL!1ZBJoRAk^uGS-ef`t>`rfDa^-u5X|84K<-G%ug@7M%i1zUr!f^B7OcC{`) zUH0u<+{?v2XIJvmMeZn56@cYf%*sy}xih`Pm!B@OCcVR#pPzD%+vG-B_^Lj-mYt6+ zx5&dBPjExRC7PTT+`##?=!4%I8Lk^2nYe+B%z2SsPRpHhnp|92vtN-b@HtMG*kF1w zfSr>_?&4fsO#HJSM28!JK*a@-#AhbQd6R~>ObQ)(#U=JiQ(T+Kah2>?x#+~RI}ro2 z9~;)&c6_+cI2VT1!vpv6tk1Tr`ZnhjH>(XsMSRXz*fa$5Eo3^kzm&a)T_AA`HaIeS zcVvWp;q2XPYE@lE5R?jrrV@rn)eTst8XXXZZ6-X|LywboxT5Nrxo2T~>G69-m zA9-&KZ;j%|e|KF|TW*f<3;+__qoT#;A{ zQ!^uT!?-`69M;=G**2uL$Ak?H`s@Qd={LEj%6vZ{l`-D?33;rbm$(Sqv7->;UH+qm#>~M<_-L7SXP@H; zUwzShqYvC4Pw6{2$`mL583JakG6l+7fCA`x5CwG)pg^cI0ve5iO#kzOk@bJtVLAZP z;O=y2JpM2^WqoW-W1X$r&a{xsAaTPW+vi7$`@FC_?IYg}zG`W&TNc+5nGExWL7Jzy zowEcKHF26@!PZUtH%)jn+YOn%%$89!kkYJD^n-ek*PN^eLtASHa#W~lJoU5i)!~tG z4i4$Q;>Vq4WoFJ#SOe#qInsib#n=R_Vdh9vqkrfr(~DM`y#ZyP>Q8g$ARVh^*31se z3j$m9A)mr|n3SAT=>r*R#3-5@@)CovO+yU!qazc-ZJgDIT^L|)%c;5WS}|dPJ?pu! z=uVlUfxlUx36*aNvcJ==Ms2CaYaGZ)h95k&!u+{Z5gmvT4$i~Txz`=YtTFycARR<* zS1OtVtTdu{HNaJ}Elk`-c=Te^pF)epyK}|H%#y{qlG(@=_hGTU^6^IV$w1SP&Y9rCB>IBNx<%R}yq=*R?e5-LrT9K3U=9f0ozD!tRnt zcg!-w`DuN4!2(I7fFENS8gkab-Ic6;?j(@&>3xktL<7T~M@IznfbNH>Vqz z7W{76x3|7|FVp7!OoObhMClB5ORZhDbELy{@@Q}ctk=oT-rXsI-CAxgd*tH!7FUM< zpP#GW`C{50&X_$yd6C*d=k!Qco3!l)9d*ceCST%}glTaY} zZe!BLfYT!@wIFu}U9beLKoOd|=#&dFs~(pDDo@IkkouO;Svq149z3|m|L;aiCL%LZ ztouY8U^>3_oY$2QZGdU-t^hqf=^~B-ogRg#(M@Mgy#8~NUtfCSr6+QW9d|9uFKL%| zNlx5Z`0OgLU+v&(=fe-Kw6w=KwfcYklNT*(pT55Q^vR2-emB_xa`()_@zn2T=c&T! zj^0ijUl&eyJ@vc!)bHlI^}FfLjTSkzI%)@0Tg#666Q)I8U*4@L_4Vc5;nXS^nJoJH zvYlFmW6YtIUeM!xP}fiH*s(m|Y(>=u?oZC?!OZkXo%otT z+;nfYsY$o&C5GqRlW}rNQoFgKYF*4dSUQ4Fr zd*%qC7nw_UCP8dO2*k`p#J7G$>zA6jw$Oxbt5)cL`yH`Kw;e&t@>Suo@KZ zZhhbFftfcJlb?8J`?NTiI8Pe66_m?Pxh<4ODqP^iH!bqm*y@nc#H)k8;tw?AO=&uu z{(KC9>(hswUGKj{Pwxqz-V;8(CwzKO`1GFe^wWF7f5&^maQl~iWURr2t8HZsUbvE% z#pIq4=d}-gWbA@TaXZT{gnPmwiR*KFRN`9tPf;05U)5*uuoM>H{`CAwZpB2|8Zl?) z{_Vj@-s1I&c)GMZcZFVhGGRx*@FMnT{eXWCJB=BvAFk%i`K+7}_m7qoqzkwljjOG% zXg`_c2XzBzgmT{1KiKb$@WPR@Nr$6ynkd-;cBiNP!({UGhOeAZ1v?{`x_(fkAn%e^ z#2a@ci5RFii%!K*YD+9FCcsG^WRFUVmIZV>vn{ z2mWai^oX?&FbY!|ME6wcjwU}=+=mOs@f;kx@$$3TZAud90V!R)RxOxs)uV? zij+FhL~=}rDwjQ5t-g|cS~&*{GOo3)*pgBEItwFC@}?Xb>#nW>CkEdL&uW7v&;wcw zXVtC)Xj4uegSw^>Ayq9om*+xG@Z^i7;#~jE*yJ1l8A+WR43vqzgR^-QBfV#=B;<~3 zG!?xE3Wo~K_^on(2Gb9P!Z4qj>`S3=Pf}XYYn>Mg_a#w_i}sOk9V#54m3yHaS};{r z6=Jnku-5REA9C)pgudXI_ud{E5yOSI@`V~IKZZ%5ddo6P0vUERuC$A{gmoj_+XPBG z>HYw7?0fRCyILX1bN7zMcTx3>hJBmx19dj+=MudyRv7ja_sBhYZ(WYTg+6^f-W^Ii zQ}+R${*!%xzc-Shigx6H8|yMy{mqf=Q3Td&DM+14=8#@aQM)jw+z`-Bn`o2!S*dT$ zmy|#-B*-(Xn4%~Hq~lR%kg6>^-E?159fZS^Xp{?O6WmFO4g8o`^fUT!J)nIe$JkRS zQQR3BpEq?-RX`ITn^fH@7P{MedW#u@uawg62EEm47{lhF*-%P=cAgAqo?_TM$`bg5 z4Xxv@^87Ty%$PbGGGvd4RgT=iVQM_57CXAf7K9mg(E8}EkC?SHY` zalQ!LcHC)(+~&3>c$tF_!Te>UC}~ELAL*F!@+LXfCP8CgXE>}>?i$^@;Cd)1CIODI zdV=9UyeQehMWoXvk$26d6sNlnUs||YVmYAogJsUp#LmUGT-L#Q$7F``zn&K`Znt^{ zEu&Uh>_x}IyKF=XqixHM9f&Js^Gt-G5A3X({J3@ZDGa88Y3fV8jWoR>yD=#|pPrMJ z)MAI#VT3Z?BGO6YxG*=fdTN3WzHk%0wUQ?B<-sD2lCUU9pGXT1b2&ADy@Mpz4xK@R zes&V48)ziE`5UOC@F^bpgkb3k{8pG-56$gq^(44Hk+p)GMsA(ljZsP-vox&lGUbMN zUp=$P2zh~l%;!pJb)?r8SYok(9=U6+;cPr;PR1a2)NU!!A#;z3B&}Uqf*V7we?srL zJ5B030Oyspvy@kAXBe~eqjf%)#LJ*?$^KF{S+eY=Ra^`y^st*?t|jvGhN1SvMA{y1 zy`nX6q9<+}rcd zQ1x{_XfEjuhItSO2E(D?gQ^}#LIPQ|?t2PZ8rz@{E0K(A8ezLg1>#GBRl%`h;SJ2F zX^B(69$uU%;&-C4=LfNH0u%Zi+tBHUnxMEk5q3o75Kg?9jUN^#xcIRXgq6&ooSR{u zFwXq=b*liy%$IRImQU!blCnkQ<+CVfz~@O(N>5nr-MVYcYENhpamk}TMPw|y<624T z`^znPQhTjkik6{T-(eVr-#MwpH8jR|BGSNHjSGsXF+O=Wu&ts2R3!1RMmcWjxMWz# zGwU`SCZ#0^IvGegkWN#GZ}@qFjx*0vIVUu&D2AdWDf>KF{Oy6l$Q`e;DYU@hWiW|f zc|yYH+*r`o8bS(3jWb9|^6rnWAW}HZiA^kwUMtF;L3{>b>q@J+mR66Lf%mw<!+qn6IdD3p8l2IYnyQbNYTCyk0er&@kxBA$f0}b5YiPsT@u}TSG*?LOz<}i zVZJ#PSypXjpjo+B9!yrja$!+t0Y)WL+KDz^gt$2=%deRxix44I+`1JVwuu?IgA=aY zCPl5}L~(4ce625l;NdiyFin{s}Twy&y==-l^n{X$#s$+J5BL^`GEE?n%D z)(De%hDMzkz3)miS2t_}Yb4=&{u@2?g$p%%Yf=`T0*A0<;Trvr{>>gP{m3#X^C_~ddn!ZQAYH#TvOf3VA zWjoVZ9hq*eVxhBd91rNb@Ne7lcagcH-gr<&G%N8!;lfSsr3zE}_mP5GRQsjUurzA` z@@+IcHiJRseSNRG2-1JYc@Xn`hEFM~_J-Ta7WIZmG5wxmjBa5@ zCtbRyw3y=Uge*2)6C*Y}Wn{W>Dsb=(JOR%d-<3HcNoNYTSWbnK>5&_AY>9k=`Y?@U zV8E_}&8Y7&quDyJhlfwbN6!0;)=(2IghK_K7Q3I}3l_`HZ-kERBZbz(HjD~|p1DCo zLT2o;abRX!G#WWOZJt}2px~psY!O1g3WO8+ik+QCWzLr>y z>rBOCL3LVX^**SJk8HPV?NLEd5! zMbg|q%j+fXWkzB0)G*VxN()(?7bH>4BzXv8&ic>x9)fCS669fZpBQu2e~zlwha2i| z-J0J}s@%tr#Ld8Bx6>bsc!gV2B!}}$l`MBTUD3SNydEm+;W-0bASje}=S;i2JJ9X3 zRK1$7$VBrdeK|fS)h2dDxBN`@6u%7q!aVRxvK{wtgY(8?RE_WOB^n83`3Y9AJ{6-C zbanImSKK>EqUq0;b+3^0E;ElsIwxyBdyGA9M3M>@8xpyx>l2lW6LLx9VqK!m`MkW$ z=aYy(@#RvK#JL17-9J-8O+Z$E=NO=K= zOCn{Is0z6C6i=$W%qxz#bm{lIVRv+If+vRsPNqh3m7|a0`?9ab*jVn>5UYp%ZGax9 zsNw;xVsFf$Zpz7y6)tvHcsm!Ne`XHn-m+J6K$!4R#5^E$Ond@$BQDsu=3pNHBJyNon3TgB5)jaX)ZOU5XLe-waMb4QxPNKo22k4eX zdmwBC*cY_M&E{@a-d1gm&HhI`jkZ3&-dp^L!B*?0&G}y!1!DFhN6OAeRX-OO`c+aa z88nL&?8k>U_8y_BM$mQ;p;}IaoaC%WjJn^IUm^u_6e>Ttp`Du+%QovnKN8t2aqlfM zt5n%ZrlN672XMg1Ig7=rX6`*M1Z7AuK6TTCaTed*N$VZ%n>p|l&&Oz=_(NLRqWKT( z_k!bQe`fj6e)O$l-KgaGUKER}Bla5nayE3w;&bvEd@tj~j{GdWI{#cQJ#vgkALUg> zJi#XAZM?o)Rp_=UAzN8#P1gz(<9vonx3=+Av=0H&w%UBHO1HM*YqeG(`E-((j5icR zx~JhwK*c)jWX_6^x}2^N0SJ?IdDvn^= z0o|pP5;&8qtlC&isUI#SsO6A)CTDJK#r^A<72)Yz0pgw2Iz`2~Y6qkiicvExu$WwN zlH3u<6<@C%f!rLx9gypQq2LwzssuRP{rE`~dQAMfz7l#&JR-jmdQ3bbze11wc%)CW z<$B64MOB}O3jJY|r8?+#j5^DicIF8}caLO>AHtH-0b^W>GmA^I!NWzIoQBLzaH=8$ z{lOfoxOin+{etcF-sS1H@}4ED^Hu)kxAKeeGgYe!k}ca`?#(wou9U&#o_s66xMpqs zgVY!2vbk$zuSZpP3jJY2>Z@yS^9}I4Jm-7!u7`~csACA3V~g_MVq{G=Fg-nBuP(^2 zyv9MyA%=`NMN{|JbuwhKnmZJ?2p1FrWGa$3;|7}$oo;Th2~mo0@lt|L;0yKJY(1 zH6M8TEZF_0yY#2K^ryS@r@Qq3;k)$kg4Z@)@NyQHi?|sJh6X!=p~0i<(*JqA?$VdM zuZ)$i>hIRGvk6OXx+xXOe+sol=d7JYUiK;oBt?F|WZ5me#TA@fFo_xk3V`MdjHjuy zj%Oan0U0~E;DHQ^QU_!rWH}(c&hUc%&C+ymf1|1#iJZ!QZXD%j%p%Tk1B?HAP>g!Nu|y+VJ>ZZ$zfh_{-U_-qFpZi3 zM5r4R8bc)8He^um_eXd3&L@gEV5OZVZqygfjj*HkPC+z9^$aRHY_+Q~q0sFksw<+% zIVG;FQ59f^DVKMuX+5Iub>v=MUC$$YJOBK9xYv|D&;TlMt#!D;p;vebX+SIh1l>I@ zG{fsc!=mskN=h?!!G+dCgY;*Erc~_0XbOL z)Qm@&-sYA=dk^woy~OFCtGp$IwhkT14h@?I2qcT%-YPn7cu@77nBhps#S)Yqy=qV3 z5Ka5n`ad2*WnuP?FR>{3j@dhV3QCYUbL+K=XwFBd(w+L* zJ5s?1)o4}|aoIlP{reQvFynPAEnQpv^4LU6bD{st$ZXGj)Zf(;R@=;JUagaanaZB- zIM?3WalXAUI_s;sSe_lDvqtH~j?UhFt<-Y}-HaoJnwlCHQ#(3aKYaHrjN=sAKvGg| z;iZ=fEzPxs_fi1g&Q0F6Pu6bucyB8}@9^YZxB!qcLvdx4;bGXTTLQ&QdRLTPVh*DM}e7@PDb=9-_7`}(H5ztDO{s81b1n*JQUOPU0K7bKXMiJI?fiO<>83fKl_clULL8gP3;^M# za9W9_D;LjT-IbOz8wUK5bUxRkV}4?8Y@Acinp&B{JU#(`awaiktRsnVDF-B;H$0k5k_C?b#5W@&5c~Bo4j>!GHpJ- zKcXACOgqVu4Xsv5dz$IT&Zf9&?JAqUt2EQdsrdvYNhA_qI9> z>Fo0;*>wfeWkv6t|ncdlPWL&z!jx!eNebw*R?ZEl6cq!1NV zUcA8|g*yh;RbSGcf)<4>j4O<=l*S1zE3g)+tF?IAs+&R!&Yk>%|M-YWE3E$$o(#k;YA@i8iD&gy(q!p&92QVnK* zel0gD`2u9gpmJH=+}N~VcxKby-o~awEscko_SQEx(R^-n z!+Irb-BrLg28C%&spWI@8KlX*=PImNk_2`LqO>HXb1hK9D_T*bIy#bYZMkeYm_B8M~)J((W zk->(Pl!k73bXG1N8qSPQ4i1d>btw%q4MI>urVu!qIYFT^&cCJHkr+vZ{$X-Rqu1My zezX1aw=Z5?6YXvl?@FpjrTXC-qk_?&sS#AyPu=IWstK)2bHn)9;56d83ZwNmXK#;h z)nY9#BaCYvr-CjYtQ|#*ys&fomAdV>>$VT~Za;fy`}srLd+N83UfqefJ@&@P-7&E% zgJnqrrM<*>c4#k84m+p7SVCOur~RdodMSb-B+N=GEopi6x_3H7`n*L>rCxs2 z303m^u6BsXq!R07YuD!u^Rcy_R>1b=Q~Z}N)Jj864yrjW8nsFVcDsx%)#Hm`w!+2C3+g z*NxOX*`wIKU+ zPDgwNvCo(rQH96IYerV%D&X|^&(_tn_IXePiYF zwAeIG&)D_HBfPOQ z&rD8YJ^@#RL5crkc#wPi$@8Q<8tYU31iiVj@qo|3vN(iUuN;Nw>AEPov(DoXkX?$s zTOL-lqJsz>c@R;DI#7E)w9OwD}YX|o8=8bik5z=qWJXkTb_Hb}ySPlOIh!<{gK~y4^)VEFC z_xdHW5NOHrf~zVKvI&wy<_QkYMW~X61d(}eZ008CYWlW_Zj7^9S}EO#Y^rSNj9~;^ zP7TcXS{HoT1iFgYQfy)%+p2*H%A!uXT**?zk`)wnoGFV~fw2X|GL8!cw;LH492*~- zRW~JQ4x(cQL1yWTxp?aRW5n5wbGZF@B#5;$N_{B1IeRp*k{n_yl!eB2M&A5nFA!3D zf;Gw+U&;P&U>p;-VLX2nlS;dAg@wM>uChvhnYE`3tr2`-ZBNSOr@P^*!;z>&ZcfVO zr;DslpWKn3F0vtgaz}o;$i}kp8k0;KRvv-j!#A;R{bH>@^Ko7x&d?Bul>uP%@mWYFMAJu2tjZ6rSZyJ+c@934oY1+`NOM|3h#^5MilgpEl={BRnJXS2ia{US{p5*s50mlQkk~+m{SEMNM+i*D|kX+ zwRu`jCS9yc&18kw%dEyy{09A;4bsBaIOCdDV|Ja$PRF`k>Bfaj(HX zaN^K8ep8m#rfA-X8suf)IXS7#m2Bs5Ph>1urVR-o>q>mtbq+x)bH#TKA+WCa&LKo) zuK3Pj-`rO=_`uG2l-gwWn2S_LlrQ^y=PZ%x3>0-vNqtB`eFow_*Es~K&w%e7LVykU z&LKp72I!ng1{=G(8)dhms-cD1fGD;;eBy-7a9Wps^xaY9lx47glsBG71Vv7lmO{!6 zPM0>p5SB{4#!$z6Mj3(>R@6&;r&eR}4W~6rkXnt!OO>4w0%~lT>T3!VwHiZTQ>M_e zBsW<$y=X7FN&WD8Wp?ms&5Ag}GDw*8y|hef^JeHJm#(Njq@X@;#*?m>2vVOneJ>FL z>`mWGgs9J(ehMv5a(CH-FUG6~IH zu+{IglvV3WG0>WK=TQrM;thI5sCvj7xm6E(QKagjKC`Q~l@jF+9{M=>7TSxlX`(FLo75Su>L*UD_^DENKy&_{LP5BixU!O{DdP-N({G6$M zSksI6+`XJ+r^W4sW|g8 z{(OZxI``Sda(N+RV0DY$o!6u;X5~OwC3|Ne0=^Dn*aHE#mgw^ULgrxu4DO?P9XL9@|thMynGpv zx4XjSZ~!mmD^v#b`71R4`g!?N8M8aD=|gUngnaImi{wUb@Iqa8UegESos8qNuUdro zj1<*f;c{e)Z)x`VS1(??7hAOWmgb`3L-sWfDBkjG@dj|vTkns`fUaDt+2?n8SeTt% ze<<6nO`h~;7AZTk`kCi|P<34neEwvSs;A3McV5%G+)Q7U#C+~&HTPn+{CQ2P8LR(w zdHw}6c6c!BDu*E~z=s~hx)#auP}U{+o`7{p_W5;xRMsWA=Xbic)?>0RLHf60U4rxk ztZU&aJv!@>{O^W!NxmmxU6TLZv#y16KQilDnD|F$U5gfPtVcMfaUR&d@WBl0TD*A6 z|3KCy+2@bqM`T?Km;LChYvHOd%(|*Sy(0f?mpElAVLvU8C^_NeB$b^c)1$~vn#rW6 z6OS!Dk-bEII`|m!6S=bz)aiF4L4i>!Lv=ri3nY22TM_ah&P-dN438T zIZ7&4B1!FgWJ!w58Ck0B@ntEgK~|bN`nb{*09kp8{3;*$b@}1)l;qbOZe6Dek1J70 z6|ypwBO!2>hs#u+1Y=E}gaGgeQk9Wl5GY;BF@$e~hssrCSC2`d2_9FnlJZ?12SF1& zo@^yekV;o4R^==7xZPEt`m5{m&zv8aD&bdM#r#TmV6)pBW_Q>1^D@frPsw!NvQl0q zfEix)7=WI!8KCjG*B9V(g1Y~a$h4hfhSm}uc(IfR3V7=yfva$qLC*5W!3FuFU>|rS zY=sS5P1h);ymMkv-YMn0^ho6t?MX9rS%|N`Hg9(-QWZ(Pf4dV8~8QdZk&ZsQj5DW05jY{1lXK=He z9oS;d{^+nBvU|?LW*9#0P{QyZy&W#5IDTMc*8xXxVB@QKUG7oa0fId%ceq)})e{_W z*C_6zjbtIX2)Ib3WtbJM8ba@*4KopQGwqvMOx(QV^2x77&pZaTPX5i{7OgQfZ}A%Q z=*_EwaRxWD^x!mcRnhv8b(^@vxlP<-lH3&5Kut1)v*?q37?a0!+3^M)EH% zvLGx_L~C&o4?8r-)Z%h}E#uN8Zk?VB;MW!7FM5=a0j7BtSPK@werWRqm~8X(15YoCv0<{=RpH%W zE5xM|C#hAmO6kh50Qf^&C42HQkMb-RUjY1}t)eT;Vw67w{E;ZPLz4{UujN-4FBA(9 z{?NfK2n*3&x>ziL{ZP6c#yoV!VabZI0Qf^&Tp>!aPaMowVvIcRwm@zWFGN2PSDjIH zZ&qT zQYyzO&+4)r8oMkhUsG1AKXJCVwrrdJT#=MN1K5v>dm@~8y->D0s`_|TkZL;P0dF6z z)&RT(fsYJ+_BT6Fe28+O&%o&%KEsf#-|kDU+ZJ@jwebl>o@GNZ=kGiX!IxyrVa5ykFo@m z4e|OWpK=K(8)9ou(KXpnXti&kY}kLmqmXc8yvw631!ZHr;h;~sR6kZ)2$YTMwp$34 zjTn-;K4J)OiW@!3GEg?f8+ZAX%Rt!_Y9tyJn>OsWZ=h_dZ}2FL{>||YkFp$;&GDv2 zpK>`Uo8uQO1j^K&g(m*m$V`r8=NgfKnY$ zDnO|YC~&Z?p++k~*&0_H%1ThSh8nE|WoxL>N>H|j8m&sow*^{OfwC>$YBgE~%C$4dh(t3lZwZ!=m}gR(u)vKo}_ftJ;vY!9@oNy>M`dwfr?0cA(L z-Dp_@%8oEz)_}5OgZ1AUP1rSqsX}c!$lEwV><_w5$bXXP{**C_4i! z&tUWt+T|HgYT}(n%QK+Vgm!rbl$y{k&wx@xyPQ!jm7v`k*H#@WTo}Mv1$wbFDhs=p z{+u?m=p5sJ)T~-%CCe~i^PQPM!LGQ*+BAWJU4g44P_Qd-l>`cQ?WoBgV2QxOt6uay z_uz-1SglxQz8O~^omUpH42>>D7>Tioc0V&T`#p3_EBc1w&FhqeOz znvj7AyKbp)3keAUY1zKlQUcO)fa@3rNEE}aTjLY{6YQFhfe5#5t+1vPZrxgY#8Lv% zdc4hpkZ^C@;y=Ny2^okm>%A3@B}TER;qCQIf)F5ko0>fc%z7UShpP_Envj7Auih7` zBfNUwcDHU|ObEz6zivb^yn27!;6dQkgbYMj_5KRC_>d5g{e@kY5|I6M_4!NMCa~&* z@xiJNud+ToIkA(cP=;oC&JyRow+G%}w%{qp%_n@rV7QCjm+HvxM3>*c+I4ema17t8 z_4N#BS1GtYz##-Z2P+&4iQ*N|b8x4%p)mb}``ls}#W4LtVaUPs2^om+{6iIP^&=r5 zhj!Sw5}tpk)rK5A|8M|-=MypzVflvxh_L*_0Yq5-;Q#{5e<}14ET52p2*-aZR7W`e zOQAZ#@m~tnf#V+ul)&)`8Hh0aBY_fO_(uXI!tjp-N?`a$10^tgLIxuI{%D{?`2Ep9 ziSYZQffD%rvDoGX{GO132)jQPhMchbW7}<93A;bm-0H_I?EZM51a?ozK!n>L50nVE zKOQI%Zht&b0=I7qZ34F^WFW%q+d`WNvu_J+BFw&xHp#Y z zAlvysq%gYko7}3$H?o~?Z1SbS=sI(bH^;HCw$7ZBhzXIcbDdj;2$8MR%lL5&YwHT7 ziP+hda~zRRWa}ze1%v~2HCSnIpbMejgy&qyxdk^?o^xTdb&l|y3tonaV|dQ1A)9cS zS3@@8GOvbg!ew3!+2AtWfk@#i-GNBqE8T%e;Va#NNcc)mC`~v?Pbf_|Nlz$EI7v?^ z4NlSse9O@<<;c}>(aD>aDZo&~RQ#ak9W7F|E#|^SUZ_};wsOTsx zE_oF$w*`N=`15VW88z_TuwK4}n&@#ByjVnTu z(KDuU;b%kfOCCiw=tJ?KV{d!|Wr$s>NE(Dd8QSTjR6?K(9XjmW1&MDsKIKtlgFYM& zp~a&4gxd|X@Ae^3hIb#c5GcbZPI?p)j<9sP8p#HIBpyEHQwsANi5&wfSLQde%`tsK zpp3M*wXN#(@2z@vF!36}lp9{0E*I8#GteR%^qcVwCra@Rl$)HexONdvd9&8&6i#{b zfLjI1MOGUN<3%>;WARO+MHuH;?3Mvif-+WP{U?lb%!>o%!Z>dQ6xpEPipOlc2p_!_ zP=t@(3Mj%yZv_+Hgv*WxT7=7v2U_5=w*xJ*LBAc38!f_gZwFe0>D~^s2-CeCXo2ZYASSs{CmZyM z__om^Ja{6E7vaGZJFWkO2Typ}v0QlYWS~Vh=#%k;%@twElYtgt$&-N=Vabz$7FhCB zXcyU_PsNi)i*V?v&@RHEr$W03ho0JZAUHSw+GnHuu6cG9?85DR!T9cjmHI}bWuK!z_E5#OMRd*=F-MY_9 z2%uPf6jhg6rOQp_siwCVL; zu&Dk{nWa(`{-U)0?shWSnh$;3H^>E2r5H*q?_O!-%cW8g8pm3QAeExKw<1Mz_d`Y0 zsR}}+sOYUssne^TsBKWp&5N{atx1|N5TJfk|?r}!@_{*i~^ zFVJ6Y4yCxrOk}bzQ=}VoeN$s2LnD=y6uII=ygcp>q`KjEK|V8B(-A$y!$p1I@XV5Sz^Aq=cE8FRltGMH&5 znPYtxVa#+3>0qW7oibC4(S!h2lMrTV(e4UfX0^rid1ktmgfLT!PMN92XhIOTkq~BT z(UQ0qW7oibC4am;i#$zY}yY0T8ZeV&=_ zAsNinqElvSF@27i){zcoYO#TtT79gL1a<{2I3Xj_G*TbAY53&8HrluZfbl@+tkx>0GV?JdI1z()P7VX-v3- zPgdH#R^a!w7M14XlIi?2Qnxt@LebOxQ+Y_sJN>R|C)}{5+5PQGl*Y@(X3M0CQYLjg z{DfuhYn3vrmR6?4TA7Y98-IT33CeWL-2I)_GaH*NlX^@$B^tJ~pEkFH|;TWQ;EuM%f zPiV4SXgt8O;j?Dgih# z;FOkj;$4*{GK2i@imCwEV#0LQ9hu1z?ON8mV})+9aeuq=ge_%b6W^FKu1qJEoPL7F zbl@tY)0Og7dlJYMa7g3CFEUl5$)Ji7;;1?7b*FYd@#xjaYlhP zhm!EJlJLrtw?#XK4Hq(_rd zr*yOTr1CMPB?@0WS^{NmN)RMh2U0RUJ@)*e@^E0y@S@T2?4b)kQ7@>(`LGZfsP3 zWiePcIZI$&q`_ueK<92C_J3Wh1#~)>w1CDLCWGI$aZY$JLjSi&+39?99~tQm@mb4R zGWadJWbpsKLwxYyx4fl;-{Re7FI4;w9)M}%={d^_X3^lcc-z=n)p6V}8`p;ne#<>? z@Y@H!X$!Re(Su-(*w7pE27iDp9{gWjtOc@z-}06Yev9`aY9RHG7bCT3@LTSAgWo>b zGHng}CyT)r4Svf#Z}8g(cQO@-{n}zJkRAM%w`lO6$y}M3Kd{RG+1U|3z&I~lrJulcSlNy*v6&!%w@s z^UV_-LkWlI8cgUO>$bkoJwG4o13A9-c@+*tAM0kljZHW+-AaIV#Sf3cUJ_OMB&~gw-%$$FDnhHKX_O>;E5FmF z$i~V2rGsfyoPCwwRg_4|+81ghq5YNLU0Tq7Nf1aoQ28;RAdO0^ED#4Pzo!)9AoW?P z>H8!_Q)A`FJskn0sZrB(w4XcG*V%Tyy{W14do7Jby0|pWgy1w+exfLi#wFYGtNSwT z+tgC|NlPXDq7<~aRE{RaYOVafd8t~{2GsUz+FSW4pJ+5d?ad@o?0uErKQGZfDNpk_ zp#6P)mH%;Gs{N8GL(>6L{lGk`4pdF&R~7H3R_3DtuZ$24Bt7{G4!}ov8c*H|Qtg9x zb!nGHsXCrd&Swv{b=$dsJ!5zfMi{6)ETiV^0U>*Uokb|`E=LzHeJe*0?2Q{mIFWx2 z8k`v8{+>t0ss%9Y<(d)ni8DyFx3r8o~|*#aob7C{Mzu=7xsE`YK$i*h<&2`zSrYX8o|S+fAn zn#FL^L(zFSYZt&-o5cyEjh2x!)OiR?7C^99m$aAL^3U3ccXHz+LD=I?3UM^Q76{pN z$p7>5FJFKJdqXKZ(DZDHWfawtc^E4ez_2HlGSzUoRi=C-2z!A^AwC@C*GuPS&ba(F z{$f}ci>>RQ^bjfAvG?;E0xiXdev1)vvY431ym!qQqJMql26?6(!Ut2n^)%4smS(Yz9-PN_WOn#hb>qb9Oe_UM~OFMM7 zpIQ5__9v>olCQ|BuB^(hXgk-@*3;(@LeSx4f`SI@s~2B$Ki-_X=Y9;fy|p&3iq}RZ z4!>Sry8OSFul?8Z>P;-8?)=%0(}Wdr$X3XqUB~kk{=1&5ts&Ue-QIDg)68O)<8^CvnArdznC0e#TgnOVBz}JfkV(ihL{$<9tfE7waa#wr|?*Joh6tlE-i`LY(AH zyxRl!#l!;ZUVTq!gx9}$!d4#Bfr#6av)FHFo9H`1(@3iB`FeTT2PX_OlcTe|`^b|- z?p?Zqyj?mrIyOYEF);25*f$nG%~a^JhP_&LZP#(H(xl{alWIMbiG}B zwAlIi3SFlQ=i9qao&~1uM8~;~-YZ(*>5kq`DGY{`$6Dq>TX%2A$&2UOx(gRBcJrux zd!enny>P0d=j6FI-gG}zPx+KtXus6n*<0v2+jj0;aYgfmuFIY6-9mk~nuQbXP}z3k zT)PxS(N_TNZa>*86-s}dr12o|98W6uTxdVp!7tjQon~n3zOu)I_O!oxkyLyvoN7DY zcBZ|jz$51mZWTJ_#oqS9nXax=+Sonq-IqE}w)Y$^oa>V2 zKV7)k(+(l0+IrixXfS9lzEgn{7kfIi;douWy}SG3h2D;?&RTl;GA%>Z+sJ!LTez!J zYAa)x?wPXZ!h7R5rwpz!Gofx`#dtmwvrgL3kbndOUG`WVD-rQr}9*~D_ z1!D#yPv1w z|8khKXvUX|oBj8BRjdG88sW9-sqwL)vDxwaOnY%OgRxe9>T{;SJDS04s?mFw!Q7$A zyOhCzsoA@f!3wE`w2q>^=?h!(^J}p>msxVO?0=7`J;MSvH$K4YVXPx|1m#|E7mG7q{hXQHQyAj#l2^pl$qZgI^oQ~d2)AdFl2!OWu88Q{_dG{W_I@mZcmM~(lIWqONHL7>anozIn46l z;5Tl-`UmH3NMG;}@8l3?2~sOgRgFIHEk~9fx@;86C=I(knqzDf%RR@$XK{W5Ahvpv zyC6@O=*Xe=_So`K9O8(5a2Z{gI~JcPSL-H1jG$xr7csI~D&NE!?|5!)eocOv3u5VV zJa=pz4sZKHK;3yc{sinLX1Ye3 zR8oR;HiJ|S(pf6(s*F#KSK?l)vJm;ovcz>>PK+1NVH)ac6iLQRQ2Menm-upUk3rtf z+^RH8@=l(d^0}o#U76%kR97asv`1GaIl&8=lo+WCDi43a}{f?=N#tt zM66FQhsM^&hA#WZhTJoEmzSIKAF)2YywN!<(V_Gjo{q#)O&`L}y%t|K$45MaUH)1? zkyd>zphyS47EmDa3TCPfMXXP+#IG5OxbC9zQ(q2xfh7Eq*Xt_2jaKD`!DNcf(B zBG#wxiLV*T68*T`4dqyR>^%Wx2`KLgD6oj@7_STu|9o0zV0kV%i?9AydF@*`t(jx|M`C?CxY0%()~7?Ua3YxjVttCWvh~qQP=@@AYJ3D`XqkJ^ix4P7>o@v#!TNMK z&?45SSSvf%17-0lP=*67VtqOsXc6nv;Xn)4rz4?V#QGF#Wus*^C?la=#QJn3w2N4u zj)Zo>`t(NJ?rS90r#IpeYZtLTy%DeRqfV?(Z|pp3Ay96dIOS`E_36!kBG#wa8MphC zVtsluUTYyxZtgs0Ay94x6s%8g1r)J9y%pay6tO~wbGWw0ee0p(dS0=9N}78ERm4dq!-#skW;po|BU zXF(YcD9?%ct~ri-4wQ*_+)$pQk0wG-KL^Uh3L6E_fikfLH8HL2b45GBv^(!f@V~{UTg=Hn4&hp?P-ov-SqzHUje2N^6sifV}mb`F7k0$Xfwq zQ&RqR0NDh{+W}+~Aa4hdO@O=|KsEvLb^zgd;`auS&49c&fNTcjy%k2uW_3NTF&)Qey>aUBQGpS-L&QrcF3P{_M+y_#mZ6Faeq-`L5Ac7)S&Nh%f5J8d; zg7kqDX?v3UV2ZRIB!Y&t9i$ING?2@>9i$INw2%*i^uZKqN0R&cDDLzhcYs9Dkapl} z_UogHO8W}Z*GG+KEC|xqN3Wds?X)w=eM5@06C{F$v=gLnh$`0ktUE#ahN$tZ1ws0T z6sac3ePfDL0}??)ssZU6ql)K!)*6t$F=}+aNXp_GkiIcRs!ehqN|9PC-^G)tACBtU*f9z3-v#d{Tz}j*+&4#YW7U!Z7gBll(n9*4T(Xqd zk3>em9vX=V*~;s8FupljzsrJ@_{|Zng4|T8OLE@=q{pfQi{Lj$<~_9zEFui64yuGW^>suo{A33@jlH9kYSPfti z{MJy%2C#@QtOl^YEyZd8>)TSS#w7RA6sr*|g5MUf8o?sMuo}VoXo}Sc)<;vUrX=_6 zDOM9$1V0+En!qB$u$sX7_7tlLtZz@Tnv>jjL~*NcuV%0aetW=b28#%rfX!fiN3`C& z1~-HC9Z^$@Z?Bdl_nj$L3s?ldBWm@%-U1d8hSdVrccxe^V0~wb)tcnKD~k7dx>~^^ z_?-c(6)YmEJaj8q-xaO55z`9RcSSAYCPy}*dz0LEr&xQzBKTd=KA(9nSVS1sUa-D9 z#o7zjcc)nUlHAAAvAPc|g5Mpm_JKu&jn#c%eJmZT`@s5GI#%~5x$lYa9^}UAey|9B zER5CtU=d;cxF4+ViPqbSvLCGPiR#6-B?R5n*&41nYa#@pTZa?@hsOd2y3rHV0|L3;~}sLvpggPDuiwI+Dhr#+} zwB?ZR<-=foGCCq#8mZ$;N$&fi7#&CDPcMN*@RQMTpZX=Rh_LgIm%#eIXp3_fMP{(R zFFI-ZkAg+SMhk-V{n3^K76j}2qr*pF-C*H-ap@04@qdcS-Dh#XnEQbU|BJ4u zV@d7@BR#Ma7JZC0f}kxK$4L8wQH6EPF_3>SsuCZDLgn!!_d`*x&KG+eq6peLcATs~ z6eZ@i`Z!sCD5@3DSCX|Y$^CFzY8#~zv{Kv1`on3dZDjr7wA2$x?nffLHo7(C1X&5L zupn7~B+A?8^NlHDLrbSmo=I{)8Rcx~o}qIHuJ(03L)M>+))*5$L)M>+Hf+upw3*H( zxlc#&fvSXK{bI-Yw$h(vM3N*7s`xDUM6CDtXTkq;w88k!S@1s{wTg=?>4uIZ_frv$ zgWas_0E^(KBOAXRU=d+G+yT~4MH^c@bO%^J744Hy1Kw3!mzr)`neRV3#^|@u`VRJpHJ(^DgIJ|KNqkrfJKDW@d8*spVsjLSU;cE z@zo^v3lUu1afnxuf(hEJc@?Bzh;Xdyzk>7&(RLdzuY&Xo(Glb6-AV2jqxhsx+YJ&y zL+S?U7b6_wI;3upelgl%J=_h_FGj~s`0>z_H&$MA@zXtODR$hNWYXK^?>wC zDN=8e`{gK{cJ+cp(2#mT`sE0ZzmBF}kbXJh9MA_r`sJui+$72vy_n>FB}KXj5nDllHtlx;5 z#963dy(h{2W-1%M2P}fW5gBiL4_HJP)_cJE&1i#jkVhDSr;e`c zU=jSyARAu?iwKh&uY>hl(K?esuY>hl(Qa`+Ds;V`*A4i>@Rimc?^?^n3w<9}^?E{Ml6LtE)`kkoKCQ=_* zzmtkD{YmZ%!ui~^>Ssg{v=Pw{(ibA!@cXYIeIeRrZP^df7gD}AkmP<>Bt4gQ03?Ej zGyu}?ro3tZq~DD=O!kRE`rYV|c*K|b4JNrSrbvSz5j3PhkiM8A4TAK=6loBoFQ!OC zN$yLm|Gtv_s zCpvR=vy*i%_jGk?Ky>3oYeN;)3N@-l!h5rY8PSlC)asR3U%)`g0yC$v;ljy=le>2p zP}d_Hu+#OmCVAap+*0UQBCEg+ghC>g`TE>|;@^*!Cl-X_-;bV`Ygrj1HVB=<+Mx;v~}U=jSo$QaHou!u0MTVVZBwA`lsEwKJ5m6_j2 za$imB_y$-6|0pui;SI2eFswJg`f6IoH^BO8TF3Du_s1z+<6sf|YN+ElSVS1sI9Pw2 z(lrj&AE$KPPI7-D=N_((x4|O#$APZfU=d+hx54_8v>$JS^(SdRP9(XnrC1YS5&Vn~EQnI!j@BGtNnoB@mAUj(cfu!u0M z8L<8`;y%~Sp&79LGFm5B@G>7~liXjWShHXe{L9Eh=2@_aFsxay{wl?q1?#U;thprj z*XdZD1B>8a1*|!+h%l@Lw7t8-xebvjn>B)PvyvF?CH@UO#Iy#p2zhII$5ze%y~ zfb};i*4-rcw`m>kf<^Fe0@huyh%l_XVEt`c$Gc$tZCb~BN$&4btb1S){M%5+dteb^ zSogsCyAax6%ZY=Sdr*fwJ`Pqq6@4RsRY~L&YZd_dkuMDH3Y&AwCjZWkIO@ZxPy1E-fGbDNQT%6122@AQ;jT`ajdODE>&$(xPNV LaP2eZUi$w7jOr>r diff --git a/lib/protobuf/csharp/src/Google.Protobuf.sln b/lib/protobuf/csharp/src/Google.Protobuf.sln deleted file mode 100644 index 262a43b..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf.sln +++ /dev/null @@ -1,54 +0,0 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.26114.2 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AddressBook", "AddressBook\AddressBook.csproj", "{AFB63919-1E05-43B4-802A-8FB8C9B2F463}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Google.Protobuf", "Google.Protobuf\Google.Protobuf.csproj", "{9B576380-726D-4142-8238-60A43AB0E35A}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Google.Protobuf.Test", "Google.Protobuf.Test\Google.Protobuf.Test.csproj", "{580EB013-D3C7-4578-B845-015F4A3B0591}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Google.Protobuf.Conformance", "Google.Protobuf.Conformance\Google.Protobuf.Conformance.csproj", "{DDDC055B-E185-4181-BAB0-072F0F984569}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Google.Protobuf.JsonDump", "Google.Protobuf.JsonDump\Google.Protobuf.JsonDump.csproj", "{9695E08F-9829-497D-B95C-B38F28D48690}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Google.Protobuf.Benchmarks", "Google.Protobuf.Benchmarks\Google.Protobuf.Benchmarks.csproj", "{D25E4804-4DEA-45AB-9F8C-BA4DBD8E5A07}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {AFB63919-1E05-43B4-802A-8FB8C9B2F463}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFB63919-1E05-43B4-802A-8FB8C9B2F463}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFB63919-1E05-43B4-802A-8FB8C9B2F463}.Release|Any CPU.ActiveCfg = Release|Any CPU - {AFB63919-1E05-43B4-802A-8FB8C9B2F463}.Release|Any CPU.Build.0 = Release|Any CPU - {9B576380-726D-4142-8238-60A43AB0E35A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9B576380-726D-4142-8238-60A43AB0E35A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9B576380-726D-4142-8238-60A43AB0E35A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9B576380-726D-4142-8238-60A43AB0E35A}.Release|Any CPU.Build.0 = Release|Any CPU - {580EB013-D3C7-4578-B845-015F4A3B0591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {580EB013-D3C7-4578-B845-015F4A3B0591}.Debug|Any CPU.Build.0 = Debug|Any CPU - {580EB013-D3C7-4578-B845-015F4A3B0591}.Release|Any CPU.ActiveCfg = Release|Any CPU - {580EB013-D3C7-4578-B845-015F4A3B0591}.Release|Any CPU.Build.0 = Release|Any CPU - {DDDC055B-E185-4181-BAB0-072F0F984569}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DDDC055B-E185-4181-BAB0-072F0F984569}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DDDC055B-E185-4181-BAB0-072F0F984569}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DDDC055B-E185-4181-BAB0-072F0F984569}.Release|Any CPU.Build.0 = Release|Any CPU - {9695E08F-9829-497D-B95C-B38F28D48690}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9695E08F-9829-497D-B95C-B38F28D48690}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9695E08F-9829-497D-B95C-B38F28D48690}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9695E08F-9829-497D-B95C-B38F28D48690}.Release|Any CPU.Build.0 = Release|Any CPU - {D25E4804-4DEA-45AB-9F8C-BA4DBD8E5A07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D25E4804-4DEA-45AB-9F8C-BA4DBD8E5A07}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D25E4804-4DEA-45AB-9F8C-BA4DBD8E5A07}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D25E4804-4DEA-45AB-9F8C-BA4DBD8E5A07}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {7B06C87B-83E1-4F5F-A0DD-6E9AFAC03DAC} - EndGlobalSection -EndGlobal diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ByteArray.cs b/lib/protobuf/csharp/src/Google.Protobuf/ByteArray.cs deleted file mode 100644 index 69b6ef8..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ByteArray.cs +++ /dev/null @@ -1,79 +0,0 @@ -#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 -{ - /// - /// Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy - /// - internal static class ByteArray - { - /// - /// The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy - /// - private const int CopyThreshold = 12; - - /// - /// Determines which copy routine to use based on the number of bytes to be copied. - /// - internal static void Copy(byte[] src, int srcOffset, byte[] dst, int dstOffset, int count) - { - if (count > CopyThreshold) - { - Buffer.BlockCopy(src, srcOffset, dst, dstOffset, count); - } - else - { - int stop = srcOffset + count; - for (int i = srcOffset; i < stop; i++) - { - dst[dstOffset++] = src[i]; - } - } - } - - /// - /// Reverses the order of bytes in the array - /// - internal static void Reverse(byte[] bytes) - { - for (int first = 0, last = bytes.Length - 1; first < last; first++, last--) - { - byte temp = bytes[first]; - bytes[first] = bytes[last]; - bytes[last] = temp; - } - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ByteString.cs b/lib/protobuf/csharp/src/Google.Protobuf/ByteString.cs deleted file mode 100644 index 32078b4..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ByteString.cs +++ /dev/null @@ -1,412 +0,0 @@ -#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; -using System.Collections.Generic; -using System.IO; -using System.Text; -#if !NET35 -using System.Threading; -using System.Threading.Tasks; -#endif -#if NET35 -using Google.Protobuf.Compatibility; -#endif - -namespace Google.Protobuf -{ - /// - /// Immutable array of bytes. - /// - public sealed class ByteString : IEnumerable, IEquatable - { - private static readonly ByteString empty = new ByteString(new byte[0]); - - private readonly byte[] bytes; - - /// - /// Unsafe operations that can cause IO Failure and/or other catestrophic side-effects. - /// - internal static class Unsafe - { - /// - /// Constructs a new ByteString from the given byte array. The array is - /// *not* copied, and must not be modified after this constructor is called. - /// - internal static ByteString FromBytes(byte[] bytes) - { - return new ByteString(bytes); - } - } - - /// - /// Internal use only. Ensure that the provided array is not mutated and belongs to this instance. - /// - internal static ByteString AttachBytes(byte[] bytes) - { - return new ByteString(bytes); - } - - /// - /// Constructs a new ByteString from the given byte array. The array is - /// *not* copied, and must not be modified after this constructor is called. - /// - private ByteString(byte[] bytes) - { - this.bytes = bytes; - } - - /// - /// Returns an empty ByteString. - /// - public static ByteString Empty - { - get { return empty; } - } - - /// - /// Returns the length of this ByteString in bytes. - /// - public int Length - { - get { return bytes.Length; } - } - - /// - /// Returns true if this byte string is empty, false otherwise. - /// - public bool IsEmpty - { - get { return Length == 0; } - } - -#if NETSTANDARD2_0 - /// - /// Provides read-only access to the data of this . - /// No data is copied so this is the most efficient way of accessing. - /// - public ReadOnlySpan Span => new ReadOnlySpan(bytes); -#endif - - /// - /// Converts this into a byte array. - /// - /// The data is copied - changes to the returned array will not be reflected in this ByteString. - /// A byte array with the same data as this ByteString. - public byte[] ToByteArray() - { - return (byte[]) bytes.Clone(); - } - - /// - /// Converts this into a standard base64 representation. - /// - /// A base64 representation of this ByteString. - public string ToBase64() - { - return Convert.ToBase64String(bytes); - } - - /// - /// Constructs a from the Base64 Encoded String. - /// - public static ByteString FromBase64(string bytes) - { - // By handling the empty string explicitly, we not only optimize but we fix a - // problem on CF 2.0. See issue 61 for details. - return bytes == "" ? Empty : new ByteString(Convert.FromBase64String(bytes)); - } - - /// - /// Constructs a from data in the given stream, synchronously. - /// - /// If successful, will be read completely, from the position - /// at the start of the call. - /// The stream to copy into a ByteString. - /// A ByteString with content read from the given stream. - public static ByteString FromStream(Stream stream) - { - ProtoPreconditions.CheckNotNull(stream, nameof(stream)); - int capacity = stream.CanSeek ? checked((int) (stream.Length - stream.Position)) : 0; - var memoryStream = new MemoryStream(capacity); - stream.CopyTo(memoryStream); -#if NETSTANDARD1_0 || NETSTANDARD2_0 - byte[] bytes = memoryStream.ToArray(); -#else - // Avoid an extra copy if we can. - byte[] bytes = memoryStream.Length == memoryStream.Capacity ? memoryStream.GetBuffer() : memoryStream.ToArray(); -#endif - return AttachBytes(bytes); - } - -#if !NET35 - /// - /// Constructs a from data in the given stream, asynchronously. - /// - /// If successful, will be read completely, from the position - /// at the start of the call. - /// The stream to copy into a ByteString. - /// The cancellation token to use when reading from the stream, if any. - /// A ByteString with content read from the given stream. - public async static Task FromStreamAsync(Stream stream, CancellationToken cancellationToken = default(CancellationToken)) - { - ProtoPreconditions.CheckNotNull(stream, nameof(stream)); - int capacity = stream.CanSeek ? checked((int) (stream.Length - stream.Position)) : 0; - var memoryStream = new MemoryStream(capacity); - // We have to specify the buffer size here, as there's no overload accepting the cancellation token - // alone. But it's documented to use 81920 by default if not specified. - await stream.CopyToAsync(memoryStream, 81920, cancellationToken); -#if NETSTANDARD1_0 || NETSTANDARD2_0 - byte[] bytes = memoryStream.ToArray(); -#else - // Avoid an extra copy if we can. - byte[] bytes = memoryStream.Length == memoryStream.Capacity ? memoryStream.GetBuffer() : memoryStream.ToArray(); -#endif - return AttachBytes(bytes); - } -#endif - - /// - /// Constructs a 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 ByteString.CopyFrom(0xaa, 0xbb, ...) form - /// which is primarily useful for testing. - /// - public static ByteString CopyFrom(params byte[] bytes) - { - return new ByteString((byte[]) bytes.Clone()); - } - - /// - /// Constructs a from a portion of a byte array. - /// - public static ByteString CopyFrom(byte[] bytes, int offset, int count) - { - byte[] portion = new byte[count]; - ByteArray.Copy(bytes, offset, portion, 0, count); - return new ByteString(portion); - } - -#if NETSTANDARD2_0 - /// - /// Constructs a from a read only span. The contents - /// are copied, so further modifications to the span will not - /// be reflected in the returned . - /// - public static ByteString CopyFrom(ReadOnlySpan bytes) - { - return new ByteString(bytes.ToArray()); - } -#endif - - /// - /// Creates a new by encoding the specified text with - /// the given encoding. - /// - public static ByteString CopyFrom(string text, Encoding encoding) - { - return new ByteString(encoding.GetBytes(text)); - } - - /// - /// Creates a new by encoding the specified text in UTF-8. - /// - public static ByteString CopyFromUtf8(string text) - { - return CopyFrom(text, Encoding.UTF8); - } - - /// - /// Retuns the byte at the given index. - /// - public byte this[int index] - { - get { return bytes[index]; } - } - - /// - /// Converts this into a string by applying the given encoding. - /// - /// - /// This method should only be used to convert binary data which was the result of encoding - /// text with the given encoding. - /// - /// The encoding to use to decode the binary data into text. - /// The result of decoding the binary data with the given decoding. - public string ToString(Encoding encoding) - { - return encoding.GetString(bytes, 0, bytes.Length); - } - - /// - /// Converts this into a string by applying the UTF-8 encoding. - /// - /// - /// This method should only be used to convert binary data which was the result of encoding - /// text with UTF-8. - /// - /// The result of decoding the binary data with the given decoding. - public string ToStringUtf8() - { - return ToString(Encoding.UTF8); - } - - /// - /// Returns an iterator over the bytes in this . - /// - /// An iterator over the bytes in this object. - public IEnumerator GetEnumerator() - { - return ((IEnumerable) bytes).GetEnumerator(); - } - - /// - /// Returns an iterator over the bytes in this . - /// - /// An iterator over the bytes in this object. - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - /// - /// Creates a CodedInputStream from this ByteString's data. - /// - public CodedInputStream CreateCodedInput() - { - // We trust CodedInputStream not to reveal the provided byte array or modify it - return new CodedInputStream(bytes); - } - - /// - /// Compares two byte strings for equality. - /// - /// The first byte string to compare. - /// The second byte string to compare. - /// true if the byte strings are equal; false otherwise. - public static bool operator ==(ByteString lhs, ByteString rhs) - { - if (ReferenceEquals(lhs, rhs)) - { - return true; - } - if (ReferenceEquals(lhs, null) || ReferenceEquals(rhs, null)) - { - return false; - } - if (lhs.bytes.Length != rhs.bytes.Length) - { - return false; - } - for (int i = 0; i < lhs.Length; i++) - { - if (rhs.bytes[i] != lhs.bytes[i]) - { - return false; - } - } - return true; - } - - /// - /// Compares two byte strings for inequality. - /// - /// The first byte string to compare. - /// The second byte string to compare. - /// false if the byte strings are equal; true otherwise. - public static bool operator !=(ByteString lhs, ByteString rhs) - { - return !(lhs == rhs); - } - - /// - /// Compares this byte string with another object. - /// - /// The object to compare this with. - /// true if refers to an equal ; false otherwise. - public override bool Equals(object obj) - { - return this == (obj as ByteString); - } - - /// - /// Returns a hash code for this object. Two equal byte strings - /// will return the same hash code. - /// - /// A hash code for this object. - public override int GetHashCode() - { - int ret = 23; - foreach (byte b in bytes) - { - ret = (ret * 31) + b; - } - return ret; - } - - /// - /// Compares this byte string with another. - /// - /// The to compare this with. - /// true if refers to an equal byte string; false otherwise. - public bool Equals(ByteString other) - { - return this == other; - } - - /// - /// Used internally by CodedOutputStream to avoid creating a copy for the write - /// - internal void WriteRawBytesTo(CodedOutputStream outputStream) - { - outputStream.WriteRawBytes(bytes, 0, bytes.Length); - } - - /// - /// Copies the entire byte array to the destination array provided at the offset specified. - /// - public void CopyTo(byte[] array, int position) - { - ByteArray.Copy(bytes, 0, array, position, bytes.Length); - } - - /// - /// Writes the entire byte array to the provided stream - /// - public void WriteTo(Stream outputStream) - { - outputStream.Write(bytes, 0, bytes.Length); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/CodedInputStream.cs b/lib/protobuf/csharp/src/Google.Protobuf/CodedInputStream.cs deleted file mode 100644 index 4d13f88..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/CodedInputStream.cs +++ /dev/null @@ -1,1306 +0,0 @@ -#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.Collections; -using System; -using System.Collections.Generic; -using System.IO; - -namespace Google.Protobuf -{ - /// - /// Reads and decodes protocol message fields. - /// - /// - /// - /// This class is generally used by generated code to read appropriate - /// primitives from the stream. It effectively encapsulates the lowest - /// levels of protocol buffer format. - /// - /// - /// Repeated fields and map fields are not handled by this class; use - /// and to serialize such fields. - /// - /// - public sealed class CodedInputStream : IDisposable - { - /// - /// Whether to leave the underlying stream open when disposing of this stream. - /// This is always true when there's no stream. - /// - private readonly bool leaveOpen; - - /// - /// Buffer of data read from the stream or provided at construction time. - /// - private readonly byte[] buffer; - - /// - /// The index of the buffer at which we need to refill from the stream (if there is one). - /// - private int bufferSize; - - private int bufferSizeAfterLimit = 0; - /// - /// The position within the current buffer (i.e. the next byte to read) - /// - private int bufferPos = 0; - - /// - /// The stream to read further input from, or null if the byte array buffer was provided - /// directly on construction, with no further data available. - /// - private readonly Stream input; - - /// - /// The last tag we read. 0 indicates we've read to the end of the stream - /// (or haven't read anything yet). - /// - private uint lastTag = 0; - - /// - /// The next tag, used to store the value read by PeekTag. - /// - private uint nextTag = 0; - private bool hasNextTag = false; - - internal const int DefaultRecursionLimit = 100; - internal const int DefaultSizeLimit = Int32.MaxValue; - internal const int BufferSize = 4096; - - /// - /// The total number of bytes read before the current buffer. The - /// total bytes read up to the current position can be computed as - /// totalBytesRetired + bufferPos. - /// - private int totalBytesRetired = 0; - - /// - /// The absolute position of the end of the current message. - /// - private int currentLimit = int.MaxValue; - - private int recursionDepth = 0; - - private readonly int recursionLimit; - private readonly int sizeLimit; - - #region Construction - // Note that the checks are performed such that we don't end up checking obviously-valid things - // like non-null references for arrays we've just created. - - /// - /// Creates a new CodedInputStream reading data from the given byte array. - /// - public CodedInputStream(byte[] buffer) : this(null, ProtoPreconditions.CheckNotNull(buffer, "buffer"), 0, buffer.Length, true) - { - } - - /// - /// Creates a new that reads from the given byte array slice. - /// - public CodedInputStream(byte[] buffer, int offset, int length) - : this(null, ProtoPreconditions.CheckNotNull(buffer, "buffer"), offset, offset + length, true) - { - if (offset < 0 || offset > buffer.Length) - { - throw new ArgumentOutOfRangeException("offset", "Offset must be within the buffer"); - } - if (length < 0 || offset + length > buffer.Length) - { - throw new ArgumentOutOfRangeException("length", "Length must be non-negative and within the buffer"); - } - } - - /// - /// Creates a new reading data from the given stream, which will be disposed - /// when the returned object is disposed. - /// - /// The stream to read from. - public CodedInputStream(Stream input) : this(input, false) - { - } - - /// - /// Creates a new reading data from the given stream. - /// - /// The stream to read from. - /// true to leave open when the returned - /// is disposed; false to dispose of the given stream when the - /// returned object is disposed. - public CodedInputStream(Stream input, bool leaveOpen) - : this(ProtoPreconditions.CheckNotNull(input, "input"), new byte[BufferSize], 0, 0, leaveOpen) - { - } - - /// - /// Creates a new CodedInputStream reading data from the given - /// stream and buffer, using the default limits. - /// - internal CodedInputStream(Stream input, byte[] buffer, int bufferPos, int bufferSize, bool leaveOpen) - { - this.input = input; - this.buffer = buffer; - this.bufferPos = bufferPos; - this.bufferSize = bufferSize; - this.sizeLimit = DefaultSizeLimit; - this.recursionLimit = DefaultRecursionLimit; - this.leaveOpen = leaveOpen; - } - - /// - /// Creates a new CodedInputStream reading data from the given - /// stream and buffer, using the specified limits. - /// - /// - /// This chains to the version with the default limits instead of vice versa to avoid - /// having to check that the default values are valid every time. - /// - internal CodedInputStream(Stream input, byte[] buffer, int bufferPos, int bufferSize, int sizeLimit, int recursionLimit, bool leaveOpen) - : this(input, buffer, bufferPos, bufferSize, leaveOpen) - { - if (sizeLimit <= 0) - { - throw new ArgumentOutOfRangeException("sizeLimit", "Size limit must be positive"); - } - if (recursionLimit <= 0) - { - throw new ArgumentOutOfRangeException("recursionLimit!", "Recursion limit must be positive"); - } - this.sizeLimit = sizeLimit; - this.recursionLimit = recursionLimit; - } - #endregion - - /// - /// Creates a with the specified size and recursion limits, reading - /// from an input stream. - /// - /// - /// This method exists separately from the constructor to reduce the number of constructor overloads. - /// It is likely to be used considerably less frequently than the constructors, as the default limits - /// are suitable for most use cases. - /// - /// The input stream to read from - /// The total limit of data to read from the stream. - /// The maximum recursion depth to allow while reading. - /// A CodedInputStream reading from with the specified size - /// and recursion limits. - public static CodedInputStream CreateWithLimits(Stream input, int sizeLimit, int recursionLimit) - { - // Note: we may want an overload accepting leaveOpen - return new CodedInputStream(input, new byte[BufferSize], 0, 0, sizeLimit, recursionLimit, false); - } - - /// - /// Returns the current position in the input stream, or the position in the input buffer - /// - public long Position - { - get - { - if (input != null) - { - return input.Position - ((bufferSize + bufferSizeAfterLimit) - bufferPos); - } - return bufferPos; - } - } - - /// - /// Returns the last tag read, or 0 if no tags have been read or we've read beyond - /// the end of the stream. - /// - internal uint LastTag { get { return lastTag; } } - - /// - /// Returns the size limit for this stream. - /// - /// - /// This limit is applied when reading from the underlying stream, as a sanity check. It is - /// not applied when reading from a byte array data source without an underlying stream. - /// The default value is Int32.MaxValue. - /// - /// - /// The size limit. - /// - public int SizeLimit { get { return sizeLimit; } } - - /// - /// Returns the recursion limit for this stream. This limit is applied whilst reading messages, - /// to avoid maliciously-recursive data. - /// - /// - /// The default limit is 100. - /// - /// - /// The recursion limit for this stream. - /// - public int RecursionLimit { get { return recursionLimit; } } - - /// - /// Internal-only property; when set to true, unknown fields will be discarded while parsing. - /// - internal bool DiscardUnknownFields { get; set; } - - /// - /// Internal-only property; provides extension identifiers to compatible messages while parsing. - /// - internal ExtensionRegistry ExtensionRegistry { get; set; } - - /// - /// Disposes of this instance, potentially closing any underlying stream. - /// - /// - /// As there is no flushing to perform here, disposing of a which - /// was constructed with the leaveOpen option parameter set to true (or one which - /// was constructed to read from a byte array) has no effect. - /// - public void Dispose() - { - if (!leaveOpen) - { - input.Dispose(); - } - } - - #region Validation - /// - /// Verifies that the last call to ReadTag() returned tag 0 - in other words, - /// we've reached the end of the stream when we expected to. - /// - /// The - /// tag read was not the one specified - internal void CheckReadEndOfStreamTag() - { - if (lastTag != 0) - { - throw InvalidProtocolBufferException.MoreDataAvailable(); - } - } - #endregion - - #region Reading of tags etc - - /// - /// Peeks at the next field tag. This is like calling , but the - /// tag is not consumed. (So a subsequent call to will return the - /// same value.) - /// - public uint PeekTag() - { - if (hasNextTag) - { - return nextTag; - } - - uint savedLast = lastTag; - nextTag = ReadTag(); - hasNextTag = true; - lastTag = savedLast; // Undo the side effect of ReadTag - return nextTag; - } - - /// - /// Reads a field tag, returning the tag of 0 for "end of stream". - /// - /// - /// If this method returns 0, it doesn't necessarily mean the end of all - /// the data in this CodedInputStream; it may be the end of the logical stream - /// for an embedded message, for example. - /// - /// The next field tag, or 0 for end of stream. (0 is never a valid tag.) - public uint ReadTag() - { - if (hasNextTag) - { - lastTag = nextTag; - hasNextTag = false; - return lastTag; - } - - // Optimize for the incredibly common case of having at least two bytes left in the buffer, - // and those two bytes being enough to get the tag. This will be true for fields up to 4095. - if (bufferPos + 2 <= bufferSize) - { - int tmp = buffer[bufferPos++]; - if (tmp < 128) - { - lastTag = (uint)tmp; - } - else - { - int result = tmp & 0x7f; - if ((tmp = buffer[bufferPos++]) < 128) - { - result |= tmp << 7; - lastTag = (uint) result; - } - else - { - // Nope, rewind and go the potentially slow route. - bufferPos -= 2; - lastTag = ReadRawVarint32(); - } - } - } - else - { - if (IsAtEnd) - { - lastTag = 0; - return 0; - } - - lastTag = ReadRawVarint32(); - } - if (WireFormat.GetTagFieldNumber(lastTag) == 0) - { - // If we actually read a tag with a field of 0, that's not a valid tag. - throw InvalidProtocolBufferException.InvalidTag(); - } - if (ReachedLimit) - { - return 0; - } - return lastTag; - } - - /// - /// Skips the data for the field with the tag we've just read. - /// This should be called directly after , when - /// the caller wishes to skip an unknown field. - /// - /// - /// This method throws if the last-read tag was an end-group tag. - /// If a caller wishes to skip a group, they should skip the whole group, by calling this method after reading the - /// start-group tag. This behavior allows callers to call this method on any field they don't understand, correctly - /// resulting in an error if an end-group tag has not been paired with an earlier start-group tag. - /// - /// The last tag was an end-group tag - /// The last read operation read to the end of the logical stream - public void SkipLastField() - { - if (lastTag == 0) - { - throw new InvalidOperationException("SkipLastField cannot be called at the end of a stream"); - } - switch (WireFormat.GetTagWireType(lastTag)) - { - case WireFormat.WireType.StartGroup: - SkipGroup(lastTag); - break; - case WireFormat.WireType.EndGroup: - throw new InvalidProtocolBufferException( - "SkipLastField called on an end-group tag, indicating that the corresponding start-group was missing"); - case WireFormat.WireType.Fixed32: - ReadFixed32(); - break; - case WireFormat.WireType.Fixed64: - ReadFixed64(); - break; - case WireFormat.WireType.LengthDelimited: - var length = ReadLength(); - SkipRawBytes(length); - break; - case WireFormat.WireType.Varint: - ReadRawVarint32(); - break; - } - } - - /// - /// Skip a group. - /// - internal void SkipGroup(uint startGroupTag) - { - // Note: Currently we expect this to be the way that groups are read. We could put the recursion - // depth changes into the ReadTag method instead, potentially... - recursionDepth++; - if (recursionDepth >= recursionLimit) - { - throw InvalidProtocolBufferException.RecursionLimitExceeded(); - } - uint tag; - while (true) - { - tag = ReadTag(); - if (tag == 0) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - // Can't call SkipLastField for this case- that would throw. - if (WireFormat.GetTagWireType(tag) == WireFormat.WireType.EndGroup) - { - break; - } - // This recursion will allow us to handle nested groups. - SkipLastField(); - } - int startField = WireFormat.GetTagFieldNumber(startGroupTag); - int endField = WireFormat.GetTagFieldNumber(tag); - if (startField != endField) - { - throw new InvalidProtocolBufferException( - $"Mismatched end-group tag. Started with field {startField}; ended with field {endField}"); - } - recursionDepth--; - } - - /// - /// Reads a double field from the stream. - /// - public double ReadDouble() - { - return BitConverter.Int64BitsToDouble((long) ReadRawLittleEndian64()); - } - - /// - /// Reads a float field from the stream. - /// - public float ReadFloat() - { - if (BitConverter.IsLittleEndian && 4 <= bufferSize - bufferPos) - { - float ret = BitConverter.ToSingle(buffer, bufferPos); - bufferPos += 4; - return ret; - } - else - { - byte[] rawBytes = ReadRawBytes(4); - if (!BitConverter.IsLittleEndian) - { - ByteArray.Reverse(rawBytes); - } - return BitConverter.ToSingle(rawBytes, 0); - } - } - - /// - /// Reads a uint64 field from the stream. - /// - public ulong ReadUInt64() - { - return ReadRawVarint64(); - } - - /// - /// Reads an int64 field from the stream. - /// - public long ReadInt64() - { - return (long) ReadRawVarint64(); - } - - /// - /// Reads an int32 field from the stream. - /// - public int ReadInt32() - { - return (int) ReadRawVarint32(); - } - - /// - /// Reads a fixed64 field from the stream. - /// - public ulong ReadFixed64() - { - return ReadRawLittleEndian64(); - } - - /// - /// Reads a fixed32 field from the stream. - /// - public uint ReadFixed32() - { - return ReadRawLittleEndian32(); - } - - /// - /// Reads a bool field from the stream. - /// - public bool ReadBool() - { - return ReadRawVarint32() != 0; - } - - /// - /// Reads a string field from the stream. - /// - public string ReadString() - { - int length = ReadLength(); - // No need to read any data for an empty string. - if (length == 0) - { - return ""; - } - if (length <= bufferSize - bufferPos && length > 0) - { - // Fast path: We already have the bytes in a contiguous buffer, so - // just copy directly from it. - String result = CodedOutputStream.Utf8Encoding.GetString(buffer, bufferPos, length); - bufferPos += length; - return result; - } - // Slow path: Build a byte array first then copy it. - return CodedOutputStream.Utf8Encoding.GetString(ReadRawBytes(length), 0, length); - } - - /// - /// Reads an embedded message field value from the stream. - /// - public void ReadMessage(IMessage builder) - { - int length = ReadLength(); - if (recursionDepth >= recursionLimit) - { - throw InvalidProtocolBufferException.RecursionLimitExceeded(); - } - int oldLimit = PushLimit(length); - ++recursionDepth; - builder.MergeFrom(this); - CheckReadEndOfStreamTag(); - // Check that we've read exactly as much data as expected. - if (!ReachedLimit) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - --recursionDepth; - PopLimit(oldLimit); - } - - /// - /// Reads an embedded group field from the stream. - /// - public void ReadGroup(IMessage builder) - { - if (recursionDepth >= recursionLimit) - { - throw InvalidProtocolBufferException.RecursionLimitExceeded(); - } - ++recursionDepth; - builder.MergeFrom(this); - --recursionDepth; - } - - /// - /// Reads a bytes field value from the stream. - /// - public ByteString ReadBytes() - { - int length = ReadLength(); - if (length <= bufferSize - bufferPos && length > 0) - { - // Fast path: We already have the bytes in a contiguous buffer, so - // just copy directly from it. - ByteString result = ByteString.CopyFrom(buffer, bufferPos, length); - bufferPos += length; - return result; - } - else - { - // Slow path: Build a byte array and attach it to a new ByteString. - return ByteString.AttachBytes(ReadRawBytes(length)); - } - } - - /// - /// Reads a uint32 field value from the stream. - /// - public uint ReadUInt32() - { - return ReadRawVarint32(); - } - - /// - /// Reads an enum field value from the stream. - /// - public int ReadEnum() - { - // Currently just a pass-through, but it's nice to separate it logically from WriteInt32. - return (int) ReadRawVarint32(); - } - - /// - /// Reads an sfixed32 field value from the stream. - /// - public int ReadSFixed32() - { - return (int) ReadRawLittleEndian32(); - } - - /// - /// Reads an sfixed64 field value from the stream. - /// - public long ReadSFixed64() - { - return (long) ReadRawLittleEndian64(); - } - - /// - /// Reads an sint32 field value from the stream. - /// - public int ReadSInt32() - { - return DecodeZigZag32(ReadRawVarint32()); - } - - /// - /// Reads an sint64 field value from the stream. - /// - public long ReadSInt64() - { - return DecodeZigZag64(ReadRawVarint64()); - } - - /// - /// Reads a length for length-delimited data. - /// - /// - /// This is internally just reading a varint, but this method exists - /// to make the calling code clearer. - /// - public int ReadLength() - { - return (int) ReadRawVarint32(); - } - - /// - /// Peeks at the next tag in the stream. If it matches , - /// the tag is consumed and the method returns true; otherwise, the - /// stream is left in the original position and the method returns false. - /// - public bool MaybeConsumeTag(uint tag) - { - if (PeekTag() == tag) - { - hasNextTag = false; - return true; - } - return false; - } - - #endregion - - #region Underlying reading primitives - - /// - /// Same code as ReadRawVarint32, but read each byte individually, checking for - /// buffer overflow. - /// - private uint SlowReadRawVarint32() - { - int tmp = ReadRawByte(); - if (tmp < 128) - { - return (uint) tmp; - } - int result = tmp & 0x7f; - if ((tmp = ReadRawByte()) < 128) - { - result |= tmp << 7; - } - else - { - result |= (tmp & 0x7f) << 7; - if ((tmp = ReadRawByte()) < 128) - { - result |= tmp << 14; - } - else - { - result |= (tmp & 0x7f) << 14; - if ((tmp = ReadRawByte()) < 128) - { - result |= tmp << 21; - } - else - { - result |= (tmp & 0x7f) << 21; - result |= (tmp = ReadRawByte()) << 28; - if (tmp >= 128) - { - // Discard upper 32 bits. - for (int i = 0; i < 5; i++) - { - if (ReadRawByte() < 128) - { - return (uint) result; - } - } - throw InvalidProtocolBufferException.MalformedVarint(); - } - } - } - } - return (uint) result; - } - - /// - /// Reads a raw Varint from the stream. If larger than 32 bits, discard the upper bits. - /// This method is optimised for the case where we've got lots of data in the buffer. - /// That means we can check the size just once, then just read directly from the buffer - /// without constant rechecking of the buffer length. - /// - internal uint ReadRawVarint32() - { - if (bufferPos + 5 > bufferSize) - { - return SlowReadRawVarint32(); - } - - int tmp = buffer[bufferPos++]; - if (tmp < 128) - { - return (uint) tmp; - } - int result = tmp & 0x7f; - if ((tmp = buffer[bufferPos++]) < 128) - { - result |= tmp << 7; - } - else - { - result |= (tmp & 0x7f) << 7; - if ((tmp = buffer[bufferPos++]) < 128) - { - result |= tmp << 14; - } - else - { - result |= (tmp & 0x7f) << 14; - if ((tmp = buffer[bufferPos++]) < 128) - { - result |= tmp << 21; - } - else - { - result |= (tmp & 0x7f) << 21; - result |= (tmp = buffer[bufferPos++]) << 28; - if (tmp >= 128) - { - // Discard upper 32 bits. - // Note that this has to use ReadRawByte() as we only ensure we've - // got at least 5 bytes at the start of the method. This lets us - // use the fast path in more cases, and we rarely hit this section of code. - for (int i = 0; i < 5; i++) - { - if (ReadRawByte() < 128) - { - return (uint) result; - } - } - throw InvalidProtocolBufferException.MalformedVarint(); - } - } - } - } - return (uint) result; - } - - /// - /// Reads a varint from the input one byte at a time, so that it does not - /// read any bytes after the end of the varint. If you simply wrapped the - /// stream in a CodedInputStream and used ReadRawVarint32(Stream) - /// then you would probably end up reading past the end of the varint since - /// CodedInputStream buffers its input. - /// - /// - /// - internal static uint ReadRawVarint32(Stream input) - { - int result = 0; - int offset = 0; - for (; offset < 32; offset += 7) - { - int b = input.ReadByte(); - if (b == -1) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - result |= (b & 0x7f) << offset; - if ((b & 0x80) == 0) - { - return (uint) result; - } - } - // Keep reading up to 64 bits. - for (; offset < 64; offset += 7) - { - int b = input.ReadByte(); - if (b == -1) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - if ((b & 0x80) == 0) - { - return (uint) result; - } - } - throw InvalidProtocolBufferException.MalformedVarint(); - } - - /// - /// Reads a raw varint from the stream. - /// - internal ulong ReadRawVarint64() - { - int shift = 0; - ulong result = 0; - while (shift < 64) - { - byte b = ReadRawByte(); - result |= (ulong) (b & 0x7F) << shift; - if ((b & 0x80) == 0) - { - return result; - } - shift += 7; - } - throw InvalidProtocolBufferException.MalformedVarint(); - } - - /// - /// Reads a 32-bit little-endian integer from the stream. - /// - internal uint ReadRawLittleEndian32() - { - uint b1 = ReadRawByte(); - uint b2 = ReadRawByte(); - uint b3 = ReadRawByte(); - uint b4 = ReadRawByte(); - return b1 | (b2 << 8) | (b3 << 16) | (b4 << 24); - } - - /// - /// Reads a 64-bit little-endian integer from the stream. - /// - internal ulong ReadRawLittleEndian64() - { - ulong b1 = ReadRawByte(); - ulong b2 = ReadRawByte(); - ulong b3 = ReadRawByte(); - ulong b4 = ReadRawByte(); - ulong b5 = ReadRawByte(); - ulong b6 = ReadRawByte(); - ulong b7 = ReadRawByte(); - ulong b8 = ReadRawByte(); - return b1 | (b2 << 8) | (b3 << 16) | (b4 << 24) - | (b5 << 32) | (b6 << 40) | (b7 << 48) | (b8 << 56); - } - - /// - /// Decode a 32-bit value with ZigZag encoding. - /// - /// - /// ZigZag encodes signed integers into values that can be efficiently - /// encoded with varint. (Otherwise, negative values must be - /// sign-extended to 64 bits to be varint encoded, thus always taking - /// 10 bytes on the wire.) - /// - internal static int DecodeZigZag32(uint n) - { - return (int)(n >> 1) ^ -(int)(n & 1); - } - - /// - /// Decode a 32-bit value with ZigZag encoding. - /// - /// - /// ZigZag encodes signed integers into values that can be efficiently - /// encoded with varint. (Otherwise, negative values must be - /// sign-extended to 64 bits to be varint encoded, thus always taking - /// 10 bytes on the wire.) - /// - internal static long DecodeZigZag64(ulong n) - { - return (long)(n >> 1) ^ -(long)(n & 1); - } - #endregion - - #region Internal reading and buffer management - - /// - /// Sets currentLimit to (current position) + byteLimit. This is called - /// when descending into a length-delimited embedded message. The previous - /// limit is returned. - /// - /// The old limit. - internal int PushLimit(int byteLimit) - { - if (byteLimit < 0) - { - throw InvalidProtocolBufferException.NegativeSize(); - } - byteLimit += totalBytesRetired + bufferPos; - int oldLimit = currentLimit; - if (byteLimit > oldLimit) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - currentLimit = byteLimit; - - RecomputeBufferSizeAfterLimit(); - - return oldLimit; - } - - private void RecomputeBufferSizeAfterLimit() - { - bufferSize += bufferSizeAfterLimit; - int bufferEnd = totalBytesRetired + bufferSize; - if (bufferEnd > currentLimit) - { - // Limit is in current buffer. - bufferSizeAfterLimit = bufferEnd - currentLimit; - bufferSize -= bufferSizeAfterLimit; - } - else - { - bufferSizeAfterLimit = 0; - } - } - - /// - /// Discards the current limit, returning the previous limit. - /// - internal void PopLimit(int oldLimit) - { - currentLimit = oldLimit; - RecomputeBufferSizeAfterLimit(); - } - - /// - /// Returns whether or not all the data before the limit has been read. - /// - /// - internal bool ReachedLimit - { - get - { - if (currentLimit == int.MaxValue) - { - return false; - } - int currentAbsolutePosition = totalBytesRetired + bufferPos; - return currentAbsolutePosition >= currentLimit; - } - } - - /// - /// Returns true if the stream has reached the end of the input. This is the - /// case if either the end of the underlying input source has been reached or - /// the stream has reached a limit created using PushLimit. - /// - public bool IsAtEnd - { - get { return bufferPos == bufferSize && !RefillBuffer(false); } - } - - /// - /// Called when buffer is empty to read more bytes from the - /// input. If is true, RefillBuffer() gurantees that - /// either there will be at least one byte in the buffer when it returns - /// or it will throw an exception. If is false, - /// RefillBuffer() returns false if no more bytes were available. - /// - /// - /// - private bool RefillBuffer(bool mustSucceed) - { - if (bufferPos < bufferSize) - { - throw new InvalidOperationException("RefillBuffer() called when buffer wasn't empty."); - } - - if (totalBytesRetired + bufferSize == currentLimit) - { - // Oops, we hit a limit. - if (mustSucceed) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - else - { - return false; - } - } - - totalBytesRetired += bufferSize; - - bufferPos = 0; - bufferSize = (input == null) ? 0 : input.Read(buffer, 0, buffer.Length); - if (bufferSize < 0) - { - throw new InvalidOperationException("Stream.Read returned a negative count"); - } - if (bufferSize == 0) - { - if (mustSucceed) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - else - { - return false; - } - } - else - { - RecomputeBufferSizeAfterLimit(); - int totalBytesRead = - totalBytesRetired + bufferSize + bufferSizeAfterLimit; - if (totalBytesRead < 0 || totalBytesRead > sizeLimit) - { - throw InvalidProtocolBufferException.SizeLimitExceeded(); - } - return true; - } - } - - /// - /// Read one byte from the input. - /// - /// - /// the end of the stream or the current limit was reached - /// - internal byte ReadRawByte() - { - if (bufferPos == bufferSize) - { - RefillBuffer(true); - } - return buffer[bufferPos++]; - } - - /// - /// Reads a fixed size of bytes from the input. - /// - /// - /// the end of the stream or the current limit was reached - /// - internal byte[] ReadRawBytes(int size) - { - if (size < 0) - { - throw InvalidProtocolBufferException.NegativeSize(); - } - - if (totalBytesRetired + bufferPos + size > currentLimit) - { - // Read to the end of the stream (up to the current limit) anyway. - SkipRawBytes(currentLimit - totalBytesRetired - bufferPos); - // Then fail. - throw InvalidProtocolBufferException.TruncatedMessage(); - } - - if (size <= bufferSize - bufferPos) - { - // We have all the bytes we need already. - byte[] bytes = new byte[size]; - ByteArray.Copy(buffer, bufferPos, bytes, 0, size); - bufferPos += size; - return bytes; - } - else if (size < buffer.Length) - { - // Reading more bytes than are in the buffer, but not an excessive number - // of bytes. We can safely allocate the resulting array ahead of time. - - // First copy what we have. - byte[] bytes = new byte[size]; - int pos = bufferSize - bufferPos; - ByteArray.Copy(buffer, bufferPos, bytes, 0, pos); - bufferPos = bufferSize; - - // We want to use RefillBuffer() and then copy from the buffer into our - // byte array rather than reading directly into our byte array because - // the input may be unbuffered. - RefillBuffer(true); - - while (size - pos > bufferSize) - { - Buffer.BlockCopy(buffer, 0, bytes, pos, bufferSize); - pos += bufferSize; - bufferPos = bufferSize; - RefillBuffer(true); - } - - ByteArray.Copy(buffer, 0, bytes, pos, size - pos); - bufferPos = size - pos; - - return bytes; - } - else - { - // The size is very large. For security reasons, we can't allocate the - // entire byte array yet. The size comes directly from the input, so a - // maliciously-crafted message could provide a bogus very large size in - // order to trick the app into allocating a lot of memory. We avoid this - // by allocating and reading only a small chunk at a time, so that the - // malicious message must actually *be* extremely large to cause - // problems. Meanwhile, we limit the allowed size of a message elsewhere. - - // Remember the buffer markers since we'll have to copy the bytes out of - // it later. - int originalBufferPos = bufferPos; - int originalBufferSize = bufferSize; - - // Mark the current buffer consumed. - totalBytesRetired += bufferSize; - bufferPos = 0; - bufferSize = 0; - - // Read all the rest of the bytes we need. - int sizeLeft = size - (originalBufferSize - originalBufferPos); - List chunks = new List(); - - while (sizeLeft > 0) - { - byte[] chunk = new byte[Math.Min(sizeLeft, buffer.Length)]; - int pos = 0; - while (pos < chunk.Length) - { - int n = (input == null) ? -1 : input.Read(chunk, pos, chunk.Length - pos); - if (n <= 0) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - totalBytesRetired += n; - pos += n; - } - sizeLeft -= chunk.Length; - chunks.Add(chunk); - } - - // OK, got everything. Now concatenate it all into one buffer. - byte[] bytes = new byte[size]; - - // Start by copying the leftover bytes from this.buffer. - int newPos = originalBufferSize - originalBufferPos; - ByteArray.Copy(buffer, originalBufferPos, bytes, 0, newPos); - - // And now all the chunks. - foreach (byte[] chunk in chunks) - { - Buffer.BlockCopy(chunk, 0, bytes, newPos, chunk.Length); - newPos += chunk.Length; - } - - // Done. - return bytes; - } - } - - /// - /// Reads and discards bytes. - /// - /// the end of the stream - /// or the current limit was reached - private void SkipRawBytes(int size) - { - if (size < 0) - { - throw InvalidProtocolBufferException.NegativeSize(); - } - - if (totalBytesRetired + bufferPos + size > currentLimit) - { - // Read to the end of the stream anyway. - SkipRawBytes(currentLimit - totalBytesRetired - bufferPos); - // Then fail. - throw InvalidProtocolBufferException.TruncatedMessage(); - } - - if (size <= bufferSize - bufferPos) - { - // We have all the bytes we need already. - bufferPos += size; - } - else - { - // Skipping more bytes than are in the buffer. First skip what we have. - int pos = bufferSize - bufferPos; - - // ROK 5/7/2013 Issue #54: should retire all bytes in buffer (bufferSize) - // totalBytesRetired += pos; - totalBytesRetired += bufferSize; - - bufferPos = 0; - bufferSize = 0; - - // Then skip directly from the InputStream for the rest. - if (pos < size) - { - if (input == null) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - SkipImpl(size - pos); - totalBytesRetired += size - pos; - } - } - } - - /// - /// Abstraction of skipping to cope with streams which can't really skip. - /// - private void SkipImpl(int amountToSkip) - { - if (input.CanSeek) - { - long previousPosition = input.Position; - input.Position += amountToSkip; - if (input.Position != previousPosition + amountToSkip) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - } - else - { - byte[] skipBuffer = new byte[Math.Min(1024, amountToSkip)]; - while (amountToSkip > 0) - { - int bytesRead = input.Read(skipBuffer, 0, Math.Min(skipBuffer.Length, amountToSkip)); - if (bytesRead <= 0) - { - throw InvalidProtocolBufferException.TruncatedMessage(); - } - amountToSkip -= bytesRead; - } - } - } - #endregion - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.ComputeSize.cs b/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.ComputeSize.cs deleted file mode 100644 index aa79324..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.ComputeSize.cs +++ /dev/null @@ -1,308 +0,0 @@ -#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 -{ - // This part of CodedOutputStream provides all the static entry points that are used - // by generated code and internally to compute the size of messages prior to being - // written to an instance of CodedOutputStream. - public sealed partial class CodedOutputStream - { - private const int LittleEndian64Size = 8; - private const int LittleEndian32Size = 4; - - internal const int DoubleSize = LittleEndian64Size; - internal const int FloatSize = LittleEndian32Size; - internal const int BoolSize = 1; - - /// - /// Computes the number of bytes that would be needed to encode a - /// double field, including the tag. - /// - public static int ComputeDoubleSize(double value) - { - return DoubleSize; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// float field, including the tag. - /// - public static int ComputeFloatSize(float value) - { - return FloatSize; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// uint64 field, including the tag. - /// - public static int ComputeUInt64Size(ulong value) - { - return ComputeRawVarint64Size(value); - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// int64 field, including the tag. - /// - public static int ComputeInt64Size(long value) - { - return ComputeRawVarint64Size((ulong) value); - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// int32 field, including the tag. - /// - public static int ComputeInt32Size(int value) - { - if (value >= 0) - { - return ComputeRawVarint32Size((uint) value); - } - else - { - // Must sign-extend. - return 10; - } - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// fixed64 field, including the tag. - /// - public static int ComputeFixed64Size(ulong value) - { - return LittleEndian64Size; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// fixed32 field, including the tag. - /// - public static int ComputeFixed32Size(uint value) - { - return LittleEndian32Size; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// bool field, including the tag. - /// - public static int ComputeBoolSize(bool value) - { - return BoolSize; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// string field, including the tag. - /// - public static int ComputeStringSize(String value) - { - int byteArraySize = Utf8Encoding.GetByteCount(value); - return ComputeLengthSize(byteArraySize) + byteArraySize; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// group field, including the tag. - /// - public static int ComputeGroupSize(IMessage value) - { - return value.CalculateSize(); - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// embedded message field, including the tag. - /// - public static int ComputeMessageSize(IMessage value) - { - int size = value.CalculateSize(); - return ComputeLengthSize(size) + size; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// bytes field, including the tag. - /// - public static int ComputeBytesSize(ByteString value) - { - return ComputeLengthSize(value.Length) + value.Length; - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// uint32 field, including the tag. - /// - public static int ComputeUInt32Size(uint value) - { - return ComputeRawVarint32Size(value); - } - - /// - /// Computes the number of bytes that would be needed to encode a - /// enum field, including the tag. The caller is responsible for - /// converting the enum value to its numeric value. - /// - public static int ComputeEnumSize(int value) - { - // Currently just a pass-through, but it's nice to separate it logically. - return ComputeInt32Size(value); - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// sfixed32 field, including the tag. - /// - public static int ComputeSFixed32Size(int value) - { - return LittleEndian32Size; - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// sfixed64 field, including the tag. - /// - public static int ComputeSFixed64Size(long value) - { - return LittleEndian64Size; - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// sint32 field, including the tag. - /// - public static int ComputeSInt32Size(int value) - { - return ComputeRawVarint32Size(EncodeZigZag32(value)); - } - - /// - /// Computes the number of bytes that would be needed to encode an - /// sint64 field, including the tag. - /// - public static int ComputeSInt64Size(long value) - { - return ComputeRawVarint64Size(EncodeZigZag64(value)); - } - - /// - /// Computes the number of bytes that would be needed to encode a length, - /// as written by . - /// - public static int ComputeLengthSize(int length) - { - return ComputeRawVarint32Size((uint) length); - } - - /// - /// Computes the number of bytes that would be needed to encode a varint. - /// - public static int ComputeRawVarint32Size(uint value) - { - if ((value & (0xffffffff << 7)) == 0) - { - return 1; - } - if ((value & (0xffffffff << 14)) == 0) - { - return 2; - } - if ((value & (0xffffffff << 21)) == 0) - { - return 3; - } - if ((value & (0xffffffff << 28)) == 0) - { - return 4; - } - return 5; - } - - /// - /// Computes the number of bytes that would be needed to encode a varint. - /// - public static int ComputeRawVarint64Size(ulong value) - { - if ((value & (0xffffffffffffffffL << 7)) == 0) - { - return 1; - } - if ((value & (0xffffffffffffffffL << 14)) == 0) - { - return 2; - } - if ((value & (0xffffffffffffffffL << 21)) == 0) - { - return 3; - } - if ((value & (0xffffffffffffffffL << 28)) == 0) - { - return 4; - } - if ((value & (0xffffffffffffffffL << 35)) == 0) - { - return 5; - } - if ((value & (0xffffffffffffffffL << 42)) == 0) - { - return 6; - } - if ((value & (0xffffffffffffffffL << 49)) == 0) - { - return 7; - } - if ((value & (0xffffffffffffffffL << 56)) == 0) - { - return 8; - } - if ((value & (0xffffffffffffffffL << 63)) == 0) - { - return 9; - } - return 10; - } - - /// - /// Computes the number of bytes that would be needed to encode a tag. - /// - public static int ComputeTagSize(int fieldNumber) - { - return ComputeRawVarint32Size(WireFormat.MakeTag(fieldNumber, 0)); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.cs b/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.cs deleted file mode 100644 index f9ad290..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/CodedOutputStream.cs +++ /dev/null @@ -1,770 +0,0 @@ -#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.Collections; -using System; -using System.IO; -using System.Text; - -namespace Google.Protobuf -{ - /// - /// Encodes and writes protocol message fields. - /// - /// - /// - /// This class is generally used by generated code to write appropriate - /// primitives to the stream. It effectively encapsulates the lowest - /// levels of protocol buffer format. Unlike some other implementations, - /// this does not include combined "write tag and value" methods. Generated - /// code knows the exact byte representations of the tags they're going to write, - /// so there's no need to re-encode them each time. Manually-written code calling - /// this class should just call one of the WriteTag overloads before each value. - /// - /// - /// Repeated fields and map fields are not handled by this class; use RepeatedField<T> - /// and MapField<TKey, TValue> to serialize such fields. - /// - /// - public sealed partial class CodedOutputStream : IDisposable - { - // "Local" copy of Encoding.UTF8, for efficiency. (Yes, it makes a difference.) - internal static readonly Encoding Utf8Encoding = Encoding.UTF8; - - /// - /// The buffer size used by CreateInstance(Stream). - /// - public static readonly int DefaultBufferSize = 4096; - - private readonly bool leaveOpen; - private readonly byte[] buffer; - private readonly int limit; - private int position; - private readonly Stream output; - - #region Construction - /// - /// Creates a new CodedOutputStream that writes directly to the given - /// byte array. If more bytes are written than fit in the array, - /// OutOfSpaceException will be thrown. - /// - public CodedOutputStream(byte[] flatArray) : this(flatArray, 0, flatArray.Length) - { - } - - /// - /// Creates a new CodedOutputStream that writes directly to the given - /// byte array slice. If more bytes are written than fit in the array, - /// OutOfSpaceException will be thrown. - /// - private CodedOutputStream(byte[] buffer, int offset, int length) - { - this.output = null; - this.buffer = buffer; - this.position = offset; - this.limit = offset + length; - leaveOpen = true; // Simple way of avoiding trying to dispose of a null reference - } - - private CodedOutputStream(Stream output, byte[] buffer, bool leaveOpen) - { - this.output = ProtoPreconditions.CheckNotNull(output, nameof(output)); - this.buffer = buffer; - this.position = 0; - this.limit = buffer.Length; - this.leaveOpen = leaveOpen; - } - - /// - /// Creates a new which write to the given stream, and disposes of that - /// stream when the returned CodedOutputStream is disposed. - /// - /// The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - public CodedOutputStream(Stream output) : this(output, DefaultBufferSize, false) - { - } - - /// - /// Creates a new CodedOutputStream which write to the given stream and uses - /// the specified buffer size. - /// - /// The stream to write to. It will be disposed when the returned CodedOutputStream is disposed. - /// The size of buffer to use internally. - public CodedOutputStream(Stream output, int bufferSize) : this(output, new byte[bufferSize], false) - { - } - - /// - /// Creates a new CodedOutputStream which write to the given stream. - /// - /// The stream to write to. - /// If true, is left open when the returned CodedOutputStream is disposed; - /// if false, the provided stream is disposed as well. - public CodedOutputStream(Stream output, bool leaveOpen) : this(output, DefaultBufferSize, leaveOpen) - { - } - - /// - /// Creates a new CodedOutputStream which write to the given stream and uses - /// the specified buffer size. - /// - /// The stream to write to. - /// The size of buffer to use internally. - /// If true, is left open when the returned CodedOutputStream is disposed; - /// if false, the provided stream is disposed as well. - public CodedOutputStream(Stream output, int bufferSize, bool leaveOpen) : this(output, new byte[bufferSize], leaveOpen) - { - } - #endregion - - /// - /// Returns the current position in the stream, or the position in the output buffer - /// - public long Position - { - get - { - if (output != null) - { - return output.Position + position; - } - return position; - } - } - - #region Writing of values (not including tags) - - /// - /// Writes a double field value, without a tag, to the stream. - /// - /// The value to write - public void WriteDouble(double value) - { - WriteRawLittleEndian64((ulong)BitConverter.DoubleToInt64Bits(value)); - } - - /// - /// Writes a float field value, without a tag, to the stream. - /// - /// The value to write - public void WriteFloat(float value) - { - byte[] rawBytes = BitConverter.GetBytes(value); - if (!BitConverter.IsLittleEndian) - { - ByteArray.Reverse(rawBytes); - } - - if (limit - position >= 4) - { - buffer[position++] = rawBytes[0]; - buffer[position++] = rawBytes[1]; - buffer[position++] = rawBytes[2]; - buffer[position++] = rawBytes[3]; - } - else - { - WriteRawBytes(rawBytes, 0, 4); - } - } - - /// - /// Writes a uint64 field value, without a tag, to the stream. - /// - /// The value to write - public void WriteUInt64(ulong value) - { - WriteRawVarint64(value); - } - - /// - /// Writes an int64 field value, without a tag, to the stream. - /// - /// The value to write - public void WriteInt64(long value) - { - WriteRawVarint64((ulong) value); - } - - /// - /// Writes an int32 field value, without a tag, to the stream. - /// - /// The value to write - public void WriteInt32(int value) - { - if (value >= 0) - { - WriteRawVarint32((uint) value); - } - else - { - // Must sign-extend. - WriteRawVarint64((ulong) value); - } - } - - /// - /// Writes a fixed64 field value, without a tag, to the stream. - /// - /// The value to write - public void WriteFixed64(ulong value) - { - WriteRawLittleEndian64(value); - } - - /// - /// Writes a fixed32 field value, without a tag, to the stream. - /// - /// The value to write - public void WriteFixed32(uint value) - { - WriteRawLittleEndian32(value); - } - - /// - /// Writes a bool field value, without a tag, to the stream. - /// - /// The value to write - public void WriteBool(bool value) - { - WriteRawByte(value ? (byte) 1 : (byte) 0); - } - - /// - /// Writes a string field value, without a tag, to the stream. - /// The data is length-prefixed. - /// - /// The value to write - public void WriteString(string value) - { - // Optimise the case where we have enough space to write - // the string directly to the buffer, which should be common. - int length = Utf8Encoding.GetByteCount(value); - WriteLength(length); - if (limit - position >= length) - { - if (length == value.Length) // Must be all ASCII... - { - for (int i = 0; i < length; i++) - { - buffer[position + i] = (byte)value[i]; - } - } - else - { - Utf8Encoding.GetBytes(value, 0, value.Length, buffer, position); - } - position += length; - } - else - { - byte[] bytes = Utf8Encoding.GetBytes(value); - WriteRawBytes(bytes); - } - } - - /// - /// Writes a message, without a tag, to the stream. - /// The data is length-prefixed. - /// - /// The value to write - public void WriteMessage(IMessage value) - { - WriteLength(value.CalculateSize()); - value.WriteTo(this); - } - - /// - /// Writes a group, without a tag, to the stream. - /// - /// The value to write - public void WriteGroup(IMessage value) - { - value.WriteTo(this); - } - - /// - /// Write a byte string, without a tag, to the stream. - /// The data is length-prefixed. - /// - /// The value to write - public void WriteBytes(ByteString value) - { - WriteLength(value.Length); - value.WriteRawBytesTo(this); - } - - /// - /// Writes a uint32 value, without a tag, to the stream. - /// - /// The value to write - public void WriteUInt32(uint value) - { - WriteRawVarint32(value); - } - - /// - /// Writes an enum value, without a tag, to the stream. - /// - /// The value to write - public void WriteEnum(int value) - { - WriteInt32(value); - } - - /// - /// Writes an sfixed32 value, without a tag, to the stream. - /// - /// The value to write. - public void WriteSFixed32(int value) - { - WriteRawLittleEndian32((uint) value); - } - - /// - /// Writes an sfixed64 value, without a tag, to the stream. - /// - /// The value to write - public void WriteSFixed64(long value) - { - WriteRawLittleEndian64((ulong) value); - } - - /// - /// Writes an sint32 value, without a tag, to the stream. - /// - /// The value to write - public void WriteSInt32(int value) - { - WriteRawVarint32(EncodeZigZag32(value)); - } - - /// - /// Writes an sint64 value, without a tag, to the stream. - /// - /// The value to write - public void WriteSInt64(long value) - { - WriteRawVarint64(EncodeZigZag64(value)); - } - - /// - /// Writes a length (in bytes) for length-delimited data. - /// - /// - /// This method simply writes a rawint, but exists for clarity in calling code. - /// - /// Length value, in bytes. - public void WriteLength(int length) - { - WriteRawVarint32((uint) length); - } - - #endregion - - #region Raw tag writing - /// - /// Encodes and writes a tag. - /// - /// The number of the field to write the tag for - /// The wire format type of the tag to write - public void WriteTag(int fieldNumber, WireFormat.WireType type) - { - WriteRawVarint32(WireFormat.MakeTag(fieldNumber, type)); - } - - /// - /// Writes an already-encoded tag. - /// - /// The encoded tag - public void WriteTag(uint tag) - { - WriteRawVarint32(tag); - } - - /// - /// Writes the given single-byte tag directly to the stream. - /// - /// The encoded tag - public void WriteRawTag(byte b1) - { - WriteRawByte(b1); - } - - /// - /// Writes the given two-byte tag directly to the stream. - /// - /// The first byte of the encoded tag - /// The second byte of the encoded tag - public void WriteRawTag(byte b1, byte b2) - { - WriteRawByte(b1); - WriteRawByte(b2); - } - - /// - /// Writes the given three-byte tag directly to the stream. - /// - /// The first byte of the encoded tag - /// The second byte of the encoded tag - /// The third byte of the encoded tag - public void WriteRawTag(byte b1, byte b2, byte b3) - { - WriteRawByte(b1); - WriteRawByte(b2); - WriteRawByte(b3); - } - - /// - /// Writes the given four-byte tag directly to the stream. - /// - /// The first byte of the encoded tag - /// The second byte of the encoded tag - /// The third byte of the encoded tag - /// The fourth byte of the encoded tag - public void WriteRawTag(byte b1, byte b2, byte b3, byte b4) - { - WriteRawByte(b1); - WriteRawByte(b2); - WriteRawByte(b3); - WriteRawByte(b4); - } - - /// - /// Writes the given five-byte tag directly to the stream. - /// - /// The first byte of the encoded tag - /// The second byte of the encoded tag - /// The third byte of the encoded tag - /// The fourth byte of the encoded tag - /// The fifth byte of the encoded tag - public void WriteRawTag(byte b1, byte b2, byte b3, byte b4, byte b5) - { - WriteRawByte(b1); - WriteRawByte(b2); - WriteRawByte(b3); - WriteRawByte(b4); - WriteRawByte(b5); - } - #endregion - - #region Underlying writing primitives - /// - /// Writes a 32 bit value as a varint. The fast route is taken when - /// there's enough buffer space left to whizz through without checking - /// for each byte; otherwise, we resort to calling WriteRawByte each time. - /// - internal void WriteRawVarint32(uint value) - { - // Optimize for the common case of a single byte value - if (value < 128 && position < limit) - { - buffer[position++] = (byte)value; - return; - } - - while (value > 127 && position < limit) - { - buffer[position++] = (byte) ((value & 0x7F) | 0x80); - value >>= 7; - } - while (value > 127) - { - WriteRawByte((byte) ((value & 0x7F) | 0x80)); - value >>= 7; - } - if (position < limit) - { - buffer[position++] = (byte) value; - } - else - { - WriteRawByte((byte) value); - } - } - - internal void WriteRawVarint64(ulong value) - { - while (value > 127 && position < limit) - { - buffer[position++] = (byte) ((value & 0x7F) | 0x80); - value >>= 7; - } - while (value > 127) - { - WriteRawByte((byte) ((value & 0x7F) | 0x80)); - value >>= 7; - } - if (position < limit) - { - buffer[position++] = (byte) value; - } - else - { - WriteRawByte((byte) value); - } - } - - internal void WriteRawLittleEndian32(uint value) - { - if (position + 4 > limit) - { - WriteRawByte((byte) value); - WriteRawByte((byte) (value >> 8)); - WriteRawByte((byte) (value >> 16)); - WriteRawByte((byte) (value >> 24)); - } - else - { - buffer[position++] = ((byte) value); - buffer[position++] = ((byte) (value >> 8)); - buffer[position++] = ((byte) (value >> 16)); - buffer[position++] = ((byte) (value >> 24)); - } - } - - internal void WriteRawLittleEndian64(ulong value) - { - if (position + 8 > limit) - { - WriteRawByte((byte) value); - WriteRawByte((byte) (value >> 8)); - WriteRawByte((byte) (value >> 16)); - WriteRawByte((byte) (value >> 24)); - WriteRawByte((byte) (value >> 32)); - WriteRawByte((byte) (value >> 40)); - WriteRawByte((byte) (value >> 48)); - WriteRawByte((byte) (value >> 56)); - } - else - { - buffer[position++] = ((byte) value); - buffer[position++] = ((byte) (value >> 8)); - buffer[position++] = ((byte) (value >> 16)); - buffer[position++] = ((byte) (value >> 24)); - buffer[position++] = ((byte) (value >> 32)); - buffer[position++] = ((byte) (value >> 40)); - buffer[position++] = ((byte) (value >> 48)); - buffer[position++] = ((byte) (value >> 56)); - } - } - - internal void WriteRawByte(byte value) - { - if (position == limit) - { - RefreshBuffer(); - } - - buffer[position++] = value; - } - - internal void WriteRawByte(uint value) - { - WriteRawByte((byte) value); - } - - /// - /// Writes out an array of bytes. - /// - internal void WriteRawBytes(byte[] value) - { - WriteRawBytes(value, 0, value.Length); - } - - /// - /// Writes out part of an array of bytes. - /// - internal void WriteRawBytes(byte[] value, int offset, int length) - { - if (limit - position >= length) - { - ByteArray.Copy(value, offset, buffer, position, length); - // We have room in the current buffer. - position += length; - } - else - { - // Write extends past current buffer. Fill the rest of this buffer and - // flush. - int bytesWritten = limit - position; - ByteArray.Copy(value, offset, buffer, position, bytesWritten); - offset += bytesWritten; - length -= bytesWritten; - position = limit; - RefreshBuffer(); - - // Now deal with the rest. - // Since we have an output stream, this is our buffer - // and buffer offset == 0 - if (length <= limit) - { - // Fits in new buffer. - ByteArray.Copy(value, offset, buffer, 0, length); - position = length; - } - else - { - // Write is very big. Let's do it all at once. - output.Write(value, offset, length); - } - } - } - - #endregion - - /// - /// Encode a 32-bit value with ZigZag encoding. - /// - /// - /// ZigZag encodes signed integers into values that can be efficiently - /// encoded with varint. (Otherwise, negative values must be - /// sign-extended to 64 bits to be varint encoded, thus always taking - /// 10 bytes on the wire.) - /// - internal static uint EncodeZigZag32(int n) - { - // Note: the right-shift must be arithmetic - return (uint) ((n << 1) ^ (n >> 31)); - } - - /// - /// Encode a 64-bit value with ZigZag encoding. - /// - /// - /// ZigZag encodes signed integers into values that can be efficiently - /// encoded with varint. (Otherwise, negative values must be - /// sign-extended to 64 bits to be varint encoded, thus always taking - /// 10 bytes on the wire.) - /// - internal static ulong EncodeZigZag64(long n) - { - return (ulong) ((n << 1) ^ (n >> 63)); - } - - private void RefreshBuffer() - { - if (output == null) - { - // We're writing to a single buffer. - throw new OutOfSpaceException(); - } - - // Since we have an output stream, this is our buffer - // and buffer offset == 0 - output.Write(buffer, 0, position); - position = 0; - } - - /// - /// Indicates that a CodedOutputStream wrapping a flat byte array - /// ran out of space. - /// - public sealed class OutOfSpaceException : IOException - { - internal OutOfSpaceException() - : base("CodedOutputStream was writing to a flat byte array and ran out of space.") - { - } - } - - /// - /// Flushes any buffered data and optionally closes the underlying stream, if any. - /// - /// - /// - /// By default, any underlying stream is closed by this method. To configure this behaviour, - /// use a constructor overload with a leaveOpen parameter. If this instance does not - /// have an underlying stream, this method does nothing. - /// - /// - /// For the sake of efficiency, calling this method does not prevent future write calls - but - /// if a later write ends up writing to a stream which has been disposed, that is likely to - /// fail. It is recommend that you not call any other methods after this. - /// - /// - public void Dispose() - { - Flush(); - if (!leaveOpen) - { - output.Dispose(); - } - } - - /// - /// Flushes any buffered data to the underlying stream (if there is one). - /// - public void Flush() - { - if (output != null) - { - RefreshBuffer(); - } - } - - /// - /// Verifies that SpaceLeft returns zero. It's common to create a byte array - /// that is exactly big enough to hold a message, then write to it with - /// a CodedOutputStream. Calling CheckNoSpaceLeft after writing verifies that - /// the message was actually as big as expected, which can help bugs. - /// - public void CheckNoSpaceLeft() - { - if (SpaceLeft != 0) - { - throw new InvalidOperationException("Did not write as much data as expected."); - } - } - - /// - /// If writing to a flat array, returns the space left in the array. Otherwise, - /// throws an InvalidOperationException. - /// - public int SpaceLeft - { - get - { - if (output == null) - { - return limit - position; - } - else - { - throw new InvalidOperationException( - "SpaceLeft can only be called on CodedOutputStreams that are " + - "writing to a flat array."); - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Collections/Lists.cs b/lib/protobuf/csharp/src/Google.Protobuf/Collections/Lists.cs deleted file mode 100644 index 860795c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Collections/Lists.cs +++ /dev/null @@ -1,89 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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.Collections -{ - /// - /// Utility to compare if two Lists are the same, and the hash code - /// of a List. - /// - public static class Lists - { - /// - /// Checks if two lists are equal. - /// - public static bool Equals(List left, List right) - { - if (left == right) - { - return true; - } - if (left == null || right == null) - { - return false; - } - if (left.Count != right.Count) - { - return false; - } - IEqualityComparer comparer = EqualityComparer.Default; - for (int i = 0; i < left.Count; i++) - { - if (!comparer.Equals(left[i], right[i])) - { - return false; - } - } - return true; - } - - /// - /// Gets the list's hash code. - /// - public static int GetHashCode(List list) - { - if (list == null) - { - return 0; - } - int hash = 31; - foreach (T element in list) - { - hash = hash * 29 + element.GetHashCode(); - } - return hash; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Collections/MapField.cs b/lib/protobuf/csharp/src/Google.Protobuf/Collections/MapField.cs deleted file mode 100644 index 1924439..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Collections/MapField.cs +++ /dev/null @@ -1,771 +0,0 @@ -#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 Google.Protobuf.Compatibility; -using Google.Protobuf.Reflection; -using System; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Linq; - -namespace Google.Protobuf.Collections -{ - /// - /// Representation of a map field in a Protocol Buffer message. - /// - /// Key type in the map. Must be a type supported by Protocol Buffer map keys. - /// Value type in the map. Must be a type supported by Protocol Buffers. - /// - /// - /// For string keys, the equality comparison is provided by . - /// - /// - /// Null values are not permitted in the map, either for wrapper types or regular messages. - /// If a map is deserialized from a data stream and the value is missing from an entry, a default value - /// is created instead. For primitive types, that is the regular default value (0, the empty string and so - /// on); for message types, an empty instance of the message is created, as if the map entry contained a 0-length - /// encoded value for the field. - /// - /// - /// This implementation does not generally prohibit the use of key/value types which are not - /// supported by Protocol Buffers (e.g. using a key type of byte) but nor does it guarantee - /// that all operations will work in such cases. - /// - /// - /// The order in which entries are returned when iterating over this object is undefined, and may change - /// in future versions. - /// - /// - public sealed class MapField : IDeepCloneable>, IDictionary, IEquatable>, IDictionary -#if !NET35 - , IReadOnlyDictionary -#endif - { - private static readonly EqualityComparer ValueEqualityComparer = ProtobufEqualityComparers.GetEqualityComparer(); - private static readonly EqualityComparer KeyEqualityComparer = ProtobufEqualityComparers.GetEqualityComparer(); - - // TODO: Don't create the map/list until we have an entry. (Assume many maps will be empty.) - private readonly Dictionary>> map = - new Dictionary>>(KeyEqualityComparer); - private readonly LinkedList> list = new LinkedList>(); - - /// - /// Creates a deep clone of this object. - /// - /// - /// A deep clone of this object. - /// - public MapField Clone() - { - var clone = new MapField(); - // Keys are never cloneable. Values might be. - if (typeof(IDeepCloneable).IsAssignableFrom(typeof(TValue))) - { - foreach (var pair in list) - { - clone.Add(pair.Key, ((IDeepCloneable)pair.Value).Clone()); - } - } - else - { - // Nothing is cloneable, so we don't need to worry. - clone.Add(this); - } - return clone; - } - - /// - /// Adds the specified key/value pair to the map. - /// - /// - /// This operation fails if the key already exists in the map. To replace an existing entry, use the indexer. - /// - /// The key to add - /// The value to add. - /// The given key already exists in map. - public void Add(TKey key, TValue value) - { - // Validation of arguments happens in ContainsKey and the indexer - if (ContainsKey(key)) - { - throw new ArgumentException("Key already exists in map", nameof(key)); - } - this[key] = value; - } - - /// - /// Determines whether the specified key is present in the map. - /// - /// The key to check. - /// true if the map contains the given key; false otherwise. - public bool ContainsKey(TKey key) - { - ProtoPreconditions.CheckNotNullUnconstrained(key, nameof(key)); - return map.ContainsKey(key); - } - - private bool ContainsValue(TValue value) => - list.Any(pair => ValueEqualityComparer.Equals(pair.Value, value)); - - /// - /// Removes the entry identified by the given key from the map. - /// - /// The key indicating the entry to remove from the map. - /// true if the map contained the given key before the entry was removed; false otherwise. - public bool Remove(TKey key) - { - ProtoPreconditions.CheckNotNullUnconstrained(key, nameof(key)); - LinkedListNode> node; - if (map.TryGetValue(key, out node)) - { - map.Remove(key); - node.List.Remove(node); - return true; - } - else - { - return false; - } - } - - /// - /// Gets the value associated with the specified key. - /// - /// The key whose value to get. - /// When this method returns, the value associated with the specified key, if the key is found; - /// otherwise, the default value for the type of the parameter. - /// This parameter is passed uninitialized. - /// true if the map contains an element with the specified key; otherwise, false. - public bool TryGetValue(TKey key, out TValue value) - { - LinkedListNode> node; - if (map.TryGetValue(key, out node)) - { - value = node.Value.Value; - return true; - } - else - { - value = default(TValue); - return false; - } - } - - /// - /// Gets or sets the value associated with the specified key. - /// - /// The key of the value to get or set. - /// The property is retrieved and key does not exist in the collection. - /// The value associated with the specified key. If the specified key is not found, - /// a get operation throws a , and a set operation creates a new element with the specified key. - public TValue this[TKey key] - { - get - { - ProtoPreconditions.CheckNotNullUnconstrained(key, nameof(key)); - TValue value; - if (TryGetValue(key, out value)) - { - return value; - } - throw new KeyNotFoundException(); - } - set - { - ProtoPreconditions.CheckNotNullUnconstrained(key, nameof(key)); - // value == null check here is redundant, but avoids boxing. - if (value == null) - { - ProtoPreconditions.CheckNotNullUnconstrained(value, nameof(value)); - } - LinkedListNode> node; - var pair = new KeyValuePair(key, value); - if (map.TryGetValue(key, out node)) - { - node.Value = pair; - } - else - { - node = list.AddLast(pair); - map[key] = node; - } - } - } - - /// - /// Gets a collection containing the keys in the map. - /// - public ICollection Keys { get { return new MapView(this, pair => pair.Key, ContainsKey); } } - - /// - /// Gets a collection containing the values in the map. - /// - public ICollection Values { get { return new MapView(this, pair => pair.Value, ContainsValue); } } - - /// - /// Adds the specified entries to the map. The keys and values are not automatically cloned. - /// - /// The entries to add to the map. - public void Add(IDictionary entries) - { - ProtoPreconditions.CheckNotNull(entries, nameof(entries)); - foreach (var pair in entries) - { - Add(pair.Key, pair.Value); - } - } - - /// - /// Returns an enumerator that iterates through the collection. - /// - /// - /// An enumerator that can be used to iterate through the collection. - /// - public IEnumerator> GetEnumerator() - { - return list.GetEnumerator(); - } - - /// - /// Returns an enumerator that iterates through a collection. - /// - /// - /// An object that can be used to iterate through the collection. - /// - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - /// - /// Adds the specified item to the map. - /// - /// The item to add to the map. - void ICollection>.Add(KeyValuePair item) - { - Add(item.Key, item.Value); - } - - /// - /// Removes all items from the map. - /// - public void Clear() - { - list.Clear(); - map.Clear(); - } - - /// - /// Determines whether map contains an entry equivalent to the given key/value pair. - /// - /// The key/value pair to find. - /// - bool ICollection>.Contains(KeyValuePair item) - { - TValue value; - return TryGetValue(item.Key, out value) && ValueEqualityComparer.Equals(item.Value, value); - } - - /// - /// Copies the key/value pairs in this map to an array. - /// - /// The array to copy the entries into. - /// The index of the array at which to start copying values. - void ICollection>.CopyTo(KeyValuePair[] array, int arrayIndex) - { - list.CopyTo(array, arrayIndex); - } - - /// - /// Removes the specified key/value pair from the map. - /// - /// Both the key and the value must be found for the entry to be removed. - /// The key/value pair to remove. - /// true if the key/value pair was found and removed; false otherwise. - bool ICollection>.Remove(KeyValuePair item) - { - if (item.Key == null) - { - throw new ArgumentException("Key is null", nameof(item)); - } - LinkedListNode> node; - if (map.TryGetValue(item.Key, out node) && - EqualityComparer.Default.Equals(item.Value, node.Value.Value)) - { - map.Remove(item.Key); - node.List.Remove(node); - return true; - } - else - { - return false; - } - } - - /// - /// Gets the number of elements contained in the map. - /// - public int Count { get { return list.Count; } } - - /// - /// Gets a value indicating whether the map is read-only. - /// - public bool IsReadOnly { get { return false; } } - - /// - /// Determines whether the specified , is equal to this instance. - /// - /// The to compare with this instance. - /// - /// true if the specified is equal to this instance; otherwise, false. - /// - public override bool Equals(object other) - { - return Equals(other as MapField); - } - - /// - /// Returns a hash code for this instance. - /// - /// - /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - /// - public override int GetHashCode() - { - var keyComparer = KeyEqualityComparer; - var valueComparer = ValueEqualityComparer; - int hash = 0; - foreach (var pair in list) - { - hash ^= keyComparer.GetHashCode(pair.Key) * 31 + valueComparer.GetHashCode(pair.Value); - } - return hash; - } - - /// - /// Compares this map with another for equality. - /// - /// - /// The order of the key/value pairs in the maps is not deemed significant in this comparison. - /// - /// The map to compare this with. - /// true if refers to an equal map; false otherwise. - public bool Equals(MapField other) - { - if (other == null) - { - return false; - } - if (other == this) - { - return true; - } - if (other.Count != this.Count) - { - return false; - } - var valueComparer = ValueEqualityComparer; - foreach (var pair in this) - { - TValue value; - if (!other.TryGetValue(pair.Key, out value)) - { - return false; - } - if (!valueComparer.Equals(value, pair.Value)) - { - return false; - } - } - return true; - } - - /// - /// Adds entries to the map from the given stream. - /// - /// - /// It is assumed that the stream is initially positioned after the tag specified by the codec. - /// This method will continue reading entries from the stream until the end is reached, or - /// a different tag is encountered. - /// - /// Stream to read from - /// Codec describing how the key/value pairs are encoded - public void AddEntriesFrom(CodedInputStream input, Codec codec) - { - var adapter = new Codec.MessageAdapter(codec); - do - { - adapter.Reset(); - input.ReadMessage(adapter); - this[adapter.Key] = adapter.Value; - } while (input.MaybeConsumeTag(codec.MapTag)); - } - - /// - /// Writes the contents of this map to the given coded output stream, using the specified codec - /// to encode each entry. - /// - /// The output stream to write to. - /// The codec to use for each entry. - public void WriteTo(CodedOutputStream output, Codec codec) - { - var message = new Codec.MessageAdapter(codec); - foreach (var entry in list) - { - message.Key = entry.Key; - message.Value = entry.Value; - output.WriteTag(codec.MapTag); - output.WriteMessage(message); - } - } - - /// - /// Calculates the size of this map based on the given entry codec. - /// - /// The codec to use to encode each entry. - /// - public int CalculateSize(Codec codec) - { - if (Count == 0) - { - return 0; - } - var message = new Codec.MessageAdapter(codec); - int size = 0; - foreach (var entry in list) - { - message.Key = entry.Key; - message.Value = entry.Value; - size += CodedOutputStream.ComputeRawVarint32Size(codec.MapTag); - size += CodedOutputStream.ComputeMessageSize(message); - } - return size; - } - - /// - /// Returns a string representation of this repeated field, in the same - /// way as it would be represented by the default JSON formatter. - /// - public override string ToString() - { - var writer = new StringWriter(); - JsonFormatter.Default.WriteDictionary(writer, this); - return writer.ToString(); - } - - #region IDictionary explicit interface implementation - void IDictionary.Add(object key, object value) - { - Add((TKey)key, (TValue)value); - } - - bool IDictionary.Contains(object key) - { - if (!(key is TKey)) - { - return false; - } - return ContainsKey((TKey)key); - } - - IDictionaryEnumerator IDictionary.GetEnumerator() - { - return new DictionaryEnumerator(GetEnumerator()); - } - - void IDictionary.Remove(object key) - { - ProtoPreconditions.CheckNotNull(key, nameof(key)); - if (!(key is TKey)) - { - return; - } - Remove((TKey)key); - } - - void ICollection.CopyTo(Array array, int index) - { - // This is ugly and slow as heck, but with any luck it will never be used anyway. - ICollection temp = this.Select(pair => new DictionaryEntry(pair.Key, pair.Value)).ToList(); - temp.CopyTo(array, index); - } - - bool IDictionary.IsFixedSize { get { return false; } } - - ICollection IDictionary.Keys { get { return (ICollection)Keys; } } - - ICollection IDictionary.Values { get { return (ICollection)Values; } } - - bool ICollection.IsSynchronized { get { return false; } } - - object ICollection.SyncRoot { get { return this; } } - - object IDictionary.this[object key] - { - get - { - ProtoPreconditions.CheckNotNull(key, nameof(key)); - if (!(key is TKey)) - { - return null; - } - TValue value; - TryGetValue((TKey)key, out value); - return value; - } - - set - { - this[(TKey)key] = (TValue)value; - } - } - #endregion - - #region IReadOnlyDictionary explicit interface implementation -#if !NET35 - IEnumerable IReadOnlyDictionary.Keys => Keys; - - IEnumerable IReadOnlyDictionary.Values => Values; -#endif - #endregion - - private class DictionaryEnumerator : IDictionaryEnumerator - { - private readonly IEnumerator> enumerator; - - internal DictionaryEnumerator(IEnumerator> enumerator) - { - this.enumerator = enumerator; - } - - public bool MoveNext() - { - return enumerator.MoveNext(); - } - - public void Reset() - { - enumerator.Reset(); - } - - public object Current { get { return Entry; } } - public DictionaryEntry Entry { get { return new DictionaryEntry(Key, Value); } } - public object Key { get { return enumerator.Current.Key; } } - public object Value { get { return enumerator.Current.Value; } } - } - - /// - /// A codec for a specific map field. This contains all the information required to encode and - /// decode the nested messages. - /// - public sealed class Codec - { - private readonly FieldCodec keyCodec; - private readonly FieldCodec valueCodec; - private readonly uint mapTag; - - /// - /// Creates a new entry codec based on a separate key codec and value codec, - /// and the tag to use for each map entry. - /// - /// The key codec. - /// The value codec. - /// The map tag to use to introduce each map entry. - public Codec(FieldCodec keyCodec, FieldCodec valueCodec, uint mapTag) - { - this.keyCodec = keyCodec; - this.valueCodec = valueCodec; - this.mapTag = mapTag; - } - - /// - /// The tag used in the enclosing message to indicate map entries. - /// - internal uint MapTag { get { return mapTag; } } - - /// - /// A mutable message class, used for parsing and serializing. This - /// delegates the work to a codec, but implements the interface - /// for interop with and . - /// This is nested inside Codec as it's tightly coupled to the associated codec, - /// and it's simpler if it has direct access to all its fields. - /// - internal class MessageAdapter : IMessage - { - private static readonly byte[] ZeroLengthMessageStreamData = new byte[] { 0 }; - - private readonly Codec codec; - internal TKey Key { get; set; } - internal TValue Value { get; set; } - - internal MessageAdapter(Codec codec) - { - this.codec = codec; - } - - internal void Reset() - { - Key = codec.keyCodec.DefaultValue; - Value = codec.valueCodec.DefaultValue; - } - - public void MergeFrom(CodedInputStream input) - { - uint tag; - while ((tag = input.ReadTag()) != 0) - { - if (tag == codec.keyCodec.Tag) - { - Key = codec.keyCodec.Read(input); - } - else if (tag == codec.valueCodec.Tag) - { - Value = codec.valueCodec.Read(input); - } - else - { - input.SkipLastField(); - } - } - - // Corner case: a map entry with a key but no value, where the value type is a message. - // Read it as if we'd seen an input stream with no data (i.e. create a "default" message). - if (Value == null) - { - Value = codec.valueCodec.Read(new CodedInputStream(ZeroLengthMessageStreamData)); - } - } - - public void WriteTo(CodedOutputStream output) - { - codec.keyCodec.WriteTagAndValue(output, Key); - codec.valueCodec.WriteTagAndValue(output, Value); - } - - public int CalculateSize() - { - return codec.keyCodec.CalculateSizeWithTag(Key) + codec.valueCodec.CalculateSizeWithTag(Value); - } - - MessageDescriptor IMessage.Descriptor { get { return null; } } - } - } - - private class MapView : ICollection, ICollection - { - private readonly MapField parent; - private readonly Func, T> projection; - private readonly Func containsCheck; - - internal MapView( - MapField parent, - Func, T> projection, - Func containsCheck) - { - this.parent = parent; - this.projection = projection; - this.containsCheck = containsCheck; - } - - public int Count { get { return parent.Count; } } - - public bool IsReadOnly { get { return true; } } - - public bool IsSynchronized { get { return false; } } - - public object SyncRoot { get { return parent; } } - - public void Add(T item) - { - throw new NotSupportedException(); - } - - public void Clear() - { - throw new NotSupportedException(); - } - - public bool Contains(T item) - { - return containsCheck(item); - } - - public void CopyTo(T[] array, int arrayIndex) - { - if (arrayIndex < 0) - { - throw new ArgumentOutOfRangeException(nameof(arrayIndex)); - } - if (arrayIndex + Count > array.Length) - { - throw new ArgumentException("Not enough space in the array", nameof(array)); - } - foreach (var item in this) - { - array[arrayIndex++] = item; - } - } - - public IEnumerator GetEnumerator() - { - return parent.list.Select(projection).GetEnumerator(); - } - - public bool Remove(T item) - { - throw new NotSupportedException(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - public void CopyTo(Array array, int index) - { - if (index < 0) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - if (index + Count > array.Length) - { - throw new ArgumentException("Not enough space in the array", nameof(array)); - } - foreach (var item in this) - { - array.SetValue(item, index++); - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Collections/ProtobufEqualityComparers.cs b/lib/protobuf/csharp/src/Google.Protobuf/Collections/ProtobufEqualityComparers.cs deleted file mode 100644 index 13ef60f..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Collections/ProtobufEqualityComparers.cs +++ /dev/null @@ -1,130 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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.Collections -{ - /// - /// Provides a central place to implement equality comparisons, primarily for bitwise float/double equality. - /// - public static class ProtobufEqualityComparers - { - /// - /// Returns an equality comparer for suitable for Protobuf equality comparisons. - /// This is usually just the default equality comparer for the type, but floating point numbers are compared - /// bitwise. - /// - /// The type of equality comparer to return. - /// The equality comparer. - public static EqualityComparer GetEqualityComparer() - { - return typeof(T) == typeof(double) ? (EqualityComparer) (object) BitwiseDoubleEqualityComparer - : typeof(T) == typeof(float) ? (EqualityComparer) (object) BitwiseSingleEqualityComparer - : typeof(T) == typeof(double?) ? (EqualityComparer) (object) BitwiseNullableDoubleEqualityComparer - : typeof(T) == typeof(float?) ? (EqualityComparer) (object) BitwiseNullableSingleEqualityComparer - : EqualityComparer.Default; - } - - /// - /// Returns an equality comparer suitable for comparing 64-bit floating point values, by bitwise comparison. - /// (NaN values are considered equal, but only when they have the same representation.) - /// - public static EqualityComparer BitwiseDoubleEqualityComparer { get; } = new BitwiseDoubleEqualityComparerImpl(); - - /// - /// Returns an equality comparer suitable for comparing 32-bit floating point values, by bitwise comparison. - /// (NaN values are considered equal, but only when they have the same representation.) - /// - public static EqualityComparer BitwiseSingleEqualityComparer { get; } = new BitwiseSingleEqualityComparerImpl(); - - /// - /// Returns an equality comparer suitable for comparing nullable 64-bit floating point values, by bitwise comparison. - /// (NaN values are considered equal, but only when they have the same representation.) - /// - public static EqualityComparer BitwiseNullableDoubleEqualityComparer { get; } = new BitwiseNullableDoubleEqualityComparerImpl(); - - /// - /// Returns an equality comparer suitable for comparing nullable 32-bit floating point values, by bitwise comparison. - /// (NaN values are considered equal, but only when they have the same representation.) - /// - public static EqualityComparer BitwiseNullableSingleEqualityComparer { get; } = new BitwiseNullableSingleEqualityComparerImpl(); - - private class BitwiseDoubleEqualityComparerImpl : EqualityComparer - { - public override bool Equals(double x, double y) => - BitConverter.DoubleToInt64Bits(x) == BitConverter.DoubleToInt64Bits(y); - - public override int GetHashCode(double obj) => - BitConverter.DoubleToInt64Bits(obj).GetHashCode(); - } - - private class BitwiseSingleEqualityComparerImpl : EqualityComparer - { - // Just promote values to double and use BitConverter.DoubleToInt64Bits, - // as there's no BitConverter.SingleToInt32Bits, unfortunately. - - public override bool Equals(float x, float y) => - BitConverter.DoubleToInt64Bits(x) == BitConverter.DoubleToInt64Bits(y); - - public override int GetHashCode(float obj) => - BitConverter.DoubleToInt64Bits(obj).GetHashCode(); - } - - private class BitwiseNullableDoubleEqualityComparerImpl : EqualityComparer - { - public override bool Equals(double? x, double? y) => - x == null && y == null ? true - : x == null || y == null ? false - : BitwiseDoubleEqualityComparer.Equals(x.Value, y.Value); - - // The hash code for null is just a constant which is at least *unlikely* to be used - // elsewhere. (Compared with 0, say.) - public override int GetHashCode(double? obj) => - obj == null ? 293864 : BitwiseDoubleEqualityComparer.GetHashCode(obj.Value); - } - - private class BitwiseNullableSingleEqualityComparerImpl : EqualityComparer - { - public override bool Equals(float? x, float? y) => - x == null && y == null ? true - : x == null || y == null ? false - : BitwiseSingleEqualityComparer.Equals(x.Value, y.Value); - - // The hash code for null is just a constant which is at least *unlikely* to be used - // elsewhere. (Compared with 0, say.) - public override int GetHashCode(float? obj) => - obj == null ? 293864 : BitwiseSingleEqualityComparer.GetHashCode(obj.Value); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Collections/ReadOnlyDictionary.cs b/lib/protobuf/csharp/src/Google.Protobuf/Collections/ReadOnlyDictionary.cs deleted file mode 100644 index 8436066..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Collections/ReadOnlyDictionary.cs +++ /dev/null @@ -1,147 +0,0 @@ -#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; -using System.Collections.Generic; - -namespace Google.Protobuf.Collections -{ - /// - /// Read-only wrapper around another dictionary. - /// - internal sealed class ReadOnlyDictionary : IDictionary - { - private readonly IDictionary wrapped; - - public ReadOnlyDictionary(IDictionary wrapped) - { - this.wrapped = wrapped; - } - - public void Add(TKey key, TValue value) - { - throw new InvalidOperationException(); - } - - public bool ContainsKey(TKey key) - { - return wrapped.ContainsKey(key); - } - - public ICollection Keys - { - get { return wrapped.Keys; } - } - - public bool Remove(TKey key) - { - throw new InvalidOperationException(); - } - - public bool TryGetValue(TKey key, out TValue value) - { - return wrapped.TryGetValue(key, out value); - } - - public ICollection Values - { - get { return wrapped.Values; } - } - - public TValue this[TKey key] - { - get { return wrapped[key]; } - set { throw new InvalidOperationException(); } - } - - public void Add(KeyValuePair item) - { - throw new InvalidOperationException(); - } - - public void Clear() - { - throw new InvalidOperationException(); - } - - public bool Contains(KeyValuePair item) - { - return wrapped.Contains(item); - } - - public void CopyTo(KeyValuePair[] array, int arrayIndex) - { - wrapped.CopyTo(array, arrayIndex); - } - - public int Count - { - get { return wrapped.Count; } - } - - public bool IsReadOnly - { - get { return true; } - } - - public bool Remove(KeyValuePair item) - { - throw new InvalidOperationException(); - } - - public IEnumerator> GetEnumerator() - { - return wrapped.GetEnumerator(); - } - - IEnumerator IEnumerable.GetEnumerator() - { - return ((IEnumerable) wrapped).GetEnumerator(); - } - - public override bool Equals(object obj) - { - return wrapped.Equals(obj); - } - - public override int GetHashCode() - { - return wrapped.GetHashCode(); - } - - public override string ToString() - { - return wrapped.ToString(); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Collections/RepeatedField.cs b/lib/protobuf/csharp/src/Google.Protobuf/Collections/RepeatedField.cs deleted file mode 100644 index 827bc71..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Collections/RepeatedField.cs +++ /dev/null @@ -1,599 +0,0 @@ -#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.Collections.Generic; -using System.IO; - -namespace Google.Protobuf.Collections -{ - /// - /// The contents of a repeated field: essentially, a collection with some extra - /// restrictions (no null values) and capabilities (deep cloning). - /// - /// - /// This implementation does not generally prohibit the use of types which are not - /// supported by Protocol Buffers but nor does it guarantee that all operations will work in such cases. - /// - /// The element type of the repeated field. - public sealed class RepeatedField : IList, IList, IDeepCloneable>, IEquatable> -#if !NET35 - , IReadOnlyList -#endif - { - private static readonly EqualityComparer EqualityComparer = ProtobufEqualityComparers.GetEqualityComparer(); - private static readonly T[] EmptyArray = new T[0]; - private const int MinArraySize = 8; - - private T[] array = EmptyArray; - private int count = 0; - - /// - /// Creates a deep clone of this repeated field. - /// - /// - /// If the field type is - /// a message type, each element is also cloned; otherwise, it is - /// assumed that the field type is primitive (including string and - /// bytes, both of which are immutable) and so a simple copy is - /// equivalent to a deep clone. - /// - /// A deep clone of this repeated field. - public RepeatedField Clone() - { - RepeatedField clone = new RepeatedField(); - if (array != EmptyArray) - { - clone.array = (T[])array.Clone(); - IDeepCloneable[] cloneableArray = clone.array as IDeepCloneable[]; - if (cloneableArray != null) - { - for (int i = 0; i < count; i++) - { - clone.array[i] = cloneableArray[i].Clone(); - } - } - } - clone.count = count; - return clone; - } - - /// - /// Adds the entries from the given input stream, decoding them with the specified codec. - /// - /// The input stream to read from. - /// The codec to use in order to read each entry. - public void AddEntriesFrom(CodedInputStream input, FieldCodec codec) - { - // TODO: Inline some of the Add code, so we can avoid checking the size on every - // iteration. - uint tag = input.LastTag; - var reader = codec.ValueReader; - // Non-nullable value types can be packed or not. - if (FieldCodec.IsPackedRepeatedField(tag)) - { - int length = input.ReadLength(); - if (length > 0) - { - int oldLimit = input.PushLimit(length); - while (!input.ReachedLimit) - { - Add(reader(input)); - } - input.PopLimit(oldLimit); - } - // Empty packed field. Odd, but valid - just ignore. - } - else - { - // Not packed... (possibly not packable) - do - { - Add(reader(input)); - } while (input.MaybeConsumeTag(tag)); - } - } - - /// - /// Calculates the size of this collection based on the given codec. - /// - /// The codec to use when encoding each field. - /// The number of bytes that would be written to a by , - /// using the same codec. - public int CalculateSize(FieldCodec codec) - { - if (count == 0) - { - return 0; - } - uint tag = codec.Tag; - if (codec.PackedRepeatedField) - { - int dataSize = CalculatePackedDataSize(codec); - return CodedOutputStream.ComputeRawVarint32Size(tag) + - CodedOutputStream.ComputeLengthSize(dataSize) + - dataSize; - } - else - { - var sizeCalculator = codec.ValueSizeCalculator; - int size = count * CodedOutputStream.ComputeRawVarint32Size(tag); - for (int i = 0; i < count; i++) - { - size += sizeCalculator(array[i]); - } - return size; - } - } - - private int CalculatePackedDataSize(FieldCodec codec) - { - int fixedSize = codec.FixedSize; - if (fixedSize == 0) - { - var calculator = codec.ValueSizeCalculator; - int tmp = 0; - for (int i = 0; i < count; i++) - { - tmp += calculator(array[i]); - } - return tmp; - } - else - { - return fixedSize * Count; - } - } - - /// - /// Writes the contents of this collection to the given , - /// encoding each value using the specified codec. - /// - /// The output stream to write to. - /// The codec to use when encoding each value. - public void WriteTo(CodedOutputStream output, FieldCodec codec) - { - if (count == 0) - { - return; - } - var writer = codec.ValueWriter; - var tag = codec.Tag; - if (codec.PackedRepeatedField) - { - // Packed primitive type - uint size = (uint)CalculatePackedDataSize(codec); - output.WriteTag(tag); - output.WriteRawVarint32(size); - for (int i = 0; i < count; i++) - { - writer(output, array[i]); - } - } - else - { - // Not packed: a simple tag/value pair for each value. - // Can't use codec.WriteTagAndValue, as that omits default values. - for (int i = 0; i < count; i++) - { - output.WriteTag(tag); - writer(output, array[i]); - if (codec.EndTag != 0) - { - output.WriteTag(codec.EndTag); - } - } - } - } - - private void EnsureSize(int size) - { - if (array.Length < size) - { - size = Math.Max(size, MinArraySize); - int newSize = Math.Max(array.Length * 2, size); - var tmp = new T[newSize]; - Array.Copy(array, 0, tmp, 0, array.Length); - array = tmp; - } - } - - /// - /// Adds the specified item to the collection. - /// - /// The item to add. - public void Add(T item) - { - ProtoPreconditions.CheckNotNullUnconstrained(item, nameof(item)); - EnsureSize(count + 1); - array[count++] = item; - } - - /// - /// Removes all items from the collection. - /// - public void Clear() - { - array = EmptyArray; - count = 0; - } - - /// - /// Determines whether this collection contains the given item. - /// - /// The item to find. - /// true if this collection contains the given item; false otherwise. - public bool Contains(T item) - { - return IndexOf(item) != -1; - } - - /// - /// Copies this collection to the given array. - /// - /// The array to copy to. - /// The first index of the array to copy to. - public void CopyTo(T[] array, int arrayIndex) - { - Array.Copy(this.array, 0, array, arrayIndex, count); - } - - /// - /// Removes the specified item from the collection - /// - /// The item to remove. - /// true if the item was found and removed; false otherwise. - public bool Remove(T item) - { - int index = IndexOf(item); - if (index == -1) - { - return false; - } - Array.Copy(array, index + 1, array, index, count - index - 1); - count--; - array[count] = default(T); - return true; - } - - /// - /// Gets the number of elements contained in the collection. - /// - public int Count => count; - - /// - /// Gets a value indicating whether the collection is read-only. - /// - public bool IsReadOnly => false; - - /// - /// Adds all of the specified values into this collection. - /// - /// The values to add to this collection. - public void AddRange(IEnumerable values) - { - ProtoPreconditions.CheckNotNull(values, nameof(values)); - - // Optimization 1: If the collection we're adding is already a RepeatedField, - // we know the values are valid. - var otherRepeatedField = values as RepeatedField; - if (otherRepeatedField != null) - { - EnsureSize(count + otherRepeatedField.count); - Array.Copy(otherRepeatedField.array, 0, array, count, otherRepeatedField.count); - count += otherRepeatedField.count; - return; - } - - // Optimization 2: The collection is an ICollection, so we can expand - // just once and ask the collection to copy itself into the array. - var collection = values as ICollection; - if (collection != null) - { - var extraCount = collection.Count; - // For reference types and nullable value types, we need to check that there are no nulls - // present. (This isn't a thread-safe approach, but we don't advertise this is thread-safe.) - // We expect the JITter to optimize this test to true/false, so it's effectively conditional - // specialization. - if (default(T) == null) - { - // TODO: Measure whether iterating once to check and then letting the collection copy - // itself is faster or slower than iterating and adding as we go. For large - // collections this will not be great in terms of cache usage... but the optimized - // copy may be significantly faster than doing it one at a time. - foreach (var item in collection) - { - if (item == null) - { - throw new ArgumentException("Sequence contained null element", nameof(values)); - } - } - } - EnsureSize(count + extraCount); - collection.CopyTo(array, count); - count += extraCount; - return; - } - - // We *could* check for ICollection as well, but very very few collections implement - // ICollection but not ICollection. (HashSet does, for one...) - - // Fall back to a slower path of adding items one at a time. - foreach (T item in values) - { - Add(item); - } - } - - /// - /// Adds all of the specified values into this collection. This method is present to - /// allow repeated fields to be constructed from queries within collection initializers. - /// Within non-collection-initializer code, consider using the equivalent - /// method instead for clarity. - /// - /// The values to add to this collection. - public void Add(IEnumerable values) - { - AddRange(values); - } - - /// - /// Returns an enumerator that iterates through the collection. - /// - /// - /// An enumerator that can be used to iterate through the collection. - /// - public IEnumerator GetEnumerator() - { - for (int i = 0; i < count; i++) - { - yield return array[i]; - } - } - - /// - /// Determines whether the specified , is equal to this instance. - /// - /// The to compare with this instance. - /// - /// true if the specified is equal to this instance; otherwise, false. - /// - public override bool Equals(object obj) - { - return Equals(obj as RepeatedField); - } - - /// - /// Returns an enumerator that iterates through a collection. - /// - /// - /// An object that can be used to iterate through the collection. - /// - IEnumerator IEnumerable.GetEnumerator() - { - return GetEnumerator(); - } - - /// - /// Returns a hash code for this instance. - /// - /// - /// A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. - /// - public override int GetHashCode() - { - int hash = 0; - for (int i = 0; i < count; i++) - { - hash = hash * 31 + array[i].GetHashCode(); - } - return hash; - } - - /// - /// Compares this repeated field with another for equality. - /// - /// The repeated field to compare this with. - /// true if refers to an equal repeated field; false otherwise. - public bool Equals(RepeatedField other) - { - if (ReferenceEquals(other, null)) - { - return false; - } - if (ReferenceEquals(other, this)) - { - return true; - } - if (other.Count != this.Count) - { - return false; - } - EqualityComparer comparer = EqualityComparer; - for (int i = 0; i < count; i++) - { - if (!comparer.Equals(array[i], other.array[i])) - { - return false; - } - } - return true; - } - - /// - /// Returns the index of the given item within the collection, or -1 if the item is not - /// present. - /// - /// The item to find in the collection. - /// The zero-based index of the item, or -1 if it is not found. - public int IndexOf(T item) - { - ProtoPreconditions.CheckNotNullUnconstrained(item, nameof(item)); - EqualityComparer comparer = EqualityComparer; - for (int i = 0; i < count; i++) - { - if (comparer.Equals(array[i], item)) - { - return i; - } - } - return -1; - } - - /// - /// Inserts the given item at the specified index. - /// - /// The index at which to insert the item. - /// The item to insert. - public void Insert(int index, T item) - { - ProtoPreconditions.CheckNotNullUnconstrained(item, nameof(item)); - if (index < 0 || index > count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - EnsureSize(count + 1); - Array.Copy(array, index, array, index + 1, count - index); - array[index] = item; - count++; - } - - /// - /// Removes the item at the given index. - /// - /// The zero-based index of the item to remove. - public void RemoveAt(int index) - { - if (index < 0 || index >= count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - Array.Copy(array, index + 1, array, index, count - index - 1); - count--; - array[count] = default(T); - } - - /// - /// Returns a string representation of this repeated field, in the same - /// way as it would be represented by the default JSON formatter. - /// - public override string ToString() - { - var writer = new StringWriter(); - JsonFormatter.Default.WriteList(writer, this); - return writer.ToString(); - } - - /// - /// Gets or sets the item at the specified index. - /// - /// - /// The element at the specified index. - /// - /// The zero-based index of the element to get or set. - /// The item at the specified index. - public T this[int index] - { - get - { - if (index < 0 || index >= count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - return array[index]; - } - set - { - if (index < 0 || index >= count) - { - throw new ArgumentOutOfRangeException(nameof(index)); - } - ProtoPreconditions.CheckNotNullUnconstrained(value, nameof(value)); - array[index] = value; - } - } - - #region Explicit interface implementation for IList and ICollection. - bool IList.IsFixedSize => false; - - void ICollection.CopyTo(Array array, int index) - { - Array.Copy(this.array, 0, array, index, count); - } - - bool ICollection.IsSynchronized => false; - - object ICollection.SyncRoot => this; - - object IList.this[int index] - { - get { return this[index]; } - set { this[index] = (T)value; } - } - - int IList.Add(object value) - { - Add((T) value); - return count - 1; - } - - bool IList.Contains(object value) - { - return (value is T && Contains((T)value)); - } - - int IList.IndexOf(object value) - { - if (!(value is T)) - { - return -1; - } - return IndexOf((T)value); - } - - void IList.Insert(int index, object value) - { - Insert(index, (T) value); - } - - void IList.Remove(object value) - { - if (!(value is T)) - { - return; - } - Remove((T)value); - } - #endregion - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/MethodInfoExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/MethodInfoExtensions.cs deleted file mode 100644 index 7b946cb..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/MethodInfoExtensions.cs +++ /dev/null @@ -1,47 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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 - -#if NET35 -using System; -using System.Reflection; - -namespace Google.Protobuf.Compatibility -{ - // .NET Core (at least netstandard1.0) doesn't have Delegate.CreateDelegate, and .NET 3.5 doesn't have - // MethodInfo.CreateDelegate. Proxy from one to the other on .NET 3.5... - internal static class MethodInfoExtensions - { - internal static Delegate CreateDelegate(this MethodInfo method, Type type) => - Delegate.CreateDelegate(type, method); - } -} -#endif diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/PropertyInfoExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/PropertyInfoExtensions.cs deleted file mode 100644 index 95a02c7..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/PropertyInfoExtensions.cs +++ /dev/null @@ -1,72 +0,0 @@ -#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.Reflection; - -namespace Google.Protobuf.Compatibility -{ - /// - /// Extension methods for , effectively providing - /// the familiar members from previous desktop framework versions while - /// targeting the newer releases, .NET Core etc. - /// - internal static class PropertyInfoExtensions - { - /// - /// Returns the public getter of a property, or null if there is no such getter - /// (either because it's read-only, or the getter isn't public). - /// - internal static MethodInfo GetGetMethod(this PropertyInfo target) - { -#if NET35 - var method = target.GetGetMethod(); -#else - var method = target.GetMethod; -#endif - return method != null && method.IsPublic ? method : null; - } - - /// - /// Returns the public setter of a property, or null if there is no such setter - /// (either because it's write-only, or the setter isn't public). - /// - internal static MethodInfo GetSetMethod(this PropertyInfo target) - { -#if NET35 - var method = target.GetSetMethod(); -#else - var method = target.SetMethod; -#endif - return method != null && method.IsPublic ? method : null; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/StreamExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/StreamExtensions.cs deleted file mode 100644 index bf4bf22..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/StreamExtensions.cs +++ /dev/null @@ -1,66 +0,0 @@ -#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 - -#if NET35 -using System; -using System.IO; - -namespace Google.Protobuf.Compatibility -{ - /// - /// Extension methods for in order to provide - /// backwards compatibility with .NET 3.5 - /// - public static class StreamExtensions - { - // 81920 seems to be the default buffer size used in .NET 4.5.1 - private const int BUFFER_SIZE = 81920; - - /// - /// Write the contents of the current stream to the destination stream - /// - public static void CopyTo(this Stream source, Stream destination) - { - if (destination == null) - { - throw new ArgumentNullException(nameof(destination)); - } - - byte[] buffer = new byte[BUFFER_SIZE]; - int numBytesRead; - while ((numBytesRead = source.Read(buffer, 0, buffer.Length)) > 0) { - destination.Write(buffer, 0, numBytesRead); - } - } - } -} -#endif diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/TypeExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/TypeExtensions.cs deleted file mode 100644 index 2f23713..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Compatibility/TypeExtensions.cs +++ /dev/null @@ -1,106 +0,0 @@ -#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; - -#if !NET35 -namespace Google.Protobuf.Compatibility -{ - /// - /// Provides extension methods on Type that just proxy to TypeInfo. - /// These are used to support the new type system from .NET 4.5, without - /// having calls to GetTypeInfo all over the place. While the methods here are meant to be - /// broadly compatible with the desktop framework, there are some subtle differences in behaviour - but - /// they're not expected to affect our use cases. While the class is internal, that should be fine: we can - /// evaluate each new use appropriately. - /// - internal static class TypeExtensions - { - /// - /// See https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom - /// - internal static bool IsAssignableFrom(this Type target, Type c) - { - return target.GetTypeInfo().IsAssignableFrom(c.GetTypeInfo()); - } - - /// - /// Returns a representation of the public property associated with the given name in the given type, - /// including inherited properties or null if there is no such public property. - /// Here, "public property" means a property where either the getter, or the setter, or both, is public. - /// - internal static PropertyInfo GetProperty(this Type target, string name) - { - // GetDeclaredProperty only returns properties declared in the given type, so we need to recurse. - while (target != null) - { - var typeInfo = target.GetTypeInfo(); - var ret = typeInfo.GetDeclaredProperty(name); - if (ret != null && ((ret.CanRead && ret.GetMethod.IsPublic) || (ret.CanWrite && ret.SetMethod.IsPublic))) - { - return ret; - } - target = typeInfo.BaseType; - } - return null; - } - - /// - /// Returns a representation of the public method associated with the given name in the given type, - /// including inherited methods. - /// - /// - /// This has a few differences compared with Type.GetMethod in the desktop framework. It will throw - /// if there is an ambiguous match even between a private method and a public one, but it *won't* throw - /// if there are two overloads at different levels in the type hierarchy (e.g. class Base declares public void Foo(int) and - /// class Child : Base declares public void Foo(long)). - /// - /// One type in the hierarchy declared more than one method with the same name - internal static MethodInfo GetMethod(this Type target, string name) - { - // GetDeclaredMethod only returns methods declared in the given type, so we need to recurse. - while (target != null) - { - var typeInfo = target.GetTypeInfo(); - var ret = typeInfo.GetDeclaredMethod(name); - if (ret != null && ret.IsPublic) - { - return ret; - } - target = typeInfo.BaseType; - } - return null; - } - } -} -#endif diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Extension.cs b/lib/protobuf/csharp/src/Google.Protobuf/Extension.cs deleted file mode 100644 index a96f8d2..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Extension.cs +++ /dev/null @@ -1,113 +0,0 @@ -#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 -{ - /// - /// Represents a non-generic extension definition. This API is experimental and subject to change. - /// - public abstract class Extension - { - internal abstract Type TargetType { get; } - - /// - /// Internal use. Creates a new extension with the specified field number. - /// - protected Extension(int fieldNumber) - { - FieldNumber = fieldNumber; - } - - internal abstract IExtensionValue CreateValue(); - - /// - /// Gets the field number of this extension - /// - public int FieldNumber { get; } - } - - /// - /// Represents a type-safe extension identifier used for getting and setting single extension values in instances. - /// This API is experimental and subject to change. - /// - /// The message type this field applies to - /// The field value type of this extension - public sealed class Extension : Extension where TTarget : IExtendableMessage - { - private readonly FieldCodec codec; - - /// - /// Creates a new extension identifier with the specified field number and codec - /// - public Extension(int fieldNumber, FieldCodec codec) : base(fieldNumber) - { - this.codec = codec; - } - - internal TValue DefaultValue => codec.DefaultValue; - - internal override Type TargetType => typeof(TTarget); - - internal override IExtensionValue CreateValue() - { - return new ExtensionValue(codec); - } - } - - /// - /// Represents a type-safe extension identifier used for getting repeated extension values in instances. - /// This API is experimental and subject to change. - /// - /// The message type this field applies to - /// The repeated field value type of this extension - public sealed class RepeatedExtension : Extension where TTarget : IExtendableMessage - { - private readonly FieldCodec codec; - - /// - /// Creates a new repeated extension identifier with the specified field number and codec - /// - public RepeatedExtension(int fieldNumber, FieldCodec codec) : base(fieldNumber) - { - this.codec = codec; - } - - internal override Type TargetType => typeof(TTarget); - - internal override IExtensionValue CreateValue() - { - return new RepeatedExtensionValue(codec); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionRegistry.cs b/lib/protobuf/csharp/src/Google.Protobuf/ExtensionRegistry.cs deleted file mode 100644 index b8eee24..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionRegistry.cs +++ /dev/null @@ -1,165 +0,0 @@ -#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; -using System.Collections.Generic; -using System.Linq; - -namespace Google.Protobuf -{ - /// - /// Provides extensions to messages while parsing. This API is experimental and subject to change. - /// - public sealed class ExtensionRegistry : ICollection, IDeepCloneable - { - private IDictionary, Extension> extensions; - - /// - /// Creates a new empty extension registry - /// - public ExtensionRegistry() - { - extensions = new Dictionary, Extension>(); - } - - private ExtensionRegistry(IDictionary, Extension> collection) - { - extensions = collection.ToDictionary(k => k.Key, v => v.Value); - } - - /// - /// Gets the total number of extensions in this extension registry - /// - public int Count => extensions.Count; - - /// - /// Returns whether the registry is readonly - /// - bool ICollection.IsReadOnly => false; - - internal bool ContainsInputField(CodedInputStream stream, Type target, out Extension extension) - { - return extensions.TryGetValue(new ObjectIntPair(target, WireFormat.GetTagFieldNumber(stream.LastTag)), out extension); - } - - /// - /// Adds the specified extension to the registry - /// - public void Add(Extension extension) - { - ProtoPreconditions.CheckNotNull(extension, nameof(extension)); - - extensions.Add(new ObjectIntPair(extension.TargetType, extension.FieldNumber), extension); - } - - /// - /// Adds the specified extensions to the reigstry - /// - public void AddRange(IEnumerable extensions) - { - ProtoPreconditions.CheckNotNull(extensions, nameof(extensions)); - - foreach (var extension in extensions) - Add(extension); - } - - /// - /// Clears the registry of all values - /// - public void Clear() - { - extensions.Clear(); - } - - /// - /// Gets whether the extension registry contains the specified extension - /// - public bool Contains(Extension item) - { - ProtoPreconditions.CheckNotNull(item, nameof(item)); - - return extensions.ContainsKey(new ObjectIntPair(item.TargetType, item.FieldNumber)); - } - - /// - /// Copies the arrays in the registry set to the specified array at the specified index - /// - /// The array to copy to - /// The array index to start at - void ICollection.CopyTo(Extension[] array, int arrayIndex) - { - ProtoPreconditions.CheckNotNull(array, nameof(array)); - if (arrayIndex < 0 || arrayIndex >= array.Length) - throw new ArgumentOutOfRangeException(nameof(arrayIndex)); - if (array.Length - arrayIndex < Count) - throw new ArgumentException("The provided array is shorter than the number of elements in the registry"); - - for (int i = 0; i < array.Length; i++) - { - Extension extension = array[i]; - extensions.Add(new ObjectIntPair(extension.TargetType, extension.FieldNumber), extension); - } - } - - /// - /// Returns an enumerator to enumerate through the items in the registry - /// - /// Returns an enumerator for the extensions in this registry - public IEnumerator GetEnumerator() - { - return extensions.Values.GetEnumerator(); - } - - /// - /// Removes the specified extension from the set - /// - /// The extension - /// true if the extension was removed, otherwise false - public bool Remove(Extension item) - { - ProtoPreconditions.CheckNotNull(item, nameof(item)); - - return extensions.Remove(new ObjectIntPair(item.TargetType, item.FieldNumber)); - } - - IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); - - /// - /// Clones the registry into a new registry - /// - public ExtensionRegistry Clone() - { - return new ExtensionRegistry(extensions); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionSet.cs b/lib/protobuf/csharp/src/Google.Protobuf/ExtensionSet.cs deleted file mode 100644 index a46e499..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionSet.cs +++ /dev/null @@ -1,334 +0,0 @@ -#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.Collections; -using System; -using System.Collections.Generic; -using System.Linq; - -namespace Google.Protobuf -{ - /// - /// Methods for managing s with null checking. - /// - /// Most users will not use this class directly and its API is experimental and subject to change. - /// - public static class ExtensionSet - { - private static bool TryGetValue(ref ExtensionSet set, Extension extension, out IExtensionValue value) where TTarget : IExtendableMessage - { - if (set == null) - { - value = null; - return false; - } - return set.ValuesByNumber.TryGetValue(extension.FieldNumber, out value); - } - - /// - /// Gets the value of the specified extension - /// - public static TValue Get(ref ExtensionSet set, Extension extension) where TTarget : IExtendableMessage - { - IExtensionValue value; - if (TryGetValue(ref set, extension, out value)) - { - return ((ExtensionValue)value).GetValue(); - } - else - { - return extension.DefaultValue; - } - } - - /// - /// Gets the value of the specified repeated extension or null if it doesn't exist in this set - /// - public static RepeatedField Get(ref ExtensionSet set, RepeatedExtension extension) where TTarget : IExtendableMessage - { - IExtensionValue value; - if (TryGetValue(ref set, extension, out value)) - { - return ((RepeatedExtensionValue)value).GetValue(); - } - else - { - return null; - } - } - - /// - /// Gets the value of the specified repeated extension, registering it if it doesn't exist - /// - public static RepeatedField GetOrRegister(ref ExtensionSet set, RepeatedExtension extension) where TTarget : IExtendableMessage - { - IExtensionValue value; - if (set == null) - { - value = extension.CreateValue(); - set = new ExtensionSet(); - set.ValuesByNumber.Add(extension.FieldNumber, value); - } - else - { - if (!set.ValuesByNumber.TryGetValue(extension.FieldNumber, out value)) - { - value = extension.CreateValue(); - set.ValuesByNumber.Add(extension.FieldNumber, value); - } - } - - return ((RepeatedExtensionValue)value).GetValue(); - } - - /// - /// Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null. - /// - public static void Set(ref ExtensionSet set, Extension extension, TValue value) where TTarget : IExtendableMessage - { - IExtensionValue extensionValue; - if (set == null) - { - extensionValue = extension.CreateValue(); - set = new ExtensionSet(); - set.ValuesByNumber.Add(extension.FieldNumber, extensionValue); - } - else - { - if (!set.ValuesByNumber.TryGetValue(extension.FieldNumber, out extensionValue)) - { - extensionValue = extension.CreateValue(); - set.ValuesByNumber.Add(extension.FieldNumber, extensionValue); - } - } - - ((ExtensionValue)extensionValue).SetValue(value); - } - - /// - /// Gets whether the value of the specified extension is set - /// - public static bool Has(ref ExtensionSet set, Extension extension) where TTarget : IExtendableMessage - { - IExtensionValue value; - return TryGetValue(ref set, extension, out value); - } - - /// - /// Clears the value of the specified extension - /// - public static void Clear(ref ExtensionSet set, Extension extension) where TTarget : IExtendableMessage - { - if (set == null) - { - return; - } - set.ValuesByNumber.Remove(extension.FieldNumber); - if (set.ValuesByNumber.Count == 0) - { - set = null; - } - } - - /// - /// Clears the value of the specified extension - /// - public static void Clear(ref ExtensionSet set, RepeatedExtension extension) where TTarget : IExtendableMessage - { - if (set == null) - { - return; - } - set.ValuesByNumber.Remove(extension.FieldNumber); - if (set.ValuesByNumber.Count == 0) - { - set = null; - } - } - - /// - /// Tries to merge a field from the coded input, returning true if the field was merged. - /// If the set is null or the field was not otherwise merged, this returns false. - /// - public static bool TryMergeFieldFrom(ref ExtensionSet set, CodedInputStream stream) where TTarget : IExtendableMessage - { - Extension extension; - int lastFieldNumber = WireFormat.GetTagFieldNumber(stream.LastTag); - - IExtensionValue extensionValue; - if (set != null && set.ValuesByNumber.TryGetValue(lastFieldNumber, out extensionValue)) - { - extensionValue.MergeFrom(stream); - return true; - } - else if (stream.ExtensionRegistry != null && stream.ExtensionRegistry.ContainsInputField(stream, typeof(TTarget), out extension)) - { - IExtensionValue value = extension.CreateValue(); - value.MergeFrom(stream); - set = (set ?? new ExtensionSet()); - set.ValuesByNumber.Add(extension.FieldNumber, value); - return true; - } - else - { - return false; - } - } - - /// - /// Merges the second set into the first set, creating a new instance if first is null - /// - public static void MergeFrom(ref ExtensionSet first, ExtensionSet second) where TTarget : IExtendableMessage - { - if (second == null) - { - return; - } - if (first == null) - { - first = new ExtensionSet(); - } - foreach (var pair in second.ValuesByNumber) - { - IExtensionValue value; - if (first.ValuesByNumber.TryGetValue(pair.Key, out value)) - { - value.MergeFrom(pair.Value); - } - else - { - var cloned = pair.Value.Clone(); - first.ValuesByNumber[pair.Key] = cloned; - } - } - } - - /// - /// Clones the set into a new set. If the set is null, this returns null - /// - public static ExtensionSet Clone(ExtensionSet set) where TTarget : IExtendableMessage - { - if (set == null) - { - return null; - } - - var newSet = new ExtensionSet(); - foreach (var pair in set.ValuesByNumber) - { - var cloned = pair.Value.Clone(); - newSet.ValuesByNumber[pair.Key] = cloned; - } - return newSet; - } - } - - /// - /// Used for keeping track of extensions in messages. - /// methods route to this set. - /// - /// Most users will not need to use this class directly - /// - /// The message type that extensions in this set target - public sealed class ExtensionSet where TTarget : IExtendableMessage - { - internal Dictionary ValuesByNumber { get; } = new Dictionary(); - - /// - /// Gets a hash code of the set - /// - public override int GetHashCode() - { - int ret = typeof(TTarget).GetHashCode(); - foreach (KeyValuePair field in ValuesByNumber) - { - // Use ^ here to make the field order irrelevant. - int hash = field.Key.GetHashCode() ^ field.Value.GetHashCode(); - ret ^= hash; - } - return ret; - } - - /// - /// Returns whether this set is equal to the other object - /// - public override bool Equals(object other) - { - if (ReferenceEquals(this, other)) - { - return true; - } - ExtensionSet otherSet = other as ExtensionSet; - if (ValuesByNumber.Count != otherSet.ValuesByNumber.Count) - { - return false; - } - foreach (var pair in ValuesByNumber) - { - IExtensionValue secondValue; - if (!otherSet.ValuesByNumber.TryGetValue(pair.Key, out secondValue)) - { - return false; - } - if (!pair.Value.Equals(secondValue)) - { - return false; - } - } - return true; - } - - /// - /// Calculates the size of this extension set - /// - public int CalculateSize() - { - int size = 0; - foreach (var value in ValuesByNumber.Values) - { - size += value.CalculateSize(); - } - return size; - } - - /// - /// Writes the extension values in this set to the output stream - /// - public void WriteTo(CodedOutputStream stream) - { - foreach (var value in ValuesByNumber.Values) - { - value.WriteTo(stream); - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionValue.cs b/lib/protobuf/csharp/src/Google.Protobuf/ExtensionValue.cs deleted file mode 100644 index 181e882..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ExtensionValue.cs +++ /dev/null @@ -1,207 +0,0 @@ -#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.Collections; -using System; - -namespace Google.Protobuf -{ - internal interface IExtensionValue : IEquatable, IDeepCloneable - { - void MergeFrom(CodedInputStream input); - void MergeFrom(IExtensionValue value); - void WriteTo(CodedOutputStream output); - int CalculateSize(); - } - - internal sealed class ExtensionValue : IExtensionValue - { - private bool hasValue; - private T field; - private FieldCodec codec; - - internal ExtensionValue(FieldCodec codec) - { - this.codec = codec; - field = codec.DefaultValue; - } - - public int CalculateSize() - { - if (!hasValue) - { - return 0; - } - return codec.CalculateSizeWithTag(field); - } - - public IExtensionValue Clone() - { - return new ExtensionValue(codec) - { - hasValue = hasValue, - field = field is IDeepCloneable ? (field as IDeepCloneable).Clone() : field - }; - } - - public bool Equals(IExtensionValue other) - { - if (ReferenceEquals(this, other)) - return true; - - return other is ExtensionValue - && codec.Equals((other as ExtensionValue).codec) - && hasValue.Equals((other as ExtensionValue).hasValue) - && Equals(field, (other as ExtensionValue).field); - // we check for equality in the codec since we could have equal field values however the values could be written in different ways - } - - public override int GetHashCode() - { - unchecked - { - int hash = 17; - hash = hash * 31 + hasValue.GetHashCode(); - hash = hash * 31 + field.GetHashCode(); - hash = hash * 31 + codec.GetHashCode(); - return hash; - } - } - - public void MergeFrom(CodedInputStream input) - { - hasValue = true; - codec.ValueMerger(input, ref field); - } - - public void MergeFrom(IExtensionValue value) - { - if (value is ExtensionValue) - { - var extensionValue = value as ExtensionValue; - if (extensionValue.hasValue) - { - hasValue |= codec.FieldMerger(ref field, extensionValue.field); - } - } - } - - public void WriteTo(CodedOutputStream output) - { - if (hasValue) - { - output.WriteTag(codec.Tag); - codec.ValueWriter(output, field); - if (codec.EndTag != 0) - { - output.WriteTag(codec.EndTag); - } - } - } - - public T GetValue() => field; - - public void SetValue(T value) - { - hasValue = true; - field = value; - } - - public bool HasValue => hasValue; - } - - internal sealed class RepeatedExtensionValue : IExtensionValue - { - private RepeatedField field; - private readonly FieldCodec codec; - - internal RepeatedExtensionValue(FieldCodec codec) - { - this.codec = codec; - field = new RepeatedField(); - } - - public int CalculateSize() - { - return field.CalculateSize(codec); - } - - public IExtensionValue Clone() - { - return new RepeatedExtensionValue(codec) - { - field = field.Clone() - }; - } - - public bool Equals(IExtensionValue other) - { - if (ReferenceEquals(this, other)) - return true; - - return other is RepeatedExtensionValue - && field.Equals((other as RepeatedExtensionValue).field) - && codec.Equals((other as RepeatedExtensionValue).codec); - } - - public override int GetHashCode() - { - unchecked - { - int hash = 17; - hash = hash * 31 + field.GetHashCode(); - hash = hash * 31 + codec.GetHashCode(); - return hash; - } - } - - public void MergeFrom(CodedInputStream input) - { - field.AddEntriesFrom(input, codec); - } - - public void MergeFrom(IExtensionValue value) - { - if (value is RepeatedExtensionValue) - { - field.Add((value as RepeatedExtensionValue).field); - } - } - - public void WriteTo(CodedOutputStream output) - { - field.WriteTo(output, codec); - } - - public RepeatedField GetValue() => field; - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/FieldCodec.cs b/lib/protobuf/csharp/src/Google.Protobuf/FieldCodec.cs deleted file mode 100644 index 90d3113..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/FieldCodec.cs +++ /dev/null @@ -1,773 +0,0 @@ -#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 Google.Protobuf.Collections; -using Google.Protobuf.Compatibility; -using Google.Protobuf.WellKnownTypes; -using System; -using System.Collections.Generic; - -namespace Google.Protobuf -{ - /// - /// Factory methods for . - /// - public static class FieldCodec - { - // TODO: Avoid the "dual hit" of lambda expressions: create open delegates instead. (At least test...) - - /// - /// Retrieves a codec suitable for a string field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForString(uint tag) - { - return FieldCodec.ForString(tag, ""); - } - - /// - /// Retrieves a codec suitable for a bytes field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForBytes(uint tag) - { - return FieldCodec.ForBytes(tag, ByteString.Empty); - } - - /// - /// Retrieves a codec suitable for a bool field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForBool(uint tag) - { - return FieldCodec.ForBool(tag, false); - } - - /// - /// Retrieves a codec suitable for an int32 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForInt32(uint tag) - { - return FieldCodec.ForInt32(tag, 0); - } - - /// - /// Retrieves a codec suitable for an sint32 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForSInt32(uint tag) - { - return FieldCodec.ForSInt32(tag, 0); - } - - /// - /// Retrieves a codec suitable for a fixed32 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForFixed32(uint tag) - { - return FieldCodec.ForFixed32(tag, 0); - } - - /// - /// Retrieves a codec suitable for an sfixed32 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForSFixed32(uint tag) - { - return FieldCodec.ForSFixed32(tag, 0); - } - - /// - /// Retrieves a codec suitable for a uint32 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForUInt32(uint tag) - { - return FieldCodec.ForUInt32(tag, 0); - } - - /// - /// Retrieves a codec suitable for an int64 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForInt64(uint tag) - { - return FieldCodec.ForInt64(tag, 0); - } - - /// - /// Retrieves a codec suitable for an sint64 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForSInt64(uint tag) - { - return FieldCodec.ForSInt64(tag, 0); - } - - /// - /// Retrieves a codec suitable for a fixed64 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForFixed64(uint tag) - { - return FieldCodec.ForFixed64(tag, 0); - } - - /// - /// Retrieves a codec suitable for an sfixed64 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForSFixed64(uint tag) - { - return FieldCodec.ForSFixed64(tag, 0); - } - - /// - /// Retrieves a codec suitable for a uint64 field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForUInt64(uint tag) - { - return FieldCodec.ForUInt64(tag, 0); - } - - /// - /// Retrieves a codec suitable for a float field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForFloat(uint tag) - { - return FieldCodec.ForFloat(tag, 0); - } - - /// - /// Retrieves a codec suitable for a double field with the given tag. - /// - /// The tag. - /// A codec for the given tag. - public static FieldCodec ForDouble(uint tag) - { - return FieldCodec.ForDouble(tag, 0); - } - - // Enums are tricky. We can probably use expression trees to build these delegates automatically, - // but it's easy to generate the code for it. - - /// - /// Retrieves a codec suitable for an enum field with the given tag. - /// - /// The tag. - /// A conversion function from to the enum type. - /// A conversion function from the enum type to . - /// A codec for the given tag. - public static FieldCodec ForEnum(uint tag, Func toInt32, Func fromInt32) - { - return FieldCodec.ForEnum(tag, toInt32, fromInt32, default(T)); - } - - /// - /// Retrieves a codec suitable for a string field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForString(uint tag, string defaultValue) - { - return new FieldCodec(input => input.ReadString(), (output, value) => output.WriteString(value), CodedOutputStream.ComputeStringSize, tag); - } - - /// - /// Retrieves a codec suitable for a bytes field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForBytes(uint tag, ByteString defaultValue) - { - return new FieldCodec(input => input.ReadBytes(), (output, value) => output.WriteBytes(value), CodedOutputStream.ComputeBytesSize, tag); - } - - /// - /// Retrieves a codec suitable for a bool field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForBool(uint tag, bool defaultValue) - { - return new FieldCodec(input => input.ReadBool(), (output, value) => output.WriteBool(value), CodedOutputStream.BoolSize, tag); - } - - /// - /// Retrieves a codec suitable for an int32 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForInt32(uint tag, int defaultValue) - { - return new FieldCodec(input => input.ReadInt32(), (output, value) => output.WriteInt32(value), CodedOutputStream.ComputeInt32Size, tag); - } - - /// - /// Retrieves a codec suitable for an sint32 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForSInt32(uint tag, int defaultValue) - { - return new FieldCodec(input => input.ReadSInt32(), (output, value) => output.WriteSInt32(value), CodedOutputStream.ComputeSInt32Size, tag); - } - - /// - /// Retrieves a codec suitable for a fixed32 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForFixed32(uint tag, uint defaultValue) - { - return new FieldCodec(input => input.ReadFixed32(), (output, value) => output.WriteFixed32(value), 4, tag); - } - - /// - /// Retrieves a codec suitable for an sfixed32 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForSFixed32(uint tag, int defaultValue) - { - return new FieldCodec(input => input.ReadSFixed32(), (output, value) => output.WriteSFixed32(value), 4, tag); - } - - /// - /// Retrieves a codec suitable for a uint32 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForUInt32(uint tag, uint defaultValue) - { - return new FieldCodec(input => input.ReadUInt32(), (output, value) => output.WriteUInt32(value), CodedOutputStream.ComputeUInt32Size, tag); - } - - /// - /// Retrieves a codec suitable for an int64 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForInt64(uint tag, long defaultValue) - { - return new FieldCodec(input => input.ReadInt64(), (output, value) => output.WriteInt64(value), CodedOutputStream.ComputeInt64Size, tag); - } - - /// - /// Retrieves a codec suitable for an sint64 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForSInt64(uint tag, long defaultValue) - { - return new FieldCodec(input => input.ReadSInt64(), (output, value) => output.WriteSInt64(value), CodedOutputStream.ComputeSInt64Size, tag); - } - - /// - /// Retrieves a codec suitable for a fixed64 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForFixed64(uint tag, ulong defaultValue) - { - return new FieldCodec(input => input.ReadFixed64(), (output, value) => output.WriteFixed64(value), 8, tag); - } - - /// - /// Retrieves a codec suitable for an sfixed64 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForSFixed64(uint tag, long defaultValue) - { - return new FieldCodec(input => input.ReadSFixed64(), (output, value) => output.WriteSFixed64(value), 8, tag); - } - - /// - /// Retrieves a codec suitable for a uint64 field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForUInt64(uint tag, ulong defaultValue) - { - return new FieldCodec(input => input.ReadUInt64(), (output, value) => output.WriteUInt64(value), CodedOutputStream.ComputeUInt64Size, tag); - } - - /// - /// Retrieves a codec suitable for a float field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForFloat(uint tag, float defaultValue) - { - return new FieldCodec(input => input.ReadFloat(), (output, value) => output.WriteFloat(value), CodedOutputStream.FloatSize, tag); - } - - /// - /// Retrieves a codec suitable for a double field with the given tag. - /// - /// The tag. - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForDouble(uint tag, double defaultValue) - { - return new FieldCodec(input => input.ReadDouble(), (output, value) => output.WriteDouble(value), CodedOutputStream.DoubleSize, tag); - } - - // Enums are tricky. We can probably use expression trees to build these delegates automatically, - // but it's easy to generate the code for it. - - /// - /// Retrieves a codec suitable for an enum field with the given tag. - /// - /// The tag. - /// A conversion function from to the enum type. - /// A conversion function from the enum type to . - /// The default value. - /// A codec for the given tag. - public static FieldCodec ForEnum(uint tag, Func toInt32, Func fromInt32, T defaultValue) - { - return new FieldCodec(input => fromInt32( - input.ReadEnum()), - (output, value) => output.WriteEnum(toInt32(value)), - value => CodedOutputStream.ComputeEnumSize(toInt32(value)), tag); - } - - /// - /// Retrieves a codec suitable for a message field with the given tag. - /// - /// The tag. - /// A parser to use for the message type. - /// A codec for the given tag. - public static FieldCodec ForMessage(uint tag, MessageParser parser) where T : class, IMessage - { - return new FieldCodec(input => { T message = parser.CreateTemplate(); input.ReadMessage(message); return message; }, - (output, value) => output.WriteMessage(value), (CodedInputStream i, ref T v) => - { - if (v == null) - { - v = parser.CreateTemplate(); - } - - i.ReadMessage(v); - }, - (ref T v, T v2) => - { - if (v2 == null) - { - return false; - } - else if (v == null) - { - v = v2.Clone(); - } - else - { - v.MergeFrom(v2); - } - return true; - }, message => CodedOutputStream.ComputeMessageSize(message), tag); - } - - /// - /// Retrieves a codec suitable for a group field with the given tag. - /// - /// The start group tag. - /// The end group tag. - /// A parser to use for the group message type. - /// A codec for given tag - public static FieldCodec ForGroup(uint startTag, uint endTag, MessageParser parser) where T : class, IMessage - { - return new FieldCodec(input => { T message = parser.CreateTemplate(); input.ReadGroup(message); return message; }, - (output, value) => output.WriteGroup(value), (CodedInputStream i, ref T v) => { - if (v == null) - { - v = parser.CreateTemplate(); - } - - i.ReadGroup(v); - }, - (ref T v, T v2) => - { - if (v2 == null) - { - return v == null; - } - else if (v == null) - { - v = v2.Clone(); - } - else - { - v.MergeFrom(v2); - } - return true; - }, message => CodedOutputStream.ComputeGroupSize(message), startTag, endTag); - } - - /// - /// Creates a codec for a wrapper type of a class - which must be string or ByteString. - /// - public static FieldCodec ForClassWrapper(uint tag) where T : class - { - var nestedCodec = WrapperCodecs.GetCodec(); - return new FieldCodec( - input => WrapperCodecs.Read(input, nestedCodec), - (output, value) => WrapperCodecs.Write(output, value, nestedCodec), - (CodedInputStream i, ref T v) => v = WrapperCodecs.Read(i, nestedCodec), - (ref T v, T v2) => { v = v2; return v == null; }, - value => WrapperCodecs.CalculateSize(value, nestedCodec), - tag, 0, - null); // Default value for the wrapper - } - - /// - /// Creates a codec for a wrapper type of a struct - which must be Int32, Int64, UInt32, UInt64, - /// Bool, Single or Double. - /// - public static FieldCodec ForStructWrapper(uint tag) where T : struct - { - var nestedCodec = WrapperCodecs.GetCodec(); - return new FieldCodec( - input => WrapperCodecs.Read(input, nestedCodec), - (output, value) => WrapperCodecs.Write(output, value.Value, nestedCodec), - (CodedInputStream i, ref T? v) => v = WrapperCodecs.Read(i, nestedCodec), - (ref T? v, T? v2) => { if (v2.HasValue) { v = v2; } return v.HasValue; }, - value => value == null ? 0 : WrapperCodecs.CalculateSize(value.Value, nestedCodec), - tag, 0, - null); // Default value for the wrapper - } - - /// - /// Helper code to create codecs for wrapper types. - /// - /// - /// Somewhat ugly with all the static methods, but the conversions involved to/from nullable types make it - /// slightly tricky to improve. So long as we keep the public API (ForClassWrapper, ForStructWrapper) in place, - /// we can refactor later if we come up with something cleaner. - /// - private static class WrapperCodecs - { - private static readonly Dictionary Codecs = new Dictionary - { - { typeof(bool), ForBool(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint)) }, - { typeof(int), ForInt32(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint)) }, - { typeof(long), ForInt64(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint)) }, - { typeof(uint), ForUInt32(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint)) }, - { typeof(ulong), ForUInt64(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Varint)) }, - { typeof(float), ForFloat(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Fixed32)) }, - { typeof(double), ForDouble(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.Fixed64)) }, - { typeof(string), ForString(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.LengthDelimited)) }, - { typeof(ByteString), ForBytes(WireFormat.MakeTag(WrappersReflection.WrapperValueFieldNumber, WireFormat.WireType.LengthDelimited)) } - }; - - /// - /// Returns a field codec which effectively wraps a value of type T in a message. - /// - /// - internal static FieldCodec GetCodec() - { - object value; - if (!Codecs.TryGetValue(typeof(T), out value)) - { - throw new InvalidOperationException("Invalid type argument requested for wrapper codec: " + typeof(T)); - } - return (FieldCodec) value; - } - - internal static T Read(CodedInputStream input, FieldCodec codec) - { - int length = input.ReadLength(); - int oldLimit = input.PushLimit(length); - - uint tag; - T value = codec.DefaultValue; - while ((tag = input.ReadTag()) != 0) - { - if (tag == codec.Tag) - { - value = codec.Read(input); - } - else - { - input.SkipLastField(); - } - - } - input.CheckReadEndOfStreamTag(); - input.PopLimit(oldLimit); - - return value; - } - - internal static void Write(CodedOutputStream output, T value, FieldCodec codec) - { - output.WriteLength(codec.CalculateSizeWithTag(value)); - codec.WriteTagAndValue(output, value); - } - - internal static int CalculateSize(T value, FieldCodec codec) - { - int fieldLength = codec.CalculateSizeWithTag(value); - return CodedOutputStream.ComputeLengthSize(fieldLength) + fieldLength; - } - } - } - - /// - /// - /// An encode/decode pair for a single field. This effectively encapsulates - /// all the information needed to read or write the field value from/to a coded - /// stream. - /// - /// - /// This class is public and has to be as it is used by generated code, but its public - /// API is very limited - just what the generated code needs to call directly. - /// - /// - /// - /// This never writes default values to the stream, and does not address "packedness" - /// in repeated fields itself, other than to know whether or not the field *should* be packed. - /// - public sealed class FieldCodec - { - private static readonly EqualityComparer EqualityComparer = ProtobufEqualityComparers.GetEqualityComparer(); - private static readonly T DefaultDefault; - // Only non-nullable value types support packing. This is the simplest way of detecting that. - private static readonly bool TypeSupportsPacking = default(T) != null; - - /// - /// Merges an input stream into a value - /// - internal delegate void InputMerger(CodedInputStream input, ref T value); - - /// - /// Merges a value into a reference to another value, returning a boolean if the value was set - /// - internal delegate bool ValuesMerger(ref T value, T other); - - static FieldCodec() - { - if (typeof(T) == typeof(string)) - { - DefaultDefault = (T)(object)""; - } - else if (typeof(T) == typeof(ByteString)) - { - DefaultDefault = (T)(object)ByteString.Empty; - } - // Otherwise it's the default value of the CLR type - } - - internal static bool IsPackedRepeatedField(uint tag) => - TypeSupportsPacking && WireFormat.GetTagWireType(tag) == WireFormat.WireType.LengthDelimited; - - internal bool PackedRepeatedField { get; } - - /// - /// Returns a delegate to write a value (unconditionally) to a coded output stream. - /// - internal Action ValueWriter { get; } - - /// - /// Returns the size calculator for just a value. - /// - internal Func ValueSizeCalculator { get; } - - /// - /// Returns a delegate to read a value from a coded input stream. It is assumed that - /// the stream is already positioned on the appropriate tag. - /// - internal Func ValueReader { get; } - - /// - /// Returns a delegate to merge a value from a coded input stream. - /// It is assumed that the stream is already positioned on the appropriate tag - /// - internal InputMerger ValueMerger { get; } - - /// - /// Returns a delegate to merge two values together. - /// - internal ValuesMerger FieldMerger { get; } - - /// - /// Returns the fixed size for an entry, or 0 if sizes vary. - /// - internal int FixedSize { get; } - - /// - /// Gets the tag of the codec. - /// - /// - /// The tag of the codec. - /// - internal uint Tag { get; } - - /// - /// Gets the end tag of the codec or 0 if there is no end tag - /// - /// - /// The end tag of the codec. - /// - internal uint EndTag { get; } - - /// - /// Default value for this codec. Usually the same for every instance of the same type, but - /// for string/ByteString wrapper fields the codec's default value is null, whereas for - /// other string/ByteString fields it's "" or ByteString.Empty. - /// - /// - /// The default value of the codec's type. - /// - internal T DefaultValue { get; } - - private readonly int tagSize; - - internal FieldCodec( - Func reader, - Action writer, - int fixedSize, - uint tag) : this(reader, writer, _ => fixedSize, tag) - { - FixedSize = fixedSize; - } - - internal FieldCodec( - Func reader, - Action writer, - Func sizeCalculator, - uint tag, - uint endTag = 0) : this(reader, writer, (CodedInputStream i, ref T v) => v = reader(i), (ref T v, T v2) => { v = v2; return true; }, sizeCalculator, tag, endTag, DefaultDefault) - { - } - - internal FieldCodec( - Func reader, - Action writer, - InputMerger inputMerger, - ValuesMerger valuesMerger, - Func sizeCalculator, - uint tag, - uint endTag = 0) : this(reader, writer, inputMerger, valuesMerger, sizeCalculator, tag, endTag, DefaultDefault) - { - } - - internal FieldCodec( - Func reader, - Action writer, - InputMerger inputMerger, - ValuesMerger valuesMerger, - Func sizeCalculator, - uint tag, - uint endTag, - T defaultValue) - { - ValueReader = reader; - ValueWriter = writer; - ValueMerger = inputMerger; - FieldMerger = valuesMerger; - ValueSizeCalculator = sizeCalculator; - FixedSize = 0; - Tag = tag; - DefaultValue = defaultValue; - tagSize = CodedOutputStream.ComputeRawVarint32Size(tag); - if (endTag != 0) - tagSize += CodedOutputStream.ComputeRawVarint32Size(endTag); - // Detect packed-ness once, so we can check for it within RepeatedField. - PackedRepeatedField = IsPackedRepeatedField(tag); - } - - /// - /// Write a tag and the given value, *if* the value is not the default. - /// - public void WriteTagAndValue(CodedOutputStream output, T value) - { - if (!IsDefault(value)) - { - output.WriteTag(Tag); - ValueWriter(output, value); - if (EndTag != 0) - { - output.WriteTag(EndTag); - } - } - } - - /// - /// Reads a value of the codec type from the given . - /// - /// The input stream to read from. - /// The value read from the stream. - public T Read(CodedInputStream input) => ValueReader(input); - - /// - /// Calculates the size required to write the given value, with a tag, - /// if the value is not the default. - /// - public int CalculateSizeWithTag(T value) => IsDefault(value) ? 0 : ValueSizeCalculator(value) + tagSize; - - private bool IsDefault(T value) => EqualityComparer.Equals(value, DefaultValue); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/FieldMaskTree.cs b/lib/protobuf/csharp/src/Google.Protobuf/FieldMaskTree.cs deleted file mode 100644 index 2297e7a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/FieldMaskTree.cs +++ /dev/null @@ -1,365 +0,0 @@ -#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; -using System.Collections.Generic; -using System.Diagnostics; -using Google.Protobuf.Reflection; -using Google.Protobuf.WellKnownTypes; - -namespace Google.Protobuf -{ - /// - /// A tree representation of a FieldMask. Each leaf node in this tree represent - /// a field path in the FieldMask. - /// - /// For example, FieldMask "foo.bar,foo.baz,bar.baz" as a tree will be: - /// - /// [root] -+- foo -+- bar - /// | | - /// | +- baz - /// | - /// +- bar --- baz - /// - /// - /// By representing FieldMasks with this tree structure we can easily convert - /// a FieldMask to a canonical form, merge two FieldMasks, calculate the - /// intersection to two FieldMasks and traverse all fields specified by the - /// FieldMask in a message tree. - /// - internal sealed class FieldMaskTree - { - private const char FIELD_PATH_SEPARATOR = '.'; - - internal sealed class Node - { - public Dictionary Children { get; } = new Dictionary(); - } - - private readonly Node root = new Node(); - - /// - /// Creates an empty FieldMaskTree. - /// - public FieldMaskTree() - { - } - - /// - /// Creates a FieldMaskTree for a given FieldMask. - /// - public FieldMaskTree(FieldMask mask) - { - MergeFromFieldMask(mask); - } - - public override string ToString() - { - return ToFieldMask().ToString(); - } - - /// - /// Adds a field path to the tree. In a FieldMask, every field path matches the - /// specified field as well as all its sub-fields. For example, a field path - /// "foo.bar" matches field "foo.bar" and also "foo.bar.baz", etc. When adding - /// a field path to the tree, redundant sub-paths will be removed. That is, - /// after adding "foo.bar" to the tree, "foo.bar.baz" will be removed if it - /// exists, which will turn the tree node for "foo.bar" to a leaf node. - /// Likewise, if the field path to add is a sub-path of an existing leaf node, - /// nothing will be changed in the tree. - /// - public FieldMaskTree AddFieldPath(string path) - { - var parts = path.Split(FIELD_PATH_SEPARATOR); - if (parts.Length == 0) - { - return this; - } - - var node = root; - var createNewBranch = false; - - // Find the matching node in the tree. - foreach (var part in parts) - { - // Check whether the path matches an existing leaf node. - if (!createNewBranch - && node != root - && node.Children.Count == 0) - { - // The path to add is a sub-path of an existing leaf node. - return this; - } - - Node childNode; - if (!node.Children.TryGetValue(part, out childNode)) - { - createNewBranch = true; - childNode = new Node(); - node.Children.Add(part, childNode); - } - node = childNode; - } - - // Turn the matching node into a leaf node (i.e., remove sub-paths). - node.Children.Clear(); - return this; - } - - /// - /// Merges all field paths in a FieldMask into this tree. - /// - public FieldMaskTree MergeFromFieldMask(FieldMask mask) - { - foreach (var path in mask.Paths) - { - AddFieldPath(path); - } - - return this; - } - - /// - /// Converts this tree to a FieldMask. - /// - public FieldMask ToFieldMask() - { - var mask = new FieldMask(); - if (root.Children.Count != 0) - { - var paths = new List(); - GetFieldPaths(root, "", paths); - mask.Paths.AddRange(paths); - } - - return mask; - } - - /// - /// Gathers all field paths in a sub-tree. - /// - private void GetFieldPaths(Node node, string path, List paths) - { - if (node.Children.Count == 0) - { - paths.Add(path); - return; - } - - foreach (var entry in node.Children) - { - var childPath = path.Length == 0 ? entry.Key : path + "." + entry.Key; - GetFieldPaths(entry.Value, childPath, paths); - } - } - - /// - /// Adds the intersection of this tree with the given to . - /// - public void IntersectFieldPath(string path, FieldMaskTree output) - { - if (root.Children.Count == 0) - { - return; - } - - var parts = path.Split(FIELD_PATH_SEPARATOR); - if (parts.Length == 0) - { - return; - } - - var node = root; - foreach (var part in parts) - { - if (node != root - && node.Children.Count == 0) - { - // The given path is a sub-path of an existing leaf node in the tree. - output.AddFieldPath(path); - return; - } - - if (!node.Children.TryGetValue(part, out node)) - { - return; - } - } - - // We found a matching node for the path. All leaf children of this matching - // node is in the intersection. - var paths = new List(); - GetFieldPaths(node, path, paths); - foreach (var value in paths) - { - output.AddFieldPath(value); - } - } - - /// - /// Merges all fields specified by this FieldMaskTree from to . - /// - public void Merge(IMessage source, IMessage destination, FieldMask.MergeOptions options) - { - if (source.Descriptor != destination.Descriptor) - { - throw new InvalidProtocolBufferException("Cannot merge messages of different types."); - } - - if (root.Children.Count == 0) - { - return; - } - - Merge(root, "", source, destination, options); - } - - /// - /// Merges all fields specified by a sub-tree from to . - /// - private void Merge( - Node node, - string path, - IMessage source, - IMessage destination, - FieldMask.MergeOptions options) - { - if (source.Descriptor != destination.Descriptor) - { - throw new InvalidProtocolBufferException($"source ({source.Descriptor}) and destination ({destination.Descriptor}) descriptor must be equal"); - } - - var descriptor = source.Descriptor; - foreach (var entry in node.Children) - { - var field = descriptor.FindFieldByName(entry.Key); - if (field == null) - { - Debug.WriteLine($"Cannot find field \"{entry.Key}\" in message type \"{descriptor.FullName}\""); - continue; - } - - if (entry.Value.Children.Count != 0) - { - if (field.IsRepeated - || field.FieldType != FieldType.Message) - { - Debug.WriteLine($"Field \"{field.FullName}\" is not a singular message field and cannot have sub-fields."); - continue; - } - - var sourceField = field.Accessor.GetValue(source); - var destinationField = field.Accessor.GetValue(destination); - if (sourceField == null - && destinationField == null) - { - // If the message field is not present in both source and destination, skip recursing - // so we don't create unnecessary empty messages. - continue; - } - - if (destinationField == null) - { - // If we have to merge but the destination does not contain the field, create it. - destinationField = field.MessageType.Parser.CreateTemplate(); - field.Accessor.SetValue(destination, destinationField); - } - - var childPath = path.Length == 0 ? entry.Key : path + "." + entry.Key; - Merge(entry.Value, childPath, (IMessage)sourceField, (IMessage)destinationField, options); - continue; - } - - if (field.IsRepeated) - { - if (options.ReplaceRepeatedFields) - { - field.Accessor.Clear(destination); - } - - var sourceField = (IList)field.Accessor.GetValue(source); - var destinationField = (IList)field.Accessor.GetValue(destination); - foreach (var element in sourceField) - { - destinationField.Add(element); - } - } - else - { - var sourceField = field.Accessor.GetValue(source); - if (field.FieldType == FieldType.Message) - { - if (options.ReplaceMessageFields) - { - if (sourceField == null) - { - field.Accessor.Clear(destination); - } - else - { - field.Accessor.SetValue(destination, sourceField); - } - } - else - { - if (sourceField != null) - { - var sourceByteString = ((IMessage)sourceField).ToByteString(); - var destinationValue = (IMessage)field.Accessor.GetValue(destination); - if (destinationValue != null) - { - destinationValue.MergeFrom(sourceByteString); - } - else - { - field.Accessor.SetValue(destination, field.MessageType.Parser.ParseFrom(sourceByteString)); - } - } - } - } - else - { - if (sourceField != null - || !options.ReplacePrimitiveFields) - { - field.Accessor.SetValue(destination, sourceField); - } - else - { - field.Accessor.Clear(destination); - } - } - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/FrameworkPortability.cs b/lib/protobuf/csharp/src/Google.Protobuf/FrameworkPortability.cs deleted file mode 100644 index 9498dbe..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/FrameworkPortability.cs +++ /dev/null @@ -1,49 +0,0 @@ -#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.Text.RegularExpressions; - -namespace Google.Protobuf -{ - /// - /// Class containing helpful workarounds for various platform compatibility - /// - internal static class FrameworkPortability - { - // 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. (RegexOptions.Compiled isn't supported by PCLs.) - internal static readonly RegexOptions CompiledRegexWhereAvailable = - Enum.IsDefined(typeof(RegexOptions), 8) ? (RegexOptions)8 : RegexOptions.None; - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Google.Protobuf.csproj b/lib/protobuf/csharp/src/Google.Protobuf/Google.Protobuf.csproj deleted file mode 100644 index 222f0fc..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Google.Protobuf.csproj +++ /dev/null @@ -1,42 +0,0 @@ - - - - C# runtime library for Protocol Buffers - Google's data interchange format. - Copyright 2015, Google Inc. - Google Protocol Buffers - 3.9.1 - 6 - Google Inc. - netstandard1.0;netstandard2.0;net45 - true - ../../keys/Google.Protobuf.snk - true - true - Protocol;Buffers;Binary;Serialization;Format;Google;proto;proto3 - C# proto3 support - https://github.com/protocolbuffers/protobuf - https://github.com/protocolbuffers/protobuf/blob/master/LICENSE - git - https://github.com/protocolbuffers/protobuf.git - - $(AllowedOutputExtensionsInPackageBuildOutputFolder);.pdb - - - - - netstandard1.0;netstandard2.0 - - - - - - - - - - - diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ICustomDiagnosticMessage.cs b/lib/protobuf/csharp/src/Google.Protobuf/ICustomDiagnosticMessage.cs deleted file mode 100644 index a009056..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ICustomDiagnosticMessage.cs +++ /dev/null @@ -1,69 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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 -{ - /// - /// A message type that has a custom string format for diagnostic purposes. - /// - /// - /// - /// Calling on a generated message type normally - /// returns the JSON representation. If a message type implements this interface, - /// then the method will be called instead of the regular - /// JSON formatting code, but only when ToString() is called either on the message itself - /// or on another message which contains it. This does not affect the normal JSON formatting of - /// the message. - /// - /// - /// For example, if you create a proto message representing a GUID, the internal - /// representation may be a bytes field or four fixed32 fields. However, when debugging - /// it may be more convenient to see a result in the same format as provides. - /// - /// This interface extends to avoid it accidentally being implemented - /// on types other than messages, where it would not be used by anything in the framework. - /// - public interface ICustomDiagnosticMessage : IMessage - { - /// - /// Returns a string representation of this object, for diagnostic purposes. - /// - /// - /// This method is called when a message is formatted as part of a - /// call. It does not affect the JSON representation used by other than - /// in calls to . While it is recommended - /// that the result is valid JSON, this is never assumed by the Protobuf library. - /// - /// A string representation of this object, for diagnostic purposes. - string ToDiagnosticString(); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/IDeepCloneable.cs b/lib/protobuf/csharp/src/Google.Protobuf/IDeepCloneable.cs deleted file mode 100644 index c9c71bb..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/IDeepCloneable.cs +++ /dev/null @@ -1,54 +0,0 @@ -#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 -{ - /// - /// Generic interface for a deeply cloneable type. - /// - /// - /// - /// All generated messages implement this interface, but so do some non-message types. - /// Additionally, due to the type constraint on T in , - /// it is simpler to keep this as a separate interface. - /// - /// - /// The type itself, returned by the method. - public interface IDeepCloneable - { - /// - /// Creates a deep clone of this object. - /// - /// A deep clone of this object. - T Clone(); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/IExtendableMessage.cs b/lib/protobuf/csharp/src/Google.Protobuf/IExtendableMessage.cs deleted file mode 100644 index 5cc2ae3..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/IExtendableMessage.cs +++ /dev/null @@ -1,78 +0,0 @@ -#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 Google.Protobuf.Collections; - -namespace Google.Protobuf -{ - /// - /// Generic interface for a Protocol Buffers message containing one or more extensions, where the type parameter is expected to be the same type as the implementation class - /// - public interface IExtendableMessage : IMessage where T : IExtendableMessage - { - /// - /// Gets the value of the specified extension - /// - TValue GetExtension(Extension extension); - - /// - /// Gets the value of the specified repeated extension or null if the extension isn't registered in this set. - /// For a version of this method that never returns null, use - /// - RepeatedField GetExtension(RepeatedExtension extension); - - /// - /// Gets the value of the specified repeated extension, registering it if it isn't - /// - RepeatedField GetOrRegisterExtension(RepeatedExtension extension); - - /// - /// Sets the value of the specified extension - /// - void SetExtension(Extension extension, TValue value); - - /// - /// Gets whether the value of the specified extension is set - /// - bool HasExtension(Extension extension); - - /// - /// Clears the value of the specified extension - /// - void ClearExtension(Extension extension); - - /// - /// Clears the value of the specified repeated extension - /// - void ClearExtension(RepeatedExtension extension); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/IMessage.cs b/lib/protobuf/csharp/src/Google.Protobuf/IMessage.cs deleted file mode 100644 index d089f94..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/IMessage.cs +++ /dev/null @@ -1,87 +0,0 @@ -#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.Reflection; - -namespace Google.Protobuf -{ - /// - /// Interface for a Protocol Buffers message, supporting - /// basic operations required for serialization. - /// - public interface IMessage - { - /// - /// Merges the data from the specified coded input stream with the current message. - /// - /// See the user guide for precise merge semantics. - /// - void MergeFrom(CodedInputStream input); - - /// - /// Writes the data to the given coded output stream. - /// - /// Coded output stream to write the data to. Must not be null. - void WriteTo(CodedOutputStream output); - - /// - /// Calculates the size of this message in Protocol Buffer wire format, in bytes. - /// - /// The number of bytes required to write this message - /// to a coded output stream. - int CalculateSize(); - - /// - /// Descriptor for this message. All instances are expected to return the same descriptor, - /// and for generated types this will be an explicitly-implemented member, returning the - /// same value as the static property declared on the type. - /// - MessageDescriptor Descriptor { get; } - } - - /// - /// Generic interface for a Protocol Buffers message, - /// where the type parameter is expected to be the same type as - /// the implementation class. - /// - /// The message type. - public interface IMessage : IMessage, IEquatable, IDeepCloneable where T : IMessage - { - /// - /// Merges the given message into this one. - /// - /// See the user guide for precise merge semantics. - /// The message to merge with this one. Must not be null. - void MergeFrom(T message); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/InvalidJsonException.cs b/lib/protobuf/csharp/src/Google.Protobuf/InvalidJsonException.cs deleted file mode 100644 index b543420..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/InvalidJsonException.cs +++ /dev/null @@ -1,53 +0,0 @@ -#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.IO; - -namespace Google.Protobuf -{ - /// - /// Thrown when an attempt is made to parse invalid JSON, e.g. using - /// a non-string property key, or including a redundant comma. Parsing a protocol buffer - /// message represented in JSON using can throw both this - /// exception and depending on the situation. This - /// exception is only thrown for "pure JSON" errors, whereas InvalidProtocolBufferException - /// is thrown when the JSON may be valid in and of itself, but cannot be parsed as a protocol buffer - /// message. - /// - public sealed class InvalidJsonException : IOException - { - internal InvalidJsonException(string message) - : base(message) - { - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/InvalidProtocolBufferException.cs b/lib/protobuf/csharp/src/Google.Protobuf/InvalidProtocolBufferException.cs deleted file mode 100644 index c5ffe9b..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/InvalidProtocolBufferException.cs +++ /dev/null @@ -1,140 +0,0 @@ -#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.IO; - -namespace Google.Protobuf -{ - /// - /// Thrown when a protocol message being parsed is invalid in some way, - /// e.g. it contains a malformed varint or a negative byte length. - /// - public sealed class InvalidProtocolBufferException : IOException - { - internal InvalidProtocolBufferException(string message) - : base(message) - { - } - - internal InvalidProtocolBufferException(string message, Exception innerException) - : base(message, innerException) - { - } - - internal static InvalidProtocolBufferException MoreDataAvailable() - { - return new InvalidProtocolBufferException( - "Completed reading a message while more data was available in the stream."); - } - - internal static InvalidProtocolBufferException TruncatedMessage() - { - return new InvalidProtocolBufferException( - "While parsing a protocol message, the input ended unexpectedly " + - "in the middle of a field. This could mean either that the " + - "input has been truncated or that an embedded message " + - "misreported its own length."); - } - - internal static InvalidProtocolBufferException NegativeSize() - { - return new InvalidProtocolBufferException( - "CodedInputStream encountered an embedded string or message " + - "which claimed to have negative size."); - } - - internal static InvalidProtocolBufferException MalformedVarint() - { - return new InvalidProtocolBufferException( - "CodedInputStream encountered a malformed varint."); - } - - /// - /// Creates an exception for an error condition of an invalid tag being encountered. - /// - internal static InvalidProtocolBufferException InvalidTag() - { - return new InvalidProtocolBufferException( - "Protocol message contained an invalid tag (zero)."); - } - - internal static InvalidProtocolBufferException InvalidWireType() - { - return new InvalidProtocolBufferException( - "Protocol message contained a tag with an invalid wire type."); - } - - internal static InvalidProtocolBufferException InvalidBase64(Exception innerException) - { - return new InvalidProtocolBufferException("Invalid base64 data", innerException); - } - - internal static InvalidProtocolBufferException InvalidEndTag() - { - return new InvalidProtocolBufferException( - "Protocol message end-group tag did not match expected tag."); - } - - internal static InvalidProtocolBufferException RecursionLimitExceeded() - { - return new InvalidProtocolBufferException( - "Protocol message had too many levels of nesting. May be malicious. " + - "Use CodedInputStream.SetRecursionLimit() to increase the depth limit."); - } - - internal static InvalidProtocolBufferException JsonRecursionLimitExceeded() - { - return new InvalidProtocolBufferException( - "Protocol message had too many levels of nesting. May be malicious. " + - "Use JsonParser.Settings to increase the depth limit."); - } - - internal static InvalidProtocolBufferException SizeLimitExceeded() - { - return new InvalidProtocolBufferException( - "Protocol message was too large. May be malicious. " + - "Use CodedInputStream.SetSizeLimit() to increase the size limit."); - } - - internal static InvalidProtocolBufferException InvalidMessageStreamTag() - { - return new InvalidProtocolBufferException( - "Stream of protocol messages had invalid tag. Expected tag is length-delimited field 1."); - } - - internal static InvalidProtocolBufferException MissingFields() - { - return new InvalidProtocolBufferException("Message was missing required fields"); - } -} -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/JsonFormatter.cs b/lib/protobuf/csharp/src/Google.Protobuf/JsonFormatter.cs deleted file mode 100644 index 2b4c5f0..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/JsonFormatter.cs +++ /dev/null @@ -1,920 +0,0 @@ -#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; -using Google.Protobuf.WellKnownTypes; -using System.IO; -using System.Linq; -using System.Collections.Generic; -using System.Reflection; - -namespace Google.Protobuf -{ - /// - /// Reflection-based converter from messages to JSON. - /// - /// - /// - /// Instances of this class are thread-safe, with no mutable state. - /// - /// - /// 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.) - /// - /// - public sealed class JsonFormatter - { - internal const string AnyTypeUrlField = "@type"; - internal const string AnyDiagnosticValueField = "@value"; - internal const string AnyWellKnownTypeValueField = "value"; - private const string TypeUrlPrefix = "type.googleapis.com"; - private const string NameValueSeparator = ": "; - private const string PropertySeparator = ", "; - - /// - /// Returns a formatter using the default settings. - /// - public static JsonFormatter Default { get; } = new JsonFormatter(Settings.Default); - - // A JSON formatter which *only* exists - private static readonly JsonFormatter diagnosticFormatter = new JsonFormatter(Settings.Default); - - /// - /// The JSON representation of the first 160 characters of Unicode. - /// Empty strings are replaced by the static constructor. - /// - 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; - - private bool DiagnosticOnly => ReferenceEquals(this, diagnosticFormatter); - - /// - /// Creates a new formatted with the given settings. - /// - /// The settings. - public JsonFormatter(Settings settings) - { - this.settings = settings; - } - - /// - /// Formats the specified message as JSON. - /// - /// The message to format. - /// The formatted message. - public string Format(IMessage message) - { - var writer = new StringWriter(); - Format(message, writer); - return writer.ToString(); - } - - /// - /// Formats the specified message as JSON. - /// - /// The message to format. - /// The TextWriter to write the formatted message to. - /// The formatted message. - public void Format(IMessage message, TextWriter writer) - { - ProtoPreconditions.CheckNotNull(message, nameof(message)); - ProtoPreconditions.CheckNotNull(writer, nameof(writer)); - - if (message.Descriptor.IsWellKnownType) - { - WriteWellKnownTypeValue(writer, message.Descriptor, message); - } - else - { - WriteMessage(writer, message); - } - } - - /// - /// Converts a message to JSON for diagnostic purposes with no extra context. - /// - /// - /// - /// This differs from calling on the default JSON - /// formatter in its handling of . As no type registry is available - /// in calls, the normal way of resolving the type of - /// an Any message cannot be applied. Instead, a JSON property named @value - /// is included with the base64 data from the property of the message. - /// - /// The value returned by this method is only designed to be used for diagnostic - /// purposes. It may not be parsable by , and may not be parsable - /// by other Protocol Buffer implementations. - /// - /// The message to format for diagnostic purposes. - /// The diagnostic-only JSON representation of the message - public static string ToDiagnosticString(IMessage message) - { - ProtoPreconditions.CheckNotNull(message, nameof(message)); - return diagnosticFormatter.Format(message); - } - - private void WriteMessage(TextWriter writer, IMessage message) - { - if (message == null) - { - WriteNull(writer); - return; - } - if (DiagnosticOnly) - { - ICustomDiagnosticMessage customDiagnosticMessage = message as ICustomDiagnosticMessage; - if (customDiagnosticMessage != null) - { - writer.Write(customDiagnosticMessage.ToDiagnosticString()); - return; - } - } - writer.Write("{ "); - bool writtenFields = WriteMessageFields(writer, message, false); - writer.Write(writtenFields ? " }" : "}"); - } - - private bool WriteMessageFields(TextWriter writer, IMessage message, bool assumeFirstFieldWritten) - { - var fields = message.Descriptor.Fields; - bool first = !assumeFirstFieldWritten; - // First non-oneof fields - foreach (var field in fields.InFieldNumberOrder()) - { - var accessor = field.Accessor; - if (field.ContainingOneof != null && field.ContainingOneof.Accessor.GetCaseFieldDescriptor(message) != field) - { - continue; - } - // Omit default values unless we're asked to format them, or they're oneofs (where the default - // value is still formatted regardless, because that's how we preserve the oneof case). - object value = accessor.GetValue(message); - if (field.ContainingOneof == null && !settings.FormatDefaultValues && IsDefaultValue(accessor, value)) - { - continue; - } - - // Okay, all tests complete: let's write the field value... - if (!first) - { - writer.Write(PropertySeparator); - } - - WriteString(writer, accessor.Descriptor.JsonName); - writer.Write(NameValueSeparator); - WriteValue(writer, value); - - first = false; - } - return !first; - } - - // Converted from java/core/src/main/java/com/google/protobuf/Descriptors.java - internal static string ToJsonName(string name) - { - StringBuilder result = new StringBuilder(name.Length); - bool isNextUpperCase = false; - foreach (char ch in name) - { - if (ch == '_') - { - isNextUpperCase = true; - } - else if (isNextUpperCase) - { - result.Append(char.ToUpperInvariant(ch)); - isNextUpperCase = false; - } - else - { - result.Append(ch); - } - } - return result.ToString(); - } - - internal static string FromJsonName(string name) - { - StringBuilder result = new StringBuilder(name.Length); - foreach (char ch in name) - { - if (char.IsUpper(ch)) - { - result.Append('_'); - result.Append(char.ToLowerInvariant(ch)); - } - else - { - result.Append(ch); - } - } - return result.ToString(); - } - - private static void WriteNull(TextWriter writer) - { - writer.Write("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"); - } - } - - /// - /// Writes a single value to the given writer as JSON. Only types understood by - /// Protocol Buffers can be written in this way. This method is only exposed for - /// advanced use cases; most users should be using - /// or . - /// - /// The writer to write the value to. Must not be null. - /// The value to write. May be null. - public void WriteValue(TextWriter writer, object value) - { - if (value == null) - { - WriteNull(writer); - } - else if (value is bool) - { - writer.Write((bool)value ? "true" : "false"); - } - else if (value is ByteString) - { - // Nothing in Base64 needs escaping - writer.Write('"'); - writer.Write(((ByteString)value).ToBase64()); - writer.Write('"'); - } - else if (value is string) - { - WriteString(writer, (string)value); - } - else if (value is IDictionary) - { - WriteDictionary(writer, (IDictionary)value); - } - else if (value is IList) - { - WriteList(writer, (IList)value); - } - else if (value is int || value is uint) - { - IFormattable formattable = (IFormattable) value; - writer.Write(formattable.ToString("d", CultureInfo.InvariantCulture)); - } - else if (value is long || value is ulong) - { - writer.Write('"'); - IFormattable formattable = (IFormattable) value; - writer.Write(formattable.ToString("d", CultureInfo.InvariantCulture)); - writer.Write('"'); - } - else if (value is System.Enum) - { - if (settings.FormatEnumsAsIntegers) - { - WriteValue(writer, (int)value); - } - else - { - string name = OriginalEnumValueHelper.GetOriginalName(value); - if (name != null) - { - WriteString(writer, name); - } - else - { - WriteValue(writer, (int)value); - } - } - } - else if (value is float || value is double) - { - string text = ((IFormattable) value).ToString("r", CultureInfo.InvariantCulture); - if (text == "NaN" || text == "Infinity" || text == "-Infinity") - { - writer.Write('"'); - writer.Write(text); - writer.Write('"'); - } - else - { - writer.Write(text); - } - } - else if (value is IMessage) - { - Format((IMessage)value, writer); - } - else - { - throw new ArgumentException("Unable to format value of type " + value.GetType()); - } - } - - /// - /// Central interception point for well-known type formatting. Any well-known types which - /// don't need special handling can fall back to WriteMessage. We avoid assuming that the - /// values are using the embedded well-known types, in order to allow for dynamic messages - /// in the future. - /// - private void WriteWellKnownTypeValue(TextWriter writer, MessageDescriptor descriptor, object value) - { - // Currently, we can never actually get here, because null values are always handled by the caller. But if we *could*, - // this would do the right thing. - if (value == null) - { - WriteNull(writer); - return; - } - // For wrapper types, the value will either be the (possibly boxed) "native" value, - // or the message itself if we're formatting it at the top level (e.g. just calling ToString on the object itself). - // If it's the message form, we can extract the value first, which *will* be the (possibly boxed) native value, - // and then proceed, writing it as if we were definitely in a field. (We never need to wrap it in an extra string... - // WriteValue will do the right thing.) - if (descriptor.IsWrapperType) - { - if (value is IMessage) - { - var message = (IMessage) value; - value = message.Descriptor.Fields[WrappersReflection.WrapperValueFieldNumber].Accessor.GetValue(message); - } - WriteValue(writer, value); - return; - } - if (descriptor.FullName == Timestamp.Descriptor.FullName) - { - WriteTimestamp(writer, (IMessage)value); - return; - } - if (descriptor.FullName == Duration.Descriptor.FullName) - { - WriteDuration(writer, (IMessage)value); - return; - } - if (descriptor.FullName == FieldMask.Descriptor.FullName) - { - WriteFieldMask(writer, (IMessage)value); - return; - } - if (descriptor.FullName == Struct.Descriptor.FullName) - { - WriteStruct(writer, (IMessage)value); - return; - } - if (descriptor.FullName == ListValue.Descriptor.FullName) - { - var fieldAccessor = descriptor.Fields[ListValue.ValuesFieldNumber].Accessor; - WriteList(writer, (IList)fieldAccessor.GetValue((IMessage)value)); - return; - } - if (descriptor.FullName == Value.Descriptor.FullName) - { - WriteStructFieldValue(writer, (IMessage)value); - return; - } - if (descriptor.FullName == Any.Descriptor.FullName) - { - WriteAny(writer, (IMessage)value); - return; - } - WriteMessage(writer, (IMessage)value); - } - - private void WriteTimestamp(TextWriter writer, IMessage value) - { - // TODO: In the common case where this *is* using the built-in Timestamp type, we could - // avoid all the reflection at this point, by casting to Timestamp. In the interests of - // avoiding subtle bugs, don't do that until we've implemented DynamicMessage so that we can prove - // it still works in that case. - int nanos = (int) value.Descriptor.Fields[Timestamp.NanosFieldNumber].Accessor.GetValue(value); - long seconds = (long) value.Descriptor.Fields[Timestamp.SecondsFieldNumber].Accessor.GetValue(value); - writer.Write(Timestamp.ToJson(seconds, nanos, DiagnosticOnly)); - } - - private void WriteDuration(TextWriter writer, IMessage value) - { - // TODO: Same as for WriteTimestamp - int nanos = (int) value.Descriptor.Fields[Duration.NanosFieldNumber].Accessor.GetValue(value); - long seconds = (long) value.Descriptor.Fields[Duration.SecondsFieldNumber].Accessor.GetValue(value); - writer.Write(Duration.ToJson(seconds, nanos, DiagnosticOnly)); - } - - private void WriteFieldMask(TextWriter writer, IMessage value) - { - var paths = (IList) value.Descriptor.Fields[FieldMask.PathsFieldNumber].Accessor.GetValue(value); - writer.Write(FieldMask.ToJson(paths, DiagnosticOnly)); - } - - private void WriteAny(TextWriter writer, IMessage value) - { - if (DiagnosticOnly) - { - WriteDiagnosticOnlyAny(writer, value); - return; - } - - string typeUrl = (string) value.Descriptor.Fields[Any.TypeUrlFieldNumber].Accessor.GetValue(value); - ByteString data = (ByteString) value.Descriptor.Fields[Any.ValueFieldNumber].Accessor.GetValue(value); - string typeName = Any.GetTypeName(typeUrl); - MessageDescriptor descriptor = settings.TypeRegistry.Find(typeName); - if (descriptor == null) - { - throw new InvalidOperationException($"Type registry has no descriptor for type name '{typeName}'"); - } - IMessage message = descriptor.Parser.ParseFrom(data); - writer.Write("{ "); - WriteString(writer, AnyTypeUrlField); - writer.Write(NameValueSeparator); - WriteString(writer, typeUrl); - - if (descriptor.IsWellKnownType) - { - writer.Write(PropertySeparator); - WriteString(writer, AnyWellKnownTypeValueField); - writer.Write(NameValueSeparator); - WriteWellKnownTypeValue(writer, descriptor, message); - } - else - { - WriteMessageFields(writer, message, true); - } - writer.Write(" }"); - } - - private void WriteDiagnosticOnlyAny(TextWriter writer, IMessage value) - { - string typeUrl = (string) value.Descriptor.Fields[Any.TypeUrlFieldNumber].Accessor.GetValue(value); - ByteString data = (ByteString) value.Descriptor.Fields[Any.ValueFieldNumber].Accessor.GetValue(value); - writer.Write("{ "); - WriteString(writer, AnyTypeUrlField); - writer.Write(NameValueSeparator); - WriteString(writer, typeUrl); - writer.Write(PropertySeparator); - WriteString(writer, AnyDiagnosticValueField); - writer.Write(NameValueSeparator); - writer.Write('"'); - writer.Write(data.ToBase64()); - writer.Write('"'); - writer.Write(" }"); - } - - private void WriteStruct(TextWriter writer, IMessage message) - { - writer.Write("{ "); - IDictionary fields = (IDictionary) message.Descriptor.Fields[Struct.FieldsFieldNumber].Accessor.GetValue(message); - bool first = true; - foreach (DictionaryEntry entry in fields) - { - string key = (string) entry.Key; - IMessage value = (IMessage) entry.Value; - if (string.IsNullOrEmpty(key) || value == null) - { - throw new InvalidOperationException("Struct fields cannot have an empty key or a null value."); - } - - if (!first) - { - writer.Write(PropertySeparator); - } - WriteString(writer, key); - writer.Write(NameValueSeparator); - WriteStructFieldValue(writer, value); - first = false; - } - writer.Write(first ? "}" : " }"); - } - - private void WriteStructFieldValue(TextWriter writer, IMessage message) - { - var specifiedField = message.Descriptor.Oneofs[0].Accessor.GetCaseFieldDescriptor(message); - if (specifiedField == null) - { - throw new InvalidOperationException("Value message must contain a value for the oneof."); - } - - object value = specifiedField.Accessor.GetValue(message); - - switch (specifiedField.FieldNumber) - { - case Value.BoolValueFieldNumber: - case Value.StringValueFieldNumber: - case Value.NumberValueFieldNumber: - WriteValue(writer, value); - return; - case Value.StructValueFieldNumber: - case Value.ListValueFieldNumber: - // Structs and ListValues are nested messages, and already well-known types. - var nestedMessage = (IMessage) specifiedField.Accessor.GetValue(message); - WriteWellKnownTypeValue(writer, nestedMessage.Descriptor, nestedMessage); - return; - case Value.NullValueFieldNumber: - WriteNull(writer); - return; - default: - throw new InvalidOperationException("Unexpected case in struct field: " + specifiedField.FieldNumber); - } - } - - internal void WriteList(TextWriter writer, IList list) - { - writer.Write("[ "); - bool first = true; - foreach (var value in list) - { - if (!first) - { - writer.Write(PropertySeparator); - } - WriteValue(writer, value); - first = false; - } - writer.Write(first ? "]" : " ]"); - } - - internal void WriteDictionary(TextWriter writer, IDictionary dictionary) - { - writer.Write("{ "); - bool first = true; - // This will box each pair. Could use IDictionaryEnumerator, but that's ugly in terms of disposal. - foreach (DictionaryEntry pair in dictionary) - { - if (!first) - { - writer.Write(PropertySeparator); - } - string keyText; - if (pair.Key is string) - { - keyText = (string) pair.Key; - } - else if (pair.Key is bool) - { - keyText = (bool) pair.Key ? "true" : "false"; - } - else if (pair.Key is int || pair.Key is uint | pair.Key is long || pair.Key is ulong) - { - keyText = ((IFormattable) pair.Key).ToString("d", CultureInfo.InvariantCulture); - } - else - { - if (pair.Key == null) - { - throw new ArgumentException("Dictionary has entry with null key"); - } - throw new ArgumentException("Unhandled dictionary key type: " + pair.Key.GetType()); - } - WriteString(writer, keyText); - writer.Write(NameValueSeparator); - WriteValue(writer, pair.Value); - first = false; - } - writer.Write(first ? "}" : " }"); - } - - /// - /// Writes a string (including leading and trailing double quotes) to a builder, escaping as required. - /// - /// - /// Other than surrogate pair handling, this code is mostly taken from src/google/protobuf/util/internal/json_escaping.cc. - /// - internal static void WriteString(TextWriter writer, string text) - { - writer.Write('"'); - for (int i = 0; i < text.Length; i++) - { - char c = text[i]; - if (c < 0xa0) - { - writer.Write(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(writer, c); - HexEncodeUtf16CodeUnit(writer, 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(writer, 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(writer, c); - } - else - { - // No handling of surrogates here - that's done earlier - writer.Write(c); - } - break; - } - } - writer.Write('"'); - } - - private const string Hex = "0123456789abcdef"; - private static void HexEncodeUtf16CodeUnit(TextWriter writer, char c) - { - writer.Write("\\u"); - writer.Write(Hex[(c >> 12) & 0xf]); - writer.Write(Hex[(c >> 8) & 0xf]); - writer.Write(Hex[(c >> 4) & 0xf]); - writer.Write(Hex[(c >> 0) & 0xf]); - } - - /// - /// Settings controlling JSON formatting. - /// - public sealed class Settings - { - /// - /// Default settings, as used by - /// - public static Settings Default { get; } - - // Workaround for the Mono compiler complaining about XML comments not being on - // valid language elements. - static Settings() - { - Default = new Settings(false); - } - - /// - /// Whether fields whose values are the default for the field type (e.g. 0 for integers) - /// should be formatted (true) or omitted (false). - /// - public bool FormatDefaultValues { get; } - - /// - /// The type registry used to format messages. - /// - public TypeRegistry TypeRegistry { get; } - - /// - /// Whether to format enums as ints. Defaults to false. - /// - public bool FormatEnumsAsIntegers { get; } - - - /// - /// Creates a new object with the specified formatting of default values - /// and an empty type registry. - /// - /// true if default values (0, empty strings etc) should be formatted; false otherwise. - public Settings(bool formatDefaultValues) : this(formatDefaultValues, TypeRegistry.Empty) - { - } - - /// - /// Creates a new object with the specified formatting of default values - /// and type registry. - /// - /// true if default values (0, empty strings etc) should be formatted; false otherwise. - /// The to use when formatting messages. - public Settings(bool formatDefaultValues, TypeRegistry typeRegistry) : this(formatDefaultValues, typeRegistry, false) - { - } - - /// - /// Creates a new object with the specified parameters. - /// - /// true if default values (0, empty strings etc) should be formatted; false otherwise. - /// The to use when formatting messages. TypeRegistry.Empty will be used if it is null. - /// true to format the enums as integers; false to format enums as enum names. - private Settings(bool formatDefaultValues, - TypeRegistry typeRegistry, - bool formatEnumsAsIntegers) - { - FormatDefaultValues = formatDefaultValues; - TypeRegistry = typeRegistry ?? TypeRegistry.Empty; - FormatEnumsAsIntegers = formatEnumsAsIntegers; - } - - /// - /// Creates a new object with the specified formatting of default values and the current settings. - /// - /// true if default values (0, empty strings etc) should be formatted; false otherwise. - public Settings WithFormatDefaultValues(bool formatDefaultValues) => new Settings(formatDefaultValues, TypeRegistry, FormatEnumsAsIntegers); - - /// - /// Creates a new object with the specified type registry and the current settings. - /// - /// The to use when formatting messages. - public Settings WithTypeRegistry(TypeRegistry typeRegistry) => new Settings(FormatDefaultValues, typeRegistry, FormatEnumsAsIntegers); - - /// - /// Creates a new object with the specified enums formatting option and the current settings. - /// - /// true to format the enums as integers; false to format enums as enum names. - public Settings WithFormatEnumsAsIntegers(bool formatEnumsAsIntegers) => new Settings(FormatDefaultValues, TypeRegistry, formatEnumsAsIntegers); - } - - // Effectively a cache of mapping from enum values to the original name as specified in the proto file, - // fetched by reflection. - // The need for this is unfortunate, as is its unbounded size, but realistically it shouldn't cause issues. - private static class OriginalEnumValueHelper - { - // TODO: In the future we might want to use ConcurrentDictionary, at the point where all - // the platforms we target have it. - private static readonly Dictionary> dictionaries - = new Dictionary>(); - - internal static string GetOriginalName(object value) - { - var enumType = value.GetType(); - Dictionary nameMapping; - lock (dictionaries) - { - if (!dictionaries.TryGetValue(enumType, out nameMapping)) - { - nameMapping = GetNameMapping(enumType); - dictionaries[enumType] = nameMapping; - } - } - - string originalName; - // If this returns false, originalName will be null, which is what we want. - nameMapping.TryGetValue(value, out originalName); - return originalName; - } - -#if NET35 - // TODO: Consider adding functionality to TypeExtensions to avoid this difference. - private static Dictionary GetNameMapping(System.Type enumType) => - enumType.GetFields(BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static) - .Where(f => (f.GetCustomAttributes(typeof(OriginalNameAttribute), false) - .FirstOrDefault() as OriginalNameAttribute) - ?.PreferredAlias ?? true) - .ToDictionary(f => f.GetValue(null), - f => (f.GetCustomAttributes(typeof(OriginalNameAttribute), false) - .FirstOrDefault() as OriginalNameAttribute) - // If the attribute hasn't been applied, fall back to the name of the field. - ?.Name ?? f.Name); -#else - private static Dictionary GetNameMapping(System.Type enumType) => - enumType.GetTypeInfo().DeclaredFields - .Where(f => f.IsStatic) - .Where(f => f.GetCustomAttributes() - .FirstOrDefault()?.PreferredAlias ?? true) - .ToDictionary(f => f.GetValue(null), - f => f.GetCustomAttributes() - .FirstOrDefault() - // If the attribute hasn't been applied, fall back to the name of the field. - ?.Name ?? f.Name); -#endif - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/JsonParser.cs b/lib/protobuf/csharp/src/Google.Protobuf/JsonParser.cs deleted file mode 100644 index fb594f2..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/JsonParser.cs +++ /dev/null @@ -1,1060 +0,0 @@ -#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 Google.Protobuf.Reflection; -using Google.Protobuf.WellKnownTypes; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Text; -using System.Text.RegularExpressions; - -namespace Google.Protobuf -{ - /// - /// Reflection-based converter from JSON to messages. - /// - /// - /// - /// Instances of this class are thread-safe, with no mutable state. - /// - /// - /// This is a simple start to get JSON parsing 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.) - /// - /// - public sealed class JsonParser - { - // Note: using 0-9 instead of \d to ensure no non-ASCII digits. - // This regex isn't a complete validator, but will remove *most* invalid input. We rely on parsing to do the rest. - private static readonly Regex TimestampRegex = new Regex(@"^(?[0-9]{4}-[01][0-9]-[0-3][0-9]T[012][0-9]:[0-5][0-9]:[0-5][0-9])(?\.[0-9]{1,9})?(?(Z|[+-][0-1][0-9]:[0-5][0-9]))$", FrameworkPortability.CompiledRegexWhereAvailable); - private static readonly Regex DurationRegex = new Regex(@"^(?-)?(?[0-9]{1,12})(?\.[0-9]{1,9})?s$", FrameworkPortability.CompiledRegexWhereAvailable); - private static readonly int[] SubsecondScalingFactors = { 0, 100000000, 100000000, 10000000, 1000000, 100000, 10000, 1000, 100, 10, 1 }; - private static readonly char[] FieldMaskPathSeparators = new[] { ',' }; - - private static readonly JsonParser defaultInstance = new JsonParser(Settings.Default); - - // TODO: Consider introducing a class containing parse state of the parser, tokenizer and depth. That would simplify these handlers - // and the signatures of various methods. - private static readonly Dictionary> - WellKnownTypeHandlers = new Dictionary> - { - { Timestamp.Descriptor.FullName, (parser, message, tokenizer) => MergeTimestamp(message, tokenizer.Next()) }, - { Duration.Descriptor.FullName, (parser, message, tokenizer) => MergeDuration(message, tokenizer.Next()) }, - { Value.Descriptor.FullName, (parser, message, tokenizer) => parser.MergeStructValue(message, tokenizer) }, - { ListValue.Descriptor.FullName, (parser, message, tokenizer) => - parser.MergeRepeatedField(message, message.Descriptor.Fields[ListValue.ValuesFieldNumber], tokenizer) }, - { Struct.Descriptor.FullName, (parser, message, tokenizer) => parser.MergeStruct(message, tokenizer) }, - { Any.Descriptor.FullName, (parser, message, tokenizer) => parser.MergeAny(message, tokenizer) }, - { FieldMask.Descriptor.FullName, (parser, message, tokenizer) => MergeFieldMask(message, tokenizer.Next()) }, - { Int32Value.Descriptor.FullName, MergeWrapperField }, - { Int64Value.Descriptor.FullName, MergeWrapperField }, - { UInt32Value.Descriptor.FullName, MergeWrapperField }, - { UInt64Value.Descriptor.FullName, MergeWrapperField }, - { FloatValue.Descriptor.FullName, MergeWrapperField }, - { DoubleValue.Descriptor.FullName, MergeWrapperField }, - { BytesValue.Descriptor.FullName, MergeWrapperField }, - { StringValue.Descriptor.FullName, MergeWrapperField }, - { BoolValue.Descriptor.FullName, MergeWrapperField } - }; - - // Convenience method to avoid having to repeat the same code multiple times in the above - // dictionary initialization. - private static void MergeWrapperField(JsonParser parser, IMessage message, JsonTokenizer tokenizer) - { - parser.MergeField(message, message.Descriptor.Fields[WrappersReflection.WrapperValueFieldNumber], tokenizer); - } - - /// - /// Returns a formatter using the default settings. - /// - public static JsonParser Default { get { return defaultInstance; } } - - private readonly Settings settings; - - /// - /// Creates a new formatted with the given settings. - /// - /// The settings. - public JsonParser(Settings settings) - { - this.settings = settings; - } - - /// - /// Parses and merges the information into the given message. - /// - /// The message to merge the JSON information into. - /// The JSON to parse. - internal void Merge(IMessage message, string json) - { - Merge(message, new StringReader(json)); - } - - /// - /// Parses JSON read from and merges the information into the given message. - /// - /// The message to merge the JSON information into. - /// Reader providing the JSON to parse. - internal void Merge(IMessage message, TextReader jsonReader) - { - var tokenizer = JsonTokenizer.FromTextReader(jsonReader); - Merge(message, tokenizer); - var lastToken = tokenizer.Next(); - if (lastToken != JsonToken.EndDocument) - { - throw new InvalidProtocolBufferException("Expected end of JSON after object"); - } - } - - /// - /// Merges the given message using data from the given tokenizer. In most cases, the next - /// token should be a "start object" token, but wrapper types and nullity can invalidate - /// that assumption. This is implemented as an LL(1) recursive descent parser over the stream - /// of tokens provided by the tokenizer. This token stream is assumed to be valid JSON, with the - /// tokenizer performing that validation - but not every token stream is valid "protobuf JSON". - /// - private void Merge(IMessage message, JsonTokenizer tokenizer) - { - if (tokenizer.ObjectDepth > settings.RecursionLimit) - { - throw InvalidProtocolBufferException.JsonRecursionLimitExceeded(); - } - if (message.Descriptor.IsWellKnownType) - { - Action handler; - if (WellKnownTypeHandlers.TryGetValue(message.Descriptor.FullName, out handler)) - { - handler(this, message, tokenizer); - return; - } - // Well-known types with no special handling continue in the normal way. - } - var token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StartObject) - { - throw new InvalidProtocolBufferException("Expected an object"); - } - var descriptor = message.Descriptor; - var jsonFieldMap = descriptor.Fields.ByJsonName(); - // All the oneof fields we've already accounted for - we can only see each of them once. - // The set is created lazily to avoid the overhead of creating a set for every message - // we parsed, when oneofs are relatively rare. - HashSet seenOneofs = null; - while (true) - { - token = tokenizer.Next(); - if (token.Type == JsonToken.TokenType.EndObject) - { - return; - } - if (token.Type != JsonToken.TokenType.Name) - { - throw new InvalidOperationException("Unexpected token type " + token.Type); - } - string name = token.StringValue; - FieldDescriptor field; - if (jsonFieldMap.TryGetValue(name, out field)) - { - if (field.ContainingOneof != null) - { - if (seenOneofs == null) - { - seenOneofs = new HashSet(); - } - if (!seenOneofs.Add(field.ContainingOneof)) - { - throw new InvalidProtocolBufferException($"Multiple values specified for oneof {field.ContainingOneof.Name}"); - } - } - MergeField(message, field, tokenizer); - } - else - { - if (settings.IgnoreUnknownFields) - { - tokenizer.SkipValue(); - } - else - { - throw new InvalidProtocolBufferException("Unknown field: " + name); - } - } - } - } - - private void MergeField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer) - { - var token = tokenizer.Next(); - if (token.Type == JsonToken.TokenType.Null) - { - // Clear the field if we see a null token, unless it's for a singular field of type - // google.protobuf.Value. - // Note: different from Java API, which just ignores it. - // TODO: Bring it more in line? Discuss... - if (field.IsMap || field.IsRepeated || !IsGoogleProtobufValueField(field)) - { - field.Accessor.Clear(message); - return; - } - } - tokenizer.PushBack(token); - - if (field.IsMap) - { - MergeMapField(message, field, tokenizer); - } - else if (field.IsRepeated) - { - MergeRepeatedField(message, field, tokenizer); - } - else - { - var value = ParseSingleValue(field, tokenizer); - field.Accessor.SetValue(message, value); - } - } - - private void MergeRepeatedField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer) - { - var token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StartArray) - { - throw new InvalidProtocolBufferException("Repeated field value was not an array. Token type: " + token.Type); - } - - IList list = (IList) field.Accessor.GetValue(message); - while (true) - { - token = tokenizer.Next(); - if (token.Type == JsonToken.TokenType.EndArray) - { - return; - } - tokenizer.PushBack(token); - object value = ParseSingleValue(field, tokenizer); - if (value == null) - { - throw new InvalidProtocolBufferException("Repeated field elements cannot be null"); - } - list.Add(value); - } - } - - private void MergeMapField(IMessage message, FieldDescriptor field, JsonTokenizer tokenizer) - { - // Map fields are always objects, even if the values are well-known types: ParseSingleValue handles those. - var token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StartObject) - { - throw new InvalidProtocolBufferException("Expected an object to populate a map"); - } - - var type = field.MessageType; - var keyField = type.FindFieldByNumber(1); - var valueField = type.FindFieldByNumber(2); - if (keyField == null || valueField == null) - { - throw new InvalidProtocolBufferException("Invalid map field: " + field.FullName); - } - IDictionary dictionary = (IDictionary) field.Accessor.GetValue(message); - - while (true) - { - token = tokenizer.Next(); - if (token.Type == JsonToken.TokenType.EndObject) - { - return; - } - object key = ParseMapKey(keyField, token.StringValue); - object value = ParseSingleValue(valueField, tokenizer); - if (value == null) - { - throw new InvalidProtocolBufferException("Map values must not be null"); - } - dictionary[key] = value; - } - } - - private static bool IsGoogleProtobufValueField(FieldDescriptor field) - { - return field.FieldType == FieldType.Message && - field.MessageType.FullName == Value.Descriptor.FullName; - } - - private object ParseSingleValue(FieldDescriptor field, JsonTokenizer tokenizer) - { - var token = tokenizer.Next(); - if (token.Type == JsonToken.TokenType.Null) - { - // TODO: In order to support dynamic messages, we should really build this up - // dynamically. - if (IsGoogleProtobufValueField(field)) - { - return Value.ForNull(); - } - return null; - } - - var fieldType = field.FieldType; - if (fieldType == FieldType.Message) - { - // Parse wrapper types as their constituent types. - // TODO: What does this mean for null? - if (field.MessageType.IsWrapperType) - { - field = field.MessageType.Fields[WrappersReflection.WrapperValueFieldNumber]; - fieldType = field.FieldType; - } - else - { - // TODO: Merge the current value in message? (Public API currently doesn't make this relevant as we don't expose merging.) - tokenizer.PushBack(token); - IMessage subMessage = NewMessageForField(field); - Merge(subMessage, tokenizer); - return subMessage; - } - } - - switch (token.Type) - { - case JsonToken.TokenType.True: - case JsonToken.TokenType.False: - if (fieldType == FieldType.Bool) - { - return token.Type == JsonToken.TokenType.True; - } - // Fall through to "we don't support this type for this case"; could duplicate the behaviour of the default - // case instead, but this way we'd only need to change one place. - goto default; - case JsonToken.TokenType.StringValue: - return ParseSingleStringValue(field, token.StringValue); - // Note: not passing the number value itself here, as we may end up storing the string value in the token too. - case JsonToken.TokenType.Number: - return ParseSingleNumberValue(field, token); - case JsonToken.TokenType.Null: - throw new NotImplementedException("Haven't worked out what to do for null yet"); - default: - throw new InvalidProtocolBufferException("Unsupported JSON token type " + token.Type + " for field type " + fieldType); - } - } - - /// - /// Parses into a new message. - /// - /// The type of message to create. - /// The JSON to parse. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public T Parse(string json) where T : IMessage, new() - { - ProtoPreconditions.CheckNotNull(json, nameof(json)); - return Parse(new StringReader(json)); - } - - /// - /// Parses JSON read from into a new message. - /// - /// The type of message to create. - /// Reader providing the JSON to parse. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public T Parse(TextReader jsonReader) where T : IMessage, new() - { - ProtoPreconditions.CheckNotNull(jsonReader, nameof(jsonReader)); - T message = new T(); - Merge(message, jsonReader); - return message; - } - - /// - /// Parses into a new message. - /// - /// The JSON to parse. - /// Descriptor of message type to parse. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public IMessage Parse(string json, MessageDescriptor descriptor) - { - ProtoPreconditions.CheckNotNull(json, nameof(json)); - ProtoPreconditions.CheckNotNull(descriptor, nameof(descriptor)); - return Parse(new StringReader(json), descriptor); - } - - /// - /// Parses JSON read from into a new message. - /// - /// Reader providing the JSON to parse. - /// Descriptor of message type to parse. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public IMessage Parse(TextReader jsonReader, MessageDescriptor descriptor) - { - ProtoPreconditions.CheckNotNull(jsonReader, nameof(jsonReader)); - ProtoPreconditions.CheckNotNull(descriptor, nameof(descriptor)); - IMessage message = descriptor.Parser.CreateTemplate(); - Merge(message, jsonReader); - return message; - } - - private void MergeStructValue(IMessage message, JsonTokenizer tokenizer) - { - var firstToken = tokenizer.Next(); - var fields = message.Descriptor.Fields; - switch (firstToken.Type) - { - case JsonToken.TokenType.Null: - fields[Value.NullValueFieldNumber].Accessor.SetValue(message, 0); - return; - case JsonToken.TokenType.StringValue: - fields[Value.StringValueFieldNumber].Accessor.SetValue(message, firstToken.StringValue); - return; - case JsonToken.TokenType.Number: - fields[Value.NumberValueFieldNumber].Accessor.SetValue(message, firstToken.NumberValue); - return; - case JsonToken.TokenType.False: - case JsonToken.TokenType.True: - fields[Value.BoolValueFieldNumber].Accessor.SetValue(message, firstToken.Type == JsonToken.TokenType.True); - return; - case JsonToken.TokenType.StartObject: - { - var field = fields[Value.StructValueFieldNumber]; - var structMessage = NewMessageForField(field); - tokenizer.PushBack(firstToken); - Merge(structMessage, tokenizer); - field.Accessor.SetValue(message, structMessage); - return; - } - case JsonToken.TokenType.StartArray: - { - var field = fields[Value.ListValueFieldNumber]; - var list = NewMessageForField(field); - tokenizer.PushBack(firstToken); - Merge(list, tokenizer); - field.Accessor.SetValue(message, list); - return; - } - default: - throw new InvalidOperationException("Unexpected token type: " + firstToken.Type); - } - } - - private void MergeStruct(IMessage message, JsonTokenizer tokenizer) - { - var token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StartObject) - { - throw new InvalidProtocolBufferException("Expected object value for Struct"); - } - tokenizer.PushBack(token); - - var field = message.Descriptor.Fields[Struct.FieldsFieldNumber]; - MergeMapField(message, field, tokenizer); - } - - private void MergeAny(IMessage message, JsonTokenizer tokenizer) - { - // Record the token stream until we see the @type property. At that point, we can take the value, consult - // the type registry for the relevant message, and replay the stream, omitting the @type property. - var tokens = new List(); - - var token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StartObject) - { - throw new InvalidProtocolBufferException("Expected object value for Any"); - } - int typeUrlObjectDepth = tokenizer.ObjectDepth; - - // The check for the property depth protects us from nested Any values which occur before the type URL - // for *this* Any. - while (token.Type != JsonToken.TokenType.Name || - token.StringValue != JsonFormatter.AnyTypeUrlField || - tokenizer.ObjectDepth != typeUrlObjectDepth) - { - tokens.Add(token); - token = tokenizer.Next(); - - if (tokenizer.ObjectDepth < typeUrlObjectDepth) - { - throw new InvalidProtocolBufferException("Any message with no @type"); - } - } - - // Don't add the @type property or its value to the recorded token list - token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.StringValue) - { - throw new InvalidProtocolBufferException("Expected string value for Any.@type"); - } - string typeUrl = token.StringValue; - string typeName = Any.GetTypeName(typeUrl); - - MessageDescriptor descriptor = settings.TypeRegistry.Find(typeName); - if (descriptor == null) - { - throw new InvalidOperationException($"Type registry has no descriptor for type name '{typeName}'"); - } - - // Now replay the token stream we've already read and anything that remains of the object, just parsing it - // as normal. Our original tokenizer should end up at the end of the object. - var replay = JsonTokenizer.FromReplayedTokens(tokens, tokenizer); - var body = descriptor.Parser.CreateTemplate(); - if (descriptor.IsWellKnownType) - { - MergeWellKnownTypeAnyBody(body, replay); - } - else - { - Merge(body, replay); - } - var data = body.ToByteString(); - - // Now that we have the message data, we can pack it into an Any (the message received as a parameter). - message.Descriptor.Fields[Any.TypeUrlFieldNumber].Accessor.SetValue(message, typeUrl); - message.Descriptor.Fields[Any.ValueFieldNumber].Accessor.SetValue(message, data); - } - - // Well-known types end up in a property called "value" in the JSON. As there's no longer a @type property - // in the given JSON token stream, we should *only* have tokens of start-object, name("value"), the value - // itself, and then end-object. - private void MergeWellKnownTypeAnyBody(IMessage body, JsonTokenizer tokenizer) - { - var token = tokenizer.Next(); // Definitely start-object; checked in previous method - token = tokenizer.Next(); - // TODO: What about an absent Int32Value, for example? - if (token.Type != JsonToken.TokenType.Name || token.StringValue != JsonFormatter.AnyWellKnownTypeValueField) - { - throw new InvalidProtocolBufferException($"Expected '{JsonFormatter.AnyWellKnownTypeValueField}' property for well-known type Any body"); - } - Merge(body, tokenizer); - token = tokenizer.Next(); - if (token.Type != JsonToken.TokenType.EndObject) - { - throw new InvalidProtocolBufferException($"Expected end-object token after @type/value for well-known type"); - } - } - - #region Utility methods which don't depend on the state (or settings) of the parser. - private static object ParseMapKey(FieldDescriptor field, string keyText) - { - switch (field.FieldType) - { - case FieldType.Bool: - if (keyText == "true") - { - return true; - } - if (keyText == "false") - { - return false; - } - throw new InvalidProtocolBufferException("Invalid string for bool map key: " + keyText); - case FieldType.String: - return keyText; - case FieldType.Int32: - case FieldType.SInt32: - case FieldType.SFixed32: - return ParseNumericString(keyText, int.Parse); - case FieldType.UInt32: - case FieldType.Fixed32: - return ParseNumericString(keyText, uint.Parse); - case FieldType.Int64: - case FieldType.SInt64: - case FieldType.SFixed64: - return ParseNumericString(keyText, long.Parse); - case FieldType.UInt64: - case FieldType.Fixed64: - return ParseNumericString(keyText, ulong.Parse); - default: - throw new InvalidProtocolBufferException("Invalid field type for map: " + field.FieldType); - } - } - - private static object ParseSingleNumberValue(FieldDescriptor field, JsonToken token) - { - double value = token.NumberValue; - checked - { - try - { - switch (field.FieldType) - { - case FieldType.Int32: - case FieldType.SInt32: - case FieldType.SFixed32: - CheckInteger(value); - return (int) value; - case FieldType.UInt32: - case FieldType.Fixed32: - CheckInteger(value); - return (uint) value; - case FieldType.Int64: - case FieldType.SInt64: - case FieldType.SFixed64: - CheckInteger(value); - return (long) value; - case FieldType.UInt64: - case FieldType.Fixed64: - CheckInteger(value); - return (ulong) value; - case FieldType.Double: - return value; - case FieldType.Float: - if (double.IsNaN(value)) - { - return float.NaN; - } - if (value > float.MaxValue || value < float.MinValue) - { - if (double.IsPositiveInfinity(value)) - { - return float.PositiveInfinity; - } - if (double.IsNegativeInfinity(value)) - { - return float.NegativeInfinity; - } - throw new InvalidProtocolBufferException($"Value out of range: {value}"); - } - return (float) value; - case FieldType.Enum: - CheckInteger(value); - // Just return it as an int, and let the CLR convert it. - // Note that we deliberately don't check that it's a known value. - return (int) value; - default: - throw new InvalidProtocolBufferException($"Unsupported conversion from JSON number for field type {field.FieldType}"); - } - } - catch (OverflowException) - { - throw new InvalidProtocolBufferException($"Value out of range: {value}"); - } - } - } - - private static void CheckInteger(double value) - { - if (double.IsInfinity(value) || double.IsNaN(value)) - { - throw new InvalidProtocolBufferException($"Value not an integer: {value}"); - } - if (value != Math.Floor(value)) - { - throw new InvalidProtocolBufferException($"Value not an integer: {value}"); - } - } - - private static object ParseSingleStringValue(FieldDescriptor field, string text) - { - switch (field.FieldType) - { - case FieldType.String: - return text; - case FieldType.Bytes: - try - { - return ByteString.FromBase64(text); - } - catch (FormatException e) - { - throw InvalidProtocolBufferException.InvalidBase64(e); - } - case FieldType.Int32: - case FieldType.SInt32: - case FieldType.SFixed32: - return ParseNumericString(text, int.Parse); - case FieldType.UInt32: - case FieldType.Fixed32: - return ParseNumericString(text, uint.Parse); - case FieldType.Int64: - case FieldType.SInt64: - case FieldType.SFixed64: - return ParseNumericString(text, long.Parse); - case FieldType.UInt64: - case FieldType.Fixed64: - return ParseNumericString(text, ulong.Parse); - case FieldType.Double: - double d = ParseNumericString(text, double.Parse); - ValidateInfinityAndNan(text, double.IsPositiveInfinity(d), double.IsNegativeInfinity(d), double.IsNaN(d)); - return d; - case FieldType.Float: - float f = ParseNumericString(text, float.Parse); - ValidateInfinityAndNan(text, float.IsPositiveInfinity(f), float.IsNegativeInfinity(f), float.IsNaN(f)); - return f; - case FieldType.Enum: - var enumValue = field.EnumType.FindValueByName(text); - if (enumValue == null) - { - throw new InvalidProtocolBufferException($"Invalid enum value: {text} for enum type: {field.EnumType.FullName}"); - } - // Just return it as an int, and let the CLR convert it. - return enumValue.Number; - default: - throw new InvalidProtocolBufferException($"Unsupported conversion from JSON string for field type {field.FieldType}"); - } - } - - /// - /// Creates a new instance of the message type for the given field. - /// - private static IMessage NewMessageForField(FieldDescriptor field) - { - return field.MessageType.Parser.CreateTemplate(); - } - - private static T ParseNumericString(string text, Func parser) - { - // Can't prohibit this with NumberStyles. - if (text.StartsWith("+")) - { - throw new InvalidProtocolBufferException($"Invalid numeric value: {text}"); - } - if (text.StartsWith("0") && text.Length > 1) - { - if (text[1] >= '0' && text[1] <= '9') - { - throw new InvalidProtocolBufferException($"Invalid numeric value: {text}"); - } - } - else if (text.StartsWith("-0") && text.Length > 2) - { - if (text[2] >= '0' && text[2] <= '9') - { - throw new InvalidProtocolBufferException($"Invalid numeric value: {text}"); - } - } - try - { - return parser(text, NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent, CultureInfo.InvariantCulture); - } - catch (FormatException) - { - throw new InvalidProtocolBufferException($"Invalid numeric value for type: {text}"); - } - catch (OverflowException) - { - throw new InvalidProtocolBufferException($"Value out of range: {text}"); - } - } - - /// - /// Checks that any infinite/NaN values originated from the correct text. - /// This corrects the lenient whitespace handling of double.Parse/float.Parse, as well as the - /// way that Mono parses out-of-range values as infinity. - /// - private static void ValidateInfinityAndNan(string text, bool isPositiveInfinity, bool isNegativeInfinity, bool isNaN) - { - if ((isPositiveInfinity && text != "Infinity") || - (isNegativeInfinity && text != "-Infinity") || - (isNaN && text != "NaN")) - { - throw new InvalidProtocolBufferException($"Invalid numeric value: {text}"); - } - } - - private static void MergeTimestamp(IMessage message, JsonToken token) - { - if (token.Type != JsonToken.TokenType.StringValue) - { - throw new InvalidProtocolBufferException("Expected string value for Timestamp"); - } - var match = TimestampRegex.Match(token.StringValue); - if (!match.Success) - { - throw new InvalidProtocolBufferException($"Invalid Timestamp value: {token.StringValue}"); - } - var dateTime = match.Groups["datetime"].Value; - var subseconds = match.Groups["subseconds"].Value; - var offset = match.Groups["offset"].Value; - - try - { - DateTime parsed = DateTime.ParseExact( - dateTime, - "yyyy-MM-dd'T'HH:mm:ss", - CultureInfo.InvariantCulture, - DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal); - // TODO: It would be nice not to have to create all these objects... easy to optimize later though. - Timestamp timestamp = Timestamp.FromDateTime(parsed); - int nanosToAdd = 0; - if (subseconds != "") - { - // This should always work, as we've got 1-9 digits. - int parsedFraction = int.Parse(subseconds.Substring(1), CultureInfo.InvariantCulture); - nanosToAdd = parsedFraction * SubsecondScalingFactors[subseconds.Length]; - } - int secondsToAdd = 0; - if (offset != "Z") - { - // This is the amount we need to *subtract* from the local time to get to UTC - hence - => +1 and vice versa. - int sign = offset[0] == '-' ? 1 : -1; - int hours = int.Parse(offset.Substring(1, 2), CultureInfo.InvariantCulture); - int minutes = int.Parse(offset.Substring(4, 2)); - int totalMinutes = hours * 60 + minutes; - if (totalMinutes > 18 * 60) - { - throw new InvalidProtocolBufferException("Invalid Timestamp value: " + token.StringValue); - } - if (totalMinutes == 0 && sign == 1) - { - // This is an offset of -00:00, which means "unknown local offset". It makes no sense for a timestamp. - throw new InvalidProtocolBufferException("Invalid Timestamp value: " + token.StringValue); - } - // We need to *subtract* the offset from local time to get UTC. - secondsToAdd = sign * totalMinutes * 60; - } - // Ensure we've got the right signs. Currently unnecessary, but easy to do. - if (secondsToAdd < 0 && nanosToAdd > 0) - { - secondsToAdd++; - nanosToAdd = nanosToAdd - Duration.NanosecondsPerSecond; - } - if (secondsToAdd != 0 || nanosToAdd != 0) - { - timestamp += new Duration { Nanos = nanosToAdd, Seconds = secondsToAdd }; - // The resulting timestamp after offset change would be out of our expected range. Currently the Timestamp message doesn't validate this - // anywhere, but we shouldn't parse it. - if (timestamp.Seconds < Timestamp.UnixSecondsAtBclMinValue || timestamp.Seconds > Timestamp.UnixSecondsAtBclMaxValue) - { - throw new InvalidProtocolBufferException("Invalid Timestamp value: " + token.StringValue); - } - } - message.Descriptor.Fields[Timestamp.SecondsFieldNumber].Accessor.SetValue(message, timestamp.Seconds); - message.Descriptor.Fields[Timestamp.NanosFieldNumber].Accessor.SetValue(message, timestamp.Nanos); - } - catch (FormatException) - { - throw new InvalidProtocolBufferException("Invalid Timestamp value: " + token.StringValue); - } - } - - private static void MergeDuration(IMessage message, JsonToken token) - { - if (token.Type != JsonToken.TokenType.StringValue) - { - throw new InvalidProtocolBufferException("Expected string value for Duration"); - } - var match = DurationRegex.Match(token.StringValue); - if (!match.Success) - { - throw new InvalidProtocolBufferException("Invalid Duration value: " + token.StringValue); - } - var sign = match.Groups["sign"].Value; - var secondsText = match.Groups["int"].Value; - // Prohibit leading insignficant zeroes - if (secondsText[0] == '0' && secondsText.Length > 1) - { - throw new InvalidProtocolBufferException("Invalid Duration value: " + token.StringValue); - } - var subseconds = match.Groups["subseconds"].Value; - var multiplier = sign == "-" ? -1 : 1; - - try - { - long seconds = long.Parse(secondsText, CultureInfo.InvariantCulture) * multiplier; - int nanos = 0; - if (subseconds != "") - { - // This should always work, as we've got 1-9 digits. - int parsedFraction = int.Parse(subseconds.Substring(1)); - nanos = parsedFraction * SubsecondScalingFactors[subseconds.Length] * multiplier; - } - if (!Duration.IsNormalized(seconds, nanos)) - { - throw new InvalidProtocolBufferException($"Invalid Duration value: {token.StringValue}"); - } - message.Descriptor.Fields[Duration.SecondsFieldNumber].Accessor.SetValue(message, seconds); - message.Descriptor.Fields[Duration.NanosFieldNumber].Accessor.SetValue(message, nanos); - } - catch (FormatException) - { - throw new InvalidProtocolBufferException($"Invalid Duration value: {token.StringValue}"); - } - } - - private static void MergeFieldMask(IMessage message, JsonToken token) - { - if (token.Type != JsonToken.TokenType.StringValue) - { - throw new InvalidProtocolBufferException("Expected string value for FieldMask"); - } - // TODO: Do we *want* to remove empty entries? Probably okay to treat "" as "no paths", but "foo,,bar"? - string[] jsonPaths = token.StringValue.Split(FieldMaskPathSeparators, StringSplitOptions.RemoveEmptyEntries); - IList messagePaths = (IList) message.Descriptor.Fields[FieldMask.PathsFieldNumber].Accessor.GetValue(message); - foreach (var path in jsonPaths) - { - messagePaths.Add(ToSnakeCase(path)); - } - } - - // Ported from src/google/protobuf/util/internal/utility.cc - private static string ToSnakeCase(string text) - { - var builder = new StringBuilder(text.Length * 2); - // Note: this is probably unnecessary now, but currently retained to be as close as possible to the - // C++, whilst still throwing an exception on underscores. - bool wasNotUnderscore = false; // Initialize to false for case 1 (below) - bool wasNotCap = false; - - for (int i = 0; i < text.Length; i++) - { - char c = text[i]; - if (c >= 'A' && c <= 'Z') // ascii_isupper - { - // Consider when the current character B is capitalized: - // 1) At beginning of input: "B..." => "b..." - // (e.g. "Biscuit" => "biscuit") - // 2) Following a lowercase: "...aB..." => "...a_b..." - // (e.g. "gBike" => "g_bike") - // 3) At the end of input: "...AB" => "...ab" - // (e.g. "GoogleLAB" => "google_lab") - // 4) Followed by a lowercase: "...ABc..." => "...a_bc..." - // (e.g. "GBike" => "g_bike") - if (wasNotUnderscore && // case 1 out - (wasNotCap || // case 2 in, case 3 out - (i + 1 < text.Length && // case 3 out - (text[i + 1] >= 'a' && text[i + 1] <= 'z')))) // ascii_islower(text[i + 1]) - { // case 4 in - // We add an underscore for case 2 and case 4. - builder.Append('_'); - } - // ascii_tolower, but we already know that c *is* an upper case ASCII character... - builder.Append((char) (c + 'a' - 'A')); - wasNotUnderscore = true; - wasNotCap = false; - } - else - { - builder.Append(c); - if (c == '_') - { - throw new InvalidProtocolBufferException($"Invalid field mask: {text}"); - } - wasNotUnderscore = true; - wasNotCap = true; - } - } - return builder.ToString(); - } - #endregion - - /// - /// Settings controlling JSON parsing. - /// - public sealed class Settings - { - /// - /// Default settings, as used by . This has the same default - /// recursion limit as , and an empty type registry. - /// - public static Settings Default { get; } - - // Workaround for the Mono compiler complaining about XML comments not being on - // valid language elements. - static Settings() - { - Default = new Settings(CodedInputStream.DefaultRecursionLimit); - } - - /// - /// The maximum depth of messages to parse. Note that this limit only applies to parsing - /// messages, not collections - so a message within a collection within a message only counts as - /// depth 2, not 3. - /// - public int RecursionLimit { get; } - - /// - /// The type registry used to parse messages. - /// - public TypeRegistry TypeRegistry { get; } - - /// - /// Whether the parser should ignore unknown fields (true) or throw an exception when - /// they are encountered (false). - /// - public bool IgnoreUnknownFields { get; } - - private Settings(int recursionLimit, TypeRegistry typeRegistry, bool ignoreUnknownFields) - { - RecursionLimit = recursionLimit; - TypeRegistry = ProtoPreconditions.CheckNotNull(typeRegistry, nameof(typeRegistry)); - IgnoreUnknownFields = ignoreUnknownFields; - } - - /// - /// Creates a new object with the specified recursion limit. - /// - /// The maximum depth of messages to parse - public Settings(int recursionLimit) : this(recursionLimit, TypeRegistry.Empty) - { - } - - /// - /// Creates a new object with the specified recursion limit and type registry. - /// - /// The maximum depth of messages to parse - /// The type registry used to parse messages - public Settings(int recursionLimit, TypeRegistry typeRegistry) : this(recursionLimit, typeRegistry, false) - { - } - - /// - /// Creates a new object set to either ignore unknown fields, or throw an exception - /// when unknown fields are encountered. - /// - /// true if unknown fields should be ignored when parsing; false to throw an exception. - public Settings WithIgnoreUnknownFields(bool ignoreUnknownFields) => - new Settings(RecursionLimit, TypeRegistry, ignoreUnknownFields); - - /// - /// Creates a new object based on this one, but with the specified recursion limit. - /// - /// The new recursion limit. - public Settings WithRecursionLimit(int recursionLimit) => - new Settings(recursionLimit, TypeRegistry, IgnoreUnknownFields); - - /// - /// Creates a new object based on this one, but with the specified type registry. - /// - /// The new type registry. Must not be null. - public Settings WithTypeRegistry(TypeRegistry typeRegistry) => - new Settings( - RecursionLimit, - ProtoPreconditions.CheckNotNull(typeRegistry, nameof(typeRegistry)), - IgnoreUnknownFields); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/JsonToken.cs b/lib/protobuf/csharp/src/Google.Protobuf/JsonToken.cs deleted file mode 100644 index 6c0138c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/JsonToken.cs +++ /dev/null @@ -1,166 +0,0 @@ -#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 -{ - internal sealed class JsonToken : IEquatable - { - // Tokens with no value can be reused. - private static readonly JsonToken _true = new JsonToken(TokenType.True); - private static readonly JsonToken _false = new JsonToken(TokenType.False); - private static readonly JsonToken _null = new JsonToken(TokenType.Null); - private static readonly JsonToken startObject = new JsonToken(TokenType.StartObject); - private static readonly JsonToken endObject = new JsonToken(TokenType.EndObject); - private static readonly JsonToken startArray = new JsonToken(TokenType.StartArray); - private static readonly JsonToken endArray = new JsonToken(TokenType.EndArray); - private static readonly JsonToken endDocument = new JsonToken(TokenType.EndDocument); - - internal static JsonToken Null { get { return _null; } } - internal static JsonToken False { get { return _false; } } - internal static JsonToken True { get { return _true; } } - internal static JsonToken StartObject{ get { return startObject; } } - internal static JsonToken EndObject { get { return endObject; } } - internal static JsonToken StartArray { get { return startArray; } } - internal static JsonToken EndArray { get { return endArray; } } - internal static JsonToken EndDocument { get { return endDocument; } } - - internal static JsonToken Name(string name) - { - return new JsonToken(TokenType.Name, stringValue: name); - } - - internal static JsonToken Value(string value) - { - return new JsonToken(TokenType.StringValue, stringValue: value); - } - - internal static JsonToken Value(double value) - { - return new JsonToken(TokenType.Number, numberValue: value); - } - - internal enum TokenType - { - Null, - False, - True, - StringValue, - Number, - Name, - StartObject, - EndObject, - StartArray, - EndArray, - EndDocument - } - - // A value is a string, number, array, object, null, true or false - // Arrays and objects have start/end - // A document consists of a value - // Objects are name/value sequences. - - private readonly TokenType type; - private readonly string stringValue; - private readonly double numberValue; - - internal TokenType Type { get { return type; } } - internal string StringValue { get { return stringValue; } } - internal double NumberValue { get { return numberValue; } } - - private JsonToken(TokenType type, string stringValue = null, double numberValue = 0) - { - this.type = type; - this.stringValue = stringValue; - this.numberValue = numberValue; - } - - public override bool Equals(object obj) - { - return Equals(obj as JsonToken); - } - - public override int GetHashCode() - { - unchecked - { - int hash = 17; - hash = hash * 31 + (int) type; - hash = hash * 31 + stringValue == null ? 0 : stringValue.GetHashCode(); - hash = hash * 31 + numberValue.GetHashCode(); - return hash; - } - } - - public override string ToString() - { - switch (type) - { - case TokenType.Null: - return "null"; - case TokenType.True: - return "true"; - case TokenType.False: - return "false"; - case TokenType.Name: - return "name (" + stringValue + ")"; - case TokenType.StringValue: - return "value (" + stringValue + ")"; - case TokenType.Number: - return "number (" + numberValue + ")"; - case TokenType.StartObject: - return "start-object"; - case TokenType.EndObject: - return "end-object"; - case TokenType.StartArray: - return "start-array"; - case TokenType.EndArray: - return "end-array"; - case TokenType.EndDocument: - return "end-document"; - default: - throw new InvalidOperationException("Token is of unknown type " + type); - } - } - - public bool Equals(JsonToken other) - { - if (ReferenceEquals(other, null)) - { - return false; - } - // Note use of other.numberValue.Equals rather than ==, so that NaN compares appropriately. - return other.type == type && other.stringValue == stringValue && other.numberValue.Equals(numberValue); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/JsonTokenizer.cs b/lib/protobuf/csharp/src/Google.Protobuf/JsonTokenizer.cs deleted file mode 100644 index 4725e7c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/JsonTokenizer.cs +++ /dev/null @@ -1,766 +0,0 @@ -#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.Globalization; -using System.IO; -using System.Text; - -namespace Google.Protobuf -{ - /// - /// Simple but strict JSON tokenizer, rigidly following RFC 7159. - /// - /// - /// - /// This tokenizer is stateful, and only returns "useful" tokens - names, values etc. - /// It does not create tokens for the separator between names and values, or for the comma - /// between values. It validates the token stream as it goes - so callers can assume that the - /// tokens it produces are appropriate. For example, it would never produce "start object, end array." - /// - /// Implementation details: the base class handles single token push-back and - /// Not thread-safe. - /// - internal abstract class JsonTokenizer - { - private JsonToken bufferedToken; - - /// - /// Creates a tokenizer that reads from the given text reader. - /// - internal static JsonTokenizer FromTextReader(TextReader reader) - { - return new JsonTextTokenizer(reader); - } - - /// - /// Creates a tokenizer that first replays the given list of tokens, then continues reading - /// from another tokenizer. Note that if the returned tokenizer is "pushed back", that does not push back - /// on the continuation tokenizer, or vice versa. Care should be taken when using this method - it was - /// created for the sake of Any parsing. - /// - internal static JsonTokenizer FromReplayedTokens(IList tokens, JsonTokenizer continuation) - { - return new JsonReplayTokenizer(tokens, continuation); - } - - /// - /// Returns the depth of the stack, purely in objects (not collections). - /// Informally, this is the number of remaining unclosed '{' characters we have. - /// - internal int ObjectDepth { get; private set; } - - // TODO: Why do we allow a different token to be pushed back? It might be better to always remember the previous - // token returned, and allow a parameterless Rewind() method (which could only be called once, just like the current PushBack). - internal void PushBack(JsonToken token) - { - if (bufferedToken != null) - { - throw new InvalidOperationException("Can't push back twice"); - } - bufferedToken = token; - if (token.Type == JsonToken.TokenType.StartObject) - { - ObjectDepth--; - } - else if (token.Type == JsonToken.TokenType.EndObject) - { - ObjectDepth++; - } - } - - /// - /// Returns the next JSON token in the stream. An EndDocument token is returned to indicate the end of the stream, - /// after which point Next() should not be called again. - /// - /// This implementation provides single-token buffering, and calls if there is no buffered token. - /// The next token in the stream. This is never null. - /// This method is called after an EndDocument token has been returned - /// The input text does not comply with RFC 7159 - internal JsonToken Next() - { - JsonToken tokenToReturn; - if (bufferedToken != null) - { - tokenToReturn = bufferedToken; - bufferedToken = null; - } - else - { - tokenToReturn = NextImpl(); - } - if (tokenToReturn.Type == JsonToken.TokenType.StartObject) - { - ObjectDepth++; - } - else if (tokenToReturn.Type == JsonToken.TokenType.EndObject) - { - ObjectDepth--; - } - return tokenToReturn; - } - - /// - /// Returns the next JSON token in the stream, when requested by the base class. (The method delegates - /// to this if it doesn't have a buffered token.) - /// - /// This method is called after an EndDocument token has been returned - /// The input text does not comply with RFC 7159 - protected abstract JsonToken NextImpl(); - - /// - /// Skips the value we're about to read. This must only be called immediately after reading a property name. - /// If the value is an object or an array, the complete object/array is skipped. - /// - internal void SkipValue() - { - // We'll assume that Next() makes sure that the end objects and end arrays are all valid. - // All we care about is the total nesting depth we need to close. - int depth = 0; - - // do/while rather than while loop so that we read at least one token. - do - { - var token = Next(); - switch (token.Type) - { - case JsonToken.TokenType.EndArray: - case JsonToken.TokenType.EndObject: - depth--; - break; - case JsonToken.TokenType.StartArray: - case JsonToken.TokenType.StartObject: - depth++; - break; - } - } while (depth != 0); - } - - /// - /// Tokenizer which first exhausts a list of tokens, then consults another tokenizer. - /// - private class JsonReplayTokenizer : JsonTokenizer - { - private readonly IList tokens; - private readonly JsonTokenizer nextTokenizer; - private int nextTokenIndex; - - internal JsonReplayTokenizer(IList tokens, JsonTokenizer nextTokenizer) - { - this.tokens = tokens; - this.nextTokenizer = nextTokenizer; - } - - // FIXME: Object depth not maintained... - protected override JsonToken NextImpl() - { - if (nextTokenIndex >= tokens.Count) - { - return nextTokenizer.Next(); - } - return tokens[nextTokenIndex++]; - } - } - - /// - /// Tokenizer which does all the *real* work of parsing JSON. - /// - private sealed class JsonTextTokenizer : JsonTokenizer - { - // The set of states in which a value is valid next token. - private static readonly State ValueStates = State.ArrayStart | State.ArrayAfterComma | State.ObjectAfterColon | State.StartOfDocument; - - private readonly Stack containerStack = new Stack(); - private readonly PushBackReader reader; - private State state; - - internal JsonTextTokenizer(TextReader reader) - { - this.reader = new PushBackReader(reader); - state = State.StartOfDocument; - containerStack.Push(ContainerType.Document); - } - - /// - /// This method essentially just loops through characters skipping whitespace, validating and - /// changing state (e.g. from ObjectBeforeColon to ObjectAfterColon) - /// until it reaches something which will be a genuine token (e.g. a start object, or a value) at which point - /// it returns the token. Although the method is large, it would be relatively hard to break down further... most - /// of it is the large switch statement, which sometimes returns and sometimes doesn't. - /// - protected override JsonToken NextImpl() - { - if (state == State.ReaderExhausted) - { - throw new InvalidOperationException("Next() called after end of document"); - } - while (true) - { - var next = reader.Read(); - if (next == null) - { - ValidateState(State.ExpectedEndOfDocument, "Unexpected end of document in state: "); - state = State.ReaderExhausted; - return JsonToken.EndDocument; - } - switch (next.Value) - { - // Skip whitespace between tokens - case ' ': - case '\t': - case '\r': - case '\n': - break; - case ':': - ValidateState(State.ObjectBeforeColon, "Invalid state to read a colon: "); - state = State.ObjectAfterColon; - break; - case ',': - ValidateState(State.ObjectAfterProperty | State.ArrayAfterValue, "Invalid state to read a comma: "); - state = state == State.ObjectAfterProperty ? State.ObjectAfterComma : State.ArrayAfterComma; - break; - case '"': - string stringValue = ReadString(); - if ((state & (State.ObjectStart | State.ObjectAfterComma)) != 0) - { - state = State.ObjectBeforeColon; - return JsonToken.Name(stringValue); - } - else - { - ValidateAndModifyStateForValue("Invalid state to read a double quote: "); - return JsonToken.Value(stringValue); - } - case '{': - ValidateState(ValueStates, "Invalid state to read an open brace: "); - state = State.ObjectStart; - containerStack.Push(ContainerType.Object); - return JsonToken.StartObject; - case '}': - ValidateState(State.ObjectAfterProperty | State.ObjectStart, "Invalid state to read a close brace: "); - PopContainer(); - return JsonToken.EndObject; - case '[': - ValidateState(ValueStates, "Invalid state to read an open square bracket: "); - state = State.ArrayStart; - containerStack.Push(ContainerType.Array); - return JsonToken.StartArray; - case ']': - ValidateState(State.ArrayAfterValue | State.ArrayStart, "Invalid state to read a close square bracket: "); - PopContainer(); - return JsonToken.EndArray; - case 'n': // Start of null - ConsumeLiteral("null"); - ValidateAndModifyStateForValue("Invalid state to read a null literal: "); - return JsonToken.Null; - case 't': // Start of true - ConsumeLiteral("true"); - ValidateAndModifyStateForValue("Invalid state to read a true literal: "); - return JsonToken.True; - case 'f': // Start of false - ConsumeLiteral("false"); - ValidateAndModifyStateForValue("Invalid state to read a false literal: "); - return JsonToken.False; - case '-': // Start of a number - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - double number = ReadNumber(next.Value); - ValidateAndModifyStateForValue("Invalid state to read a number token: "); - return JsonToken.Value(number); - default: - throw new InvalidJsonException("Invalid first character of token: " + next.Value); - } - } - } - - private void ValidateState(State validStates, string errorPrefix) - { - if ((validStates & state) == 0) - { - throw reader.CreateException(errorPrefix + state); - } - } - - /// - /// Reads a string token. It is assumed that the opening " has already been read. - /// - private string ReadString() - { - var value = new StringBuilder(); - bool haveHighSurrogate = false; - while (true) - { - char c = reader.ReadOrFail("Unexpected end of text while reading string"); - if (c < ' ') - { - throw reader.CreateException(string.Format(CultureInfo.InvariantCulture, "Invalid character in string literal: U+{0:x4}", (int) c)); - } - if (c == '"') - { - if (haveHighSurrogate) - { - throw reader.CreateException("Invalid use of surrogate pair code units"); - } - return value.ToString(); - } - if (c == '\\') - { - c = ReadEscapedCharacter(); - } - // TODO: Consider only allowing surrogate pairs that are either both escaped, - // or both not escaped. It would be a very odd text stream that contained a "lone" high surrogate - // followed by an escaped low surrogate or vice versa... and that couldn't even be represented in UTF-8. - if (haveHighSurrogate != char.IsLowSurrogate(c)) - { - throw reader.CreateException("Invalid use of surrogate pair code units"); - } - haveHighSurrogate = char.IsHighSurrogate(c); - value.Append(c); - } - } - - /// - /// Reads an escaped character. It is assumed that the leading backslash has already been read. - /// - private char ReadEscapedCharacter() - { - char c = reader.ReadOrFail("Unexpected end of text while reading character escape sequence"); - switch (c) - { - case 'n': - return '\n'; - case '\\': - return '\\'; - case 'b': - return '\b'; - case 'f': - return '\f'; - case 'r': - return '\r'; - case 't': - return '\t'; - case '"': - return '"'; - case '/': - return '/'; - case 'u': - return ReadUnicodeEscape(); - default: - throw reader.CreateException(string.Format(CultureInfo.InvariantCulture, "Invalid character in character escape sequence: U+{0:x4}", (int) c)); - } - } - - /// - /// Reads an escaped Unicode 4-nybble hex sequence. It is assumed that the leading \u has already been read. - /// - private char ReadUnicodeEscape() - { - int result = 0; - for (int i = 0; i < 4; i++) - { - char c = reader.ReadOrFail("Unexpected end of text while reading Unicode escape sequence"); - int nybble; - if (c >= '0' && c <= '9') - { - nybble = c - '0'; - } - else if (c >= 'a' && c <= 'f') - { - nybble = c - 'a' + 10; - } - else if (c >= 'A' && c <= 'F') - { - nybble = c - 'A' + 10; - } - else - { - throw reader.CreateException(string.Format(CultureInfo.InvariantCulture, "Invalid character in character escape sequence: U+{0:x4}", (int) c)); - } - result = (result << 4) + nybble; - } - return (char) result; - } - - /// - /// Consumes a text-only literal, throwing an exception if the read text doesn't match it. - /// It is assumed that the first letter of the literal has already been read. - /// - private void ConsumeLiteral(string text) - { - for (int i = 1; i < text.Length; i++) - { - char? next = reader.Read(); - if (next == null) - { - throw reader.CreateException("Unexpected end of text while reading literal token " + text); - } - if (next.Value != text[i]) - { - throw reader.CreateException("Unexpected character while reading literal token " + text); - } - } - } - - private double ReadNumber(char initialCharacter) - { - StringBuilder builder = new StringBuilder(); - if (initialCharacter == '-') - { - builder.Append("-"); - } - else - { - reader.PushBack(initialCharacter); - } - // Each method returns the character it read that doesn't belong in that part, - // so we know what to do next, including pushing the character back at the end. - // null is returned for "end of text". - char? next = ReadInt(builder); - if (next == '.') - { - next = ReadFrac(builder); - } - if (next == 'e' || next == 'E') - { - next = ReadExp(builder); - } - // If we read a character which wasn't part of the number, push it back so we can read it again - // to parse the next token. - if (next != null) - { - reader.PushBack(next.Value); - } - - // TODO: What exception should we throw if the value can't be represented as a double? - try - { - return double.Parse(builder.ToString(), - NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent, - CultureInfo.InvariantCulture); - } - catch (OverflowException) - { - throw reader.CreateException("Numeric value out of range: " + builder); - } - } - - private char? ReadInt(StringBuilder builder) - { - char first = reader.ReadOrFail("Invalid numeric literal"); - if (first < '0' || first > '9') - { - throw reader.CreateException("Invalid numeric literal"); - } - builder.Append(first); - int digitCount; - char? next = ConsumeDigits(builder, out digitCount); - if (first == '0' && digitCount != 0) - { - throw reader.CreateException("Invalid numeric literal: leading 0 for non-zero value."); - } - return next; - } - - private char? ReadFrac(StringBuilder builder) - { - builder.Append('.'); // Already consumed this - int digitCount; - char? next = ConsumeDigits(builder, out digitCount); - if (digitCount == 0) - { - throw reader.CreateException("Invalid numeric literal: fraction with no trailing digits"); - } - return next; - } - - private char? ReadExp(StringBuilder builder) - { - builder.Append('E'); // Already consumed this (or 'e') - char? next = reader.Read(); - if (next == null) - { - throw reader.CreateException("Invalid numeric literal: exponent with no trailing digits"); - } - if (next == '-' || next == '+') - { - builder.Append(next.Value); - } - else - { - reader.PushBack(next.Value); - } - int digitCount; - next = ConsumeDigits(builder, out digitCount); - if (digitCount == 0) - { - throw reader.CreateException("Invalid numeric literal: exponent without value"); - } - return next; - } - - private char? ConsumeDigits(StringBuilder builder, out int count) - { - count = 0; - while (true) - { - char? next = reader.Read(); - if (next == null || next.Value < '0' || next.Value > '9') - { - return next; - } - count++; - builder.Append(next.Value); - } - } - - /// - /// Validates that we're in a valid state to read a value (using the given error prefix if necessary) - /// and changes the state to the appropriate one, e.g. ObjectAfterColon to ObjectAfterProperty. - /// - private void ValidateAndModifyStateForValue(string errorPrefix) - { - ValidateState(ValueStates, errorPrefix); - switch (state) - { - case State.StartOfDocument: - state = State.ExpectedEndOfDocument; - return; - case State.ObjectAfterColon: - state = State.ObjectAfterProperty; - return; - case State.ArrayStart: - case State.ArrayAfterComma: - state = State.ArrayAfterValue; - return; - default: - throw new InvalidOperationException("ValidateAndModifyStateForValue does not handle all value states (and should)"); - } - } - - /// - /// Pops the top-most container, and sets the state to the appropriate one for the end of a value - /// in the parent container. - /// - private void PopContainer() - { - containerStack.Pop(); - var parent = containerStack.Peek(); - switch (parent) - { - case ContainerType.Object: - state = State.ObjectAfterProperty; - break; - case ContainerType.Array: - state = State.ArrayAfterValue; - break; - case ContainerType.Document: - state = State.ExpectedEndOfDocument; - break; - default: - throw new InvalidOperationException("Unexpected container type: " + parent); - } - } - - private enum ContainerType - { - Document, Object, Array - } - - /// - /// Possible states of the tokenizer. - /// - /// - /// This is a flags enum purely so we can simply and efficiently represent a set of valid states - /// for checking. - /// - /// Each is documented with an example, - /// where ^ represents the current position within the text stream. The examples all use string values, - /// but could be any value, including nested objects/arrays. - /// The complete state of the tokenizer also includes a stack to indicate the contexts (arrays/objects). - /// Any additional notional state of "AfterValue" indicates that a value has been completed, at which - /// point there's an immediate transition to ExpectedEndOfDocument, ObjectAfterProperty or ArrayAfterValue. - /// - /// - /// These states were derived manually by reading RFC 7159 carefully. - /// - /// - [Flags] - private enum State - { - /// - /// ^ { "foo": "bar" } - /// Before the value in a document. Next states: ObjectStart, ArrayStart, "AfterValue" - /// - StartOfDocument = 1 << 0, - /// - /// { "foo": "bar" } ^ - /// After the value in a document. Next states: ReaderExhausted - /// - ExpectedEndOfDocument = 1 << 1, - /// - /// { "foo": "bar" } ^ (and already read to the end of the reader) - /// Terminal state. - /// - ReaderExhausted = 1 << 2, - /// - /// { ^ "foo": "bar" } - /// Before the *first* property in an object. - /// Next states: - /// "AfterValue" (empty object) - /// ObjectBeforeColon (read a name) - /// - ObjectStart = 1 << 3, - /// - /// { "foo" ^ : "bar", "x": "y" } - /// Next state: ObjectAfterColon - /// - ObjectBeforeColon = 1 << 4, - /// - /// { "foo" : ^ "bar", "x": "y" } - /// Before any property other than the first in an object. - /// (Equivalently: after any property in an object) - /// Next states: - /// "AfterValue" (value is simple) - /// ObjectStart (value is object) - /// ArrayStart (value is array) - /// - ObjectAfterColon = 1 << 5, - /// - /// { "foo" : "bar" ^ , "x" : "y" } - /// At the end of a property, so expecting either a comma or end-of-object - /// Next states: ObjectAfterComma or "AfterValue" - /// - ObjectAfterProperty = 1 << 6, - /// - /// { "foo":"bar", ^ "x":"y" } - /// Read the comma after the previous property, so expecting another property. - /// This is like ObjectStart, but closing brace isn't valid here - /// Next state: ObjectBeforeColon. - /// - ObjectAfterComma = 1 << 7, - /// - /// [ ^ "foo", "bar" ] - /// Before the *first* value in an array. - /// Next states: - /// "AfterValue" (read a value) - /// "AfterValue" (end of array; will pop stack) - /// - ArrayStart = 1 << 8, - /// - /// [ "foo" ^ , "bar" ] - /// After any value in an array, so expecting either a comma or end-of-array - /// Next states: ArrayAfterComma or "AfterValue" - /// - ArrayAfterValue = 1 << 9, - /// - /// [ "foo", ^ "bar" ] - /// After a comma in an array, so there *must* be another value (simple or complex). - /// Next states: "AfterValue" (simple value), StartObject, StartArray - /// - ArrayAfterComma = 1 << 10 - } - - /// - /// Wrapper around a text reader allowing small amounts of buffering and location handling. - /// - private class PushBackReader - { - // TODO: Add locations for errors etc. - - private readonly TextReader reader; - - internal PushBackReader(TextReader reader) - { - // TODO: Wrap the reader in a BufferedReader? - this.reader = reader; - } - - /// - /// The buffered next character, if we have one. - /// - private char? nextChar; - - /// - /// Returns the next character in the stream, or null if we have reached the end. - /// - /// - internal char? Read() - { - if (nextChar != null) - { - char? tmp = nextChar; - nextChar = null; - return tmp; - } - int next = reader.Read(); - return next == -1 ? null : (char?) next; - } - - internal char ReadOrFail(string messageOnFailure) - { - char? next = Read(); - if (next == null) - { - throw CreateException(messageOnFailure); - } - return next.Value; - } - - internal void PushBack(char c) - { - if (nextChar != null) - { - throw new InvalidOperationException("Cannot push back when already buffering a character"); - } - nextChar = c; - } - - /// - /// Creates a new exception appropriate for the current state of the reader. - /// - internal InvalidJsonException CreateException(string message) - { - // TODO: Keep track of and use the location. - return new InvalidJsonException(message); - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/LimitedInputStream.cs b/lib/protobuf/csharp/src/Google.Protobuf/LimitedInputStream.cs deleted file mode 100644 index 50ead9c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/LimitedInputStream.cs +++ /dev/null @@ -1,110 +0,0 @@ -#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.IO; - -namespace Google.Protobuf -{ - /// - /// Stream implementation which proxies another stream, only allowing a certain amount - /// of data to be read. Note that this is only used to read delimited streams, so it - /// doesn't attempt to implement everything. - /// - internal sealed class LimitedInputStream : Stream - { - private readonly Stream proxied; - private int bytesLeft; - - internal LimitedInputStream(Stream proxied, int size) - { - this.proxied = proxied; - bytesLeft = size; - } - - public override bool CanRead - { - get { return true; } - } - - public override bool CanSeek - { - get { return false; } - } - - public override bool CanWrite - { - get { return false; } - } - - public override void Flush() - { - } - - public override long Length - { - get { throw new NotSupportedException(); } - } - - public override long Position - { - get { throw new NotSupportedException(); } - set { throw new NotSupportedException(); } - } - - public override int Read(byte[] buffer, int offset, int count) - { - if (bytesLeft > 0) - { - int bytesRead = proxied.Read(buffer, offset, Math.Min(bytesLeft, count)); - bytesLeft -= bytesRead; - return bytesRead; - } - return 0; - } - - public override long Seek(long offset, SeekOrigin origin) - { - throw new NotSupportedException(); - } - - public override void SetLength(long value) - { - throw new NotSupportedException(); - } - - public override void Write(byte[] buffer, int offset, int count) - { - throw new NotSupportedException(); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/MessageExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/MessageExtensions.cs deleted file mode 100644 index 5ca772f..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/MessageExtensions.cs +++ /dev/null @@ -1,247 +0,0 @@ -#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 Google.Protobuf.Reflection; -using System.Collections; -using System.IO; -using System.Linq; - -namespace Google.Protobuf -{ - /// - /// Extension methods on and . - /// - public static class MessageExtensions - { - /// - /// Merges data from the given byte array into an existing message. - /// - /// The message to merge the data into. - /// The data to merge, which must be protobuf-encoded binary data. - public static void MergeFrom(this IMessage message, byte[] data) => - MergeFrom(message, data, false, null); - - /// - /// Merges data from the given byte array slice into an existing message. - /// - /// The message to merge the data into. - /// The data containing the slice to merge, which must be protobuf-encoded binary data. - /// The offset of the slice to merge. - /// The length of the slice to merge. - public static void MergeFrom(this IMessage message, byte[] data, int offset, int length) => - MergeFrom(message, data, offset, length, false, null); - - /// - /// Merges data from the given byte string into an existing message. - /// - /// The message to merge the data into. - /// The data to merge, which must be protobuf-encoded binary data. - public static void MergeFrom(this IMessage message, ByteString data) => - MergeFrom(message, data, false, null); - - /// - /// Merges data from the given stream into an existing message. - /// - /// The message to merge the data into. - /// Stream containing the data to merge, which must be protobuf-encoded binary data. - public static void MergeFrom(this IMessage message, Stream input) => - MergeFrom(message, input, false, null); - - /// - /// Merges length-delimited data from the given stream into an existing message. - /// - /// - /// The stream is expected to contain a length and then the data. Only the amount of data - /// specified by the length will be consumed. - /// - /// The message to merge the data into. - /// Stream containing the data to merge, which must be protobuf-encoded binary data. - public static void MergeDelimitedFrom(this IMessage message, Stream input) => - MergeDelimitedFrom(message, input, false, null); - - /// - /// Converts the given message into a byte array in protobuf encoding. - /// - /// The message to convert. - /// The message data as a byte array. - public static byte[] ToByteArray(this IMessage message) - { - ProtoPreconditions.CheckNotNull(message, "message"); - byte[] result = new byte[message.CalculateSize()]; - CodedOutputStream output = new CodedOutputStream(result); - message.WriteTo(output); - output.CheckNoSpaceLeft(); - return result; - } - - /// - /// Writes the given message data to the given stream in protobuf encoding. - /// - /// The message to write to the stream. - /// The stream to write to. - public static void WriteTo(this IMessage message, Stream output) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(output, "output"); - CodedOutputStream codedOutput = new CodedOutputStream(output); - message.WriteTo(codedOutput); - codedOutput.Flush(); - } - - /// - /// Writes the length and then data of the given message to a stream. - /// - /// The message to write. - /// The output stream to write to. - public static void WriteDelimitedTo(this IMessage message, Stream output) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(output, "output"); - CodedOutputStream codedOutput = new CodedOutputStream(output); - codedOutput.WriteRawVarint32((uint)message.CalculateSize()); - message.WriteTo(codedOutput); - codedOutput.Flush(); - } - - /// - /// Converts the given message into a byte string in protobuf encoding. - /// - /// The message to convert. - /// The message data as a byte string. - public static ByteString ToByteString(this IMessage message) - { - ProtoPreconditions.CheckNotNull(message, "message"); - return ByteString.AttachBytes(message.ToByteArray()); - } - - /// - /// Checks if all required fields in a message have values set. For proto3 messages, this returns true - /// - public static bool IsInitialized(this IMessage message) - { - if (message.Descriptor.File.Proto.Syntax != "proto2") - { - return true; - } - - return message.Descriptor - .Fields - .InDeclarationOrder() - .All(f => - { - if (f.IsMap) - { - var map = (IDictionary)f.Accessor.GetValue(message); - return map.Values.OfType().All(IsInitialized); - } - else if (f.IsRepeated && f.FieldType == FieldType.Message || f.FieldType == FieldType.Group) - { - var enumerable = (IEnumerable)f.Accessor.GetValue(message); - return enumerable.Cast().All(IsInitialized); - } - else if (f.FieldType == FieldType.Message || f.FieldType == FieldType.Group) - { - if (f.Accessor.HasValue(message)) - { - return ((IMessage)f.Accessor.GetValue(message)).IsInitialized(); - } - else - { - return !f.IsRequired; - } - } - else if (f.IsRequired) - { - return f.Accessor.HasValue(message); - } - else - { - return true; - } - }); - } - - // Implementations allowing unknown fields to be discarded. - internal static void MergeFrom(this IMessage message, byte[] data, bool discardUnknownFields, ExtensionRegistry registry) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(data, "data"); - CodedInputStream input = new CodedInputStream(data); - input.DiscardUnknownFields = discardUnknownFields; - input.ExtensionRegistry = registry; - message.MergeFrom(input); - input.CheckReadEndOfStreamTag(); - } - - internal static void MergeFrom(this IMessage message, byte[] data, int offset, int length, bool discardUnknownFields, ExtensionRegistry registry) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(data, "data"); - CodedInputStream input = new CodedInputStream(data, offset, length); - input.DiscardUnknownFields = discardUnknownFields; - input.ExtensionRegistry = registry; - message.MergeFrom(input); - input.CheckReadEndOfStreamTag(); - } - - internal static void MergeFrom(this IMessage message, ByteString data, bool discardUnknownFields, ExtensionRegistry registry) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(data, "data"); - CodedInputStream input = data.CreateCodedInput(); - input.DiscardUnknownFields = discardUnknownFields; - input.ExtensionRegistry = registry; - message.MergeFrom(input); - input.CheckReadEndOfStreamTag(); - } - - internal static void MergeFrom(this IMessage message, Stream input, bool discardUnknownFields, ExtensionRegistry registry) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(input, "input"); - CodedInputStream codedInput = new CodedInputStream(input); - codedInput.DiscardUnknownFields = discardUnknownFields; - codedInput.ExtensionRegistry = registry; - message.MergeFrom(codedInput); - codedInput.CheckReadEndOfStreamTag(); - } - - internal static void MergeDelimitedFrom(this IMessage message, Stream input, bool discardUnknownFields, ExtensionRegistry registry) - { - ProtoPreconditions.CheckNotNull(message, "message"); - ProtoPreconditions.CheckNotNull(input, "input"); - int size = (int) CodedInputStream.ReadRawVarint32(input); - Stream limitedStream = new LimitedInputStream(input, size); - MergeFrom(message, limitedStream, discardUnknownFields, registry); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/MessageParser.cs b/lib/protobuf/csharp/src/Google.Protobuf/MessageParser.cs deleted file mode 100644 index 76a350c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/MessageParser.cs +++ /dev/null @@ -1,360 +0,0 @@ -#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.IO; - -namespace Google.Protobuf -{ - /// - /// A general message parser, typically used by reflection-based code as all the methods - /// return simple . - /// - public class MessageParser - { - private Func factory; - // TODO: When we use a C# 7.1 compiler, make this private protected. - internal bool DiscardUnknownFields { get; } - - internal ExtensionRegistry Extensions { get; } - - internal MessageParser(Func factory, bool discardUnknownFields, ExtensionRegistry extensions) - { - this.factory = factory; - DiscardUnknownFields = discardUnknownFields; - Extensions = extensions; - } - - /// - /// Creates a template instance ready for population. - /// - /// An empty message. - internal IMessage CreateTemplate() - { - return factory(); - } - - /// - /// Parses a message from a byte array. - /// - /// The byte array containing the message. Must not be null. - /// The newly parsed message. - public IMessage ParseFrom(byte[] data) - { - IMessage message = factory(); - message.MergeFrom(data, DiscardUnknownFields, Extensions); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a message from a byte array slice. - /// - /// The byte array containing the message. Must not be null. - /// The offset of the slice to parse. - /// The length of the slice to parse. - /// The newly parsed message. - public IMessage ParseFrom(byte[] data, int offset, int length) - { - IMessage message = factory(); - message.MergeFrom(data, offset, length, DiscardUnknownFields, Extensions); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a message from the given byte string. - /// - /// The data to parse. - /// The parsed message. - public IMessage ParseFrom(ByteString data) - { - IMessage message = factory(); - message.MergeFrom(data, DiscardUnknownFields, Extensions); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a message from the given stream. - /// - /// The stream to parse. - /// The parsed message. - public IMessage ParseFrom(Stream input) - { - IMessage message = factory(); - message.MergeFrom(input, DiscardUnknownFields, Extensions); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a length-delimited message from the given stream. - /// - /// - /// The stream is expected to contain a length and then the data. Only the amount of data - /// specified by the length will be consumed. - /// - /// The stream to parse. - /// The parsed message. - public IMessage ParseDelimitedFrom(Stream input) - { - IMessage message = factory(); - message.MergeDelimitedFrom(input, DiscardUnknownFields, Extensions); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a message from the given coded input stream. - /// - /// The stream to parse. - /// The parsed message. - public IMessage ParseFrom(CodedInputStream input) - { - IMessage message = factory(); - MergeFrom(message, input); - CheckMergedRequiredFields(message); - return message; - } - - /// - /// Parses a message from the given JSON. - /// - /// The JSON to parse. - /// The parsed message. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public IMessage ParseJson(string json) - { - IMessage message = factory(); - JsonParser.Default.Merge(message, json); - return message; - } - - // TODO: When we're using a C# 7.1 compiler, make this private protected. - internal void MergeFrom(IMessage message, CodedInputStream codedInput) - { - bool originalDiscard = codedInput.DiscardUnknownFields; - try - { - codedInput.DiscardUnknownFields = DiscardUnknownFields; - message.MergeFrom(codedInput); - } - finally - { - codedInput.DiscardUnknownFields = originalDiscard; - } - } - - internal static void CheckMergedRequiredFields(IMessage message) - { - if (!message.IsInitialized()) - throw new InvalidOperationException("Parsed message does not contain all required fields"); - } - - /// - /// Creates a new message parser which optionally discards unknown fields when parsing. - /// - /// Whether or not to discard unknown fields when parsing. - /// A newly configured message parser. - public MessageParser WithDiscardUnknownFields(bool discardUnknownFields) => - new MessageParser(factory, discardUnknownFields, Extensions); - - /// - /// Creates a new message parser which registers extensions from the specified registry upon creating the message instance - /// - /// The extensions to register - /// A newly configured message parser. - public MessageParser WithExtensionRegistry(ExtensionRegistry registry) => - new MessageParser(factory, DiscardUnknownFields, registry); - } - - /// - /// A parser for a specific message type. - /// - /// - ///

- /// This delegates most behavior to the - /// implementation within the original type, but - /// provides convenient overloads to parse from a variety of sources. - ///

- ///

- /// Most applications will never need to create their own instances of this type; - /// instead, use the static Parser property of a generated message type to obtain a - /// parser for that type. - ///

- ///
- /// The type of message to be parsed. - public sealed class MessageParser : MessageParser where T : IMessage - { - // Implementation note: all the methods here *could* just delegate up to the base class and cast the result. - // The current implementation avoids a virtual method call and a cast, which *may* be significant in some cases. - // Benchmarking work is required to measure the significance - but it's only a few lines of code in any case. - // The API wouldn't change anyway - just the implementation - so this work can be deferred. - private readonly Func factory; - - /// - /// Creates a new parser. - /// - /// - /// The factory method is effectively an optimization over using a generic constraint - /// to require a parameterless constructor: delegates are significantly faster to execute. - /// - /// Function to invoke when a new, empty message is required. - public MessageParser(Func factory) : this(factory, false, null) - { - } - - internal MessageParser(Func factory, bool discardUnknownFields, ExtensionRegistry extensions) : base(() => factory(), discardUnknownFields, extensions) - { - this.factory = factory; - } - - /// - /// Creates a template instance ready for population. - /// - /// An empty message. - internal new T CreateTemplate() - { - return factory(); - } - - /// - /// Parses a message from a byte array. - /// - /// The byte array containing the message. Must not be null. - /// The newly parsed message. - public new T ParseFrom(byte[] data) - { - T message = factory(); - message.MergeFrom(data, DiscardUnknownFields, Extensions); - return message; - } - - /// - /// Parses a message from a byte array slice. - /// - /// The byte array containing the message. Must not be null. - /// The offset of the slice to parse. - /// The length of the slice to parse. - /// The newly parsed message. - public new T ParseFrom(byte[] data, int offset, int length) - { - T message = factory(); - message.MergeFrom(data, offset, length, DiscardUnknownFields, Extensions); - return message; - } - - /// - /// Parses a message from the given byte string. - /// - /// The data to parse. - /// The parsed message. - public new T ParseFrom(ByteString data) - { - T message = factory(); - message.MergeFrom(data, DiscardUnknownFields, Extensions); - return message; - } - - /// - /// Parses a message from the given stream. - /// - /// The stream to parse. - /// The parsed message. - public new T ParseFrom(Stream input) - { - T message = factory(); - message.MergeFrom(input, DiscardUnknownFields, Extensions); - return message; - } - - /// - /// Parses a length-delimited message from the given stream. - /// - /// - /// The stream is expected to contain a length and then the data. Only the amount of data - /// specified by the length will be consumed. - /// - /// The stream to parse. - /// The parsed message. - public new T ParseDelimitedFrom(Stream input) - { - T message = factory(); - message.MergeDelimitedFrom(input, DiscardUnknownFields, Extensions); - return message; - } - - /// - /// Parses a message from the given coded input stream. - /// - /// The stream to parse. - /// The parsed message. - public new T ParseFrom(CodedInputStream input) - { - T message = factory(); - MergeFrom(message, input); - return message; - } - - /// - /// Parses a message from the given JSON. - /// - /// The JSON to parse. - /// The parsed message. - /// The JSON does not comply with RFC 7159 - /// The JSON does not represent a Protocol Buffers message correctly - public new T ParseJson(string json) - { - T message = factory(); - JsonParser.Default.Merge(message, json); - return message; - } - - /// - /// Creates a new message parser which optionally discards unknown fields when parsing. - /// - /// Whether or not to discard unknown fields when parsing. - /// A newly configured message parser. - public new MessageParser WithDiscardUnknownFields(bool discardUnknownFields) => - new MessageParser(factory, discardUnknownFields, Extensions); - - /// - /// Creates a new message parser which registers extensions from the specified registry upon creating the message instance - /// - /// The extensions to register - /// A newly configured message parser. - public new MessageParser WithExtensionRegistry(ExtensionRegistry registry) => - new MessageParser(factory, DiscardUnknownFields, registry); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ObjectIntPair.cs b/lib/protobuf/csharp/src/Google.Protobuf/ObjectIntPair.cs deleted file mode 100644 index b98d93a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ObjectIntPair.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; - -namespace Google.Protobuf -{ - /// - /// Struct used to hold the keys for the fieldByNumber table in DescriptorPool and the keys for the - /// extensionByNumber table in ExtensionRegistry. - /// - internal struct ObjectIntPair : IEquatable> where T : class - { - private readonly int number; - private readonly T obj; - - internal ObjectIntPair(T obj, int number) - { - this.number = number; - this.obj = obj; - } - - public bool Equals(ObjectIntPair other) - { - return obj == other.obj - && number == other.number; - } - - public override bool Equals(object obj) - { - if (obj is ObjectIntPair) - { - return Equals((ObjectIntPair)obj); - } - return false; - } - - public override int GetHashCode() - { - return obj.GetHashCode() * ((1 << 16) - 1) + number; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Properties/AssemblyInfo.cs b/lib/protobuf/csharp/src/Google.Protobuf/Properties/AssemblyInfo.cs deleted file mode 100644 index 9b179bd..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,49 +0,0 @@ -#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.Runtime.CompilerServices; -using System.Security; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. - -#if !NCRUNCH -[assembly: AllowPartiallyTrustedCallers] -#endif - -[assembly: InternalsVisibleTo("Google.Protobuf.Test, PublicKey=" + - "002400000480000094000000060200000024000052534131000400000100010025800fbcfc63a1" + - "7c66b303aae80b03a6beaa176bb6bef883be436f2a1579edd80ce23edf151a1f4ced97af83abcd" + - "981207041fd5b2da3b498346fcfcd94910d52f25537c4a43ce3fbe17dc7d43e6cbdb4d8f1242dc" + - "b6bd9b5906be74da8daa7d7280f97130f318a16c07baf118839b156299a48522f9fae2371c9665" + - "c5ae9cb6")] diff --git a/lib/protobuf/csharp/src/Google.Protobuf/ProtoPreconditions.cs b/lib/protobuf/csharp/src/Google.Protobuf/ProtoPreconditions.cs deleted file mode 100644 index 590a3bb..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/ProtoPreconditions.cs +++ /dev/null @@ -1,79 +0,0 @@ -#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 -{ - /// - /// Helper methods for throwing exceptions when preconditions are not met. - /// - /// - /// This class is used internally and by generated code; it is not particularly - /// expected to be used from application code, although nothing prevents it - /// from being used that way. - /// - public static class ProtoPreconditions - { - /// - /// Throws an ArgumentNullException if the given value is null, otherwise - /// return the value to the caller. - /// - public static T CheckNotNull(T value, string name) where T : class - { - if (value == null) - { - throw new ArgumentNullException(name); - } - return value; - } - - /// - /// Throws an ArgumentNullException if the given value is null, otherwise - /// return the value to the caller. - /// - /// - /// This is equivalent to but without the type parameter - /// constraint. In most cases, the constraint is useful to prevent you from calling CheckNotNull - /// with a value type - but it gets in the way if either you want to use it with a nullable - /// value type, or you want to use it with an unconstrained type parameter. - /// - internal static T CheckNotNullUnconstrained(T value, string name) - { - if (value == null) - { - throw new ArgumentNullException(name); - } - return value; - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/CustomOptions.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/CustomOptions.cs deleted file mode 100644 index 57df2ed..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/CustomOptions.cs +++ /dev/null @@ -1,310 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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.Collections; -using System; -using System.Collections; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -namespace Google.Protobuf.Reflection -{ - /// - /// Container for a set of custom options specified within a message, field etc. - /// - /// - /// - /// This type is publicly immutable, but internally mutable. It is only populated - /// by the descriptor parsing code - by the time any user code is able to see an instance, - /// it will be fully initialized. - /// - /// - /// If an option is requested using the incorrect method, an answer may still be returned: all - /// of the numeric types are represented internally using 64-bit integers, for example. It is up to - /// the caller to ensure that they make the appropriate method call for the option they're interested in. - /// Note that enum options are simply stored as integers, so the value should be fetched using - /// and then cast appropriately. - /// - /// - /// Repeated options are currently not supported. Asking for a single value of an option - /// which was actually repeated will return the last value, except for message types where - /// all the set values are merged together. - /// - /// - public sealed class CustomOptions - { - private static readonly object[] EmptyParameters = new object[0]; - private readonly IDictionary values; - - internal CustomOptions(IDictionary values) - { - this.values = values; - } - - /// - /// Retrieves a Boolean value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetBool(int field, out bool value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a signed 32-bit integer value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetInt32(int field, out int value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a signed 64-bit integer value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetInt64(int field, out long value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves an unsigned 32-bit integer value for the specified option field, - /// assuming a fixed-length representation. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetFixed32(int field, out uint value) => TryGetUInt32(field, out value); - - /// - /// Retrieves an unsigned 64-bit integer value for the specified option field, - /// assuming a fixed-length representation. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetFixed64(int field, out ulong value) => TryGetUInt64(field, out value); - - /// - /// Retrieves a signed 32-bit integer value for the specified option field, - /// assuming a fixed-length representation. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetSFixed32(int field, out int value) => TryGetInt32(field, out value); - - /// - /// Retrieves a signed 64-bit integer value for the specified option field, - /// assuming a fixed-length representation. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetSFixed64(int field, out long value) => TryGetInt64(field, out value); - - /// - /// Retrieves a signed 32-bit integer value for the specified option field, - /// assuming a zigzag encoding. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetSInt32(int field, out int value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a signed 64-bit integer value for the specified option field, - /// assuming a zigzag encoding. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetSInt64(int field, out long value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves an unsigned 32-bit integer value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetUInt32(int field, out uint value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves an unsigned 64-bit integer value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetUInt64(int field, out ulong value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a 32-bit floating point value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetFloat(int field, out float value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a 64-bit floating point value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetDouble(int field, out double value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a string value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetString(int field, out string value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a bytes value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetBytes(int field, out ByteString value) => TryGetPrimitiveValue(field, out value); - - /// - /// Retrieves a message value for the specified option field. - /// - /// The field to fetch the value for. - /// The output variable to populate. - /// true if a suitable value for the field was found; false otherwise. - public bool TryGetMessage(int field, out T value) where T : class, IMessage, new() - { - if (values == null) - { - value = default(T); - return false; - } - - IExtensionValue extensionValue; - if (values.TryGetValue(field, out extensionValue)) - { - if (extensionValue is ExtensionValue) - { - ExtensionValue single = extensionValue as ExtensionValue; - ByteString bytes = single.GetValue().ToByteString(); - value = new T(); - value.MergeFrom(bytes); - return true; - } - else if (extensionValue is RepeatedExtensionValue) - { - RepeatedExtensionValue repeated = extensionValue as RepeatedExtensionValue; - value = repeated.GetValue() - .Select(v => v.ToByteString()) - .Aggregate(new T(), (t, b) => - { - t.MergeFrom(b); - return t; - }); - return true; - } - } - - value = null; - return false; - } - - private bool TryGetPrimitiveValue(int field, out T value) - { - if (values == null) - { - value = default(T); - return false; - } - - IExtensionValue extensionValue; - if (values.TryGetValue(field, out extensionValue)) - { - if (extensionValue is ExtensionValue) - { - ExtensionValue single = extensionValue as ExtensionValue; - if (single.HasValue) - { - value = single.GetValue(); - return true; - } - } - else if (extensionValue is RepeatedExtensionValue) - { - RepeatedExtensionValue repeated = extensionValue as RepeatedExtensionValue; - if (repeated.GetValue().Count != 0) - { - RepeatedField repeatedField = repeated.GetValue(); - value = repeatedField[repeatedField.Count - 1]; - return true; - } - } - else // and here we find explicit enum handling since T : Enum ! x is ExtensionValue - { - var type = extensionValue.GetType(); - if (type.GetGenericTypeDefinition() == typeof(ExtensionValue<>)) - { - var typeInfo = type.GetTypeInfo(); - var typeArgs = typeInfo.GenericTypeArguments; - if (typeArgs.Length == 1 && typeArgs[0].GetTypeInfo().IsEnum) - { - if ((bool)typeInfo.GetDeclaredProperty(nameof(ExtensionValue.HasValue)).GetValue(extensionValue)) - { - value = (T)typeInfo.GetDeclaredMethod(nameof(ExtensionValue.GetValue)).Invoke(extensionValue, EmptyParameters); - return true; - } - } - } - else if (type.GetGenericTypeDefinition() == typeof(RepeatedExtensionValue<>)) - { - var typeInfo = type.GetTypeInfo(); - var typeArgs = typeInfo.GenericTypeArguments; - if (typeArgs.Length == 1 && typeArgs[0].GetTypeInfo().IsEnum) - { - var values = (IList)typeInfo.GetDeclaredMethod(nameof(RepeatedExtensionValue.GetValue)).Invoke(extensionValue, EmptyParameters); - if (values.Count != 0) - { - value = (T)values[values.Count - 1]; - return true; - } - } - } - } - } - - value = default(T); - return false; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/Descriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/Descriptor.cs deleted file mode 100644 index 162f175..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/Descriptor.cs +++ /dev/null @@ -1,8405 +0,0 @@ -// -// Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/protobuf/descriptor.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.Reflection { - - /// Holder for reflection information generated from google/protobuf/descriptor.proto - internal static partial class DescriptorReflection { - - #region Descriptor - /// File descriptor for google/protobuf/descriptor.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static DescriptorReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "CiBnb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bxIPZ29vZ2xlLnBy", - "b3RvYnVmIkcKEUZpbGVEZXNjcmlwdG9yU2V0EjIKBGZpbGUYASADKAsyJC5n", - "b29nbGUucHJvdG9idWYuRmlsZURlc2NyaXB0b3JQcm90byLbAwoTRmlsZURl", - "c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg8KB3BhY2thZ2UYAiABKAkS", - "EgoKZGVwZW5kZW5jeRgDIAMoCRIZChFwdWJsaWNfZGVwZW5kZW5jeRgKIAMo", - "BRIXCg93ZWFrX2RlcGVuZGVuY3kYCyADKAUSNgoMbWVzc2FnZV90eXBlGAQg", - "AygLMiAuZ29vZ2xlLnByb3RvYnVmLkRlc2NyaXB0b3JQcm90bxI3CgllbnVt", - "X3R5cGUYBSADKAsyJC5nb29nbGUucHJvdG9idWYuRW51bURlc2NyaXB0b3JQ", - "cm90bxI4CgdzZXJ2aWNlGAYgAygLMicuZ29vZ2xlLnByb3RvYnVmLlNlcnZp", - "Y2VEZXNjcmlwdG9yUHJvdG8SOAoJZXh0ZW5zaW9uGAcgAygLMiUuZ29vZ2xl", - "LnByb3RvYnVmLkZpZWxkRGVzY3JpcHRvclByb3RvEi0KB29wdGlvbnMYCCAB", - "KAsyHC5nb29nbGUucHJvdG9idWYuRmlsZU9wdGlvbnMSOQoQc291cmNlX2Nv", - "ZGVfaW5mbxgJIAEoCzIfLmdvb2dsZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5m", - "bxIOCgZzeW50YXgYDCABKAkiqQUKD0Rlc2NyaXB0b3JQcm90bxIMCgRuYW1l", - "GAEgASgJEjQKBWZpZWxkGAIgAygLMiUuZ29vZ2xlLnByb3RvYnVmLkZpZWxk", - "RGVzY3JpcHRvclByb3RvEjgKCWV4dGVuc2lvbhgGIAMoCzIlLmdvb2dsZS5w", - "cm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90bxI1CgtuZXN0ZWRfdHlwZRgD", - "IAMoCzIgLmdvb2dsZS5wcm90b2J1Zi5EZXNjcmlwdG9yUHJvdG8SNwoJZW51", - "bV90eXBlGAQgAygLMiQuZ29vZ2xlLnByb3RvYnVmLkVudW1EZXNjcmlwdG9y", - "UHJvdG8SSAoPZXh0ZW5zaW9uX3JhbmdlGAUgAygLMi8uZ29vZ2xlLnByb3Rv", - "YnVmLkRlc2NyaXB0b3JQcm90by5FeHRlbnNpb25SYW5nZRI5CgpvbmVvZl9k", - "ZWNsGAggAygLMiUuZ29vZ2xlLnByb3RvYnVmLk9uZW9mRGVzY3JpcHRvclBy", - "b3RvEjAKB29wdGlvbnMYByABKAsyHy5nb29nbGUucHJvdG9idWYuTWVzc2Fn", - "ZU9wdGlvbnMSRgoOcmVzZXJ2ZWRfcmFuZ2UYCSADKAsyLi5nb29nbGUucHJv", - "dG9idWYuRGVzY3JpcHRvclByb3RvLlJlc2VydmVkUmFuZ2USFQoNcmVzZXJ2", - "ZWRfbmFtZRgKIAMoCRplCg5FeHRlbnNpb25SYW5nZRINCgVzdGFydBgBIAEo", - "BRILCgNlbmQYAiABKAUSNwoHb3B0aW9ucxgDIAEoCzImLmdvb2dsZS5wcm90", - "b2J1Zi5FeHRlbnNpb25SYW5nZU9wdGlvbnMaKwoNUmVzZXJ2ZWRSYW5nZRIN", - "CgVzdGFydBgBIAEoBRILCgNlbmQYAiABKAUiZwoVRXh0ZW5zaW9uUmFuZ2VP", - "cHRpb25zEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2ds", - "ZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQgICAgAIivAUK", - "FEZpZWxkRGVzY3JpcHRvclByb3RvEgwKBG5hbWUYASABKAkSDgoGbnVtYmVy", - "GAMgASgFEjoKBWxhYmVsGAQgASgOMisuZ29vZ2xlLnByb3RvYnVmLkZpZWxk", - "RGVzY3JpcHRvclByb3RvLkxhYmVsEjgKBHR5cGUYBSABKA4yKi5nb29nbGUu", - "cHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIRCgl0eXBlX25h", - "bWUYBiABKAkSEAoIZXh0ZW5kZWUYAiABKAkSFQoNZGVmYXVsdF92YWx1ZRgH", - "IAEoCRITCgtvbmVvZl9pbmRleBgJIAEoBRIRCglqc29uX25hbWUYCiABKAkS", - "LgoHb3B0aW9ucxgIIAEoCzIdLmdvb2dsZS5wcm90b2J1Zi5GaWVsZE9wdGlv", - "bnMitgIKBFR5cGUSDwoLVFlQRV9ET1VCTEUQARIOCgpUWVBFX0ZMT0FUEAIS", - "DgoKVFlQRV9JTlQ2NBADEg8KC1RZUEVfVUlOVDY0EAQSDgoKVFlQRV9JTlQz", - "MhAFEhAKDFRZUEVfRklYRUQ2NBAGEhAKDFRZUEVfRklYRUQzMhAHEg0KCVRZ", - "UEVfQk9PTBAIEg8KC1RZUEVfU1RSSU5HEAkSDgoKVFlQRV9HUk9VUBAKEhAK", - "DFRZUEVfTUVTU0FHRRALEg4KClRZUEVfQllURVMQDBIPCgtUWVBFX1VJTlQz", - "MhANEg0KCVRZUEVfRU5VTRAOEhEKDVRZUEVfU0ZJWEVEMzIQDxIRCg1UWVBF", - "X1NGSVhFRDY0EBASDwoLVFlQRV9TSU5UMzIQERIPCgtUWVBFX1NJTlQ2NBAS", - "IkMKBUxhYmVsEhIKDkxBQkVMX09QVElPTkFMEAESEgoOTEFCRUxfUkVRVUlS", - "RUQQAhISCg5MQUJFTF9SRVBFQVRFRBADIlQKFE9uZW9mRGVzY3JpcHRvclBy", - "b3RvEgwKBG5hbWUYASABKAkSLgoHb3B0aW9ucxgCIAEoCzIdLmdvb2dsZS5w", - "cm90b2J1Zi5PbmVvZk9wdGlvbnMipAIKE0VudW1EZXNjcmlwdG9yUHJvdG8S", - "DAoEbmFtZRgBIAEoCRI4CgV2YWx1ZRgCIAMoCzIpLmdvb2dsZS5wcm90b2J1", - "Zi5FbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG8SLQoHb3B0aW9ucxgDIAEoCzIc", - "Lmdvb2dsZS5wcm90b2J1Zi5FbnVtT3B0aW9ucxJOCg5yZXNlcnZlZF9yYW5n", - "ZRgEIAMoCzI2Lmdvb2dsZS5wcm90b2J1Zi5FbnVtRGVzY3JpcHRvclByb3Rv", - "LkVudW1SZXNlcnZlZFJhbmdlEhUKDXJlc2VydmVkX25hbWUYBSADKAkaLwoR", - "RW51bVJlc2VydmVkUmFuZ2USDQoFc3RhcnQYASABKAUSCwoDZW5kGAIgASgF", - "ImwKGEVudW1WYWx1ZURlc2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEg4K", - "Bm51bWJlchgCIAEoBRIyCgdvcHRpb25zGAMgASgLMiEuZ29vZ2xlLnByb3Rv", - "YnVmLkVudW1WYWx1ZU9wdGlvbnMikAEKFlNlcnZpY2VEZXNjcmlwdG9yUHJv", - "dG8SDAoEbmFtZRgBIAEoCRI2CgZtZXRob2QYAiADKAsyJi5nb29nbGUucHJv", - "dG9idWYuTWV0aG9kRGVzY3JpcHRvclByb3RvEjAKB29wdGlvbnMYAyABKAsy", - "Hy5nb29nbGUucHJvdG9idWYuU2VydmljZU9wdGlvbnMiwQEKFU1ldGhvZERl", - "c2NyaXB0b3JQcm90bxIMCgRuYW1lGAEgASgJEhIKCmlucHV0X3R5cGUYAiAB", - "KAkSEwoLb3V0cHV0X3R5cGUYAyABKAkSLwoHb3B0aW9ucxgEIAEoCzIeLmdv", - "b2dsZS5wcm90b2J1Zi5NZXRob2RPcHRpb25zEh8KEGNsaWVudF9zdHJlYW1p", - "bmcYBSABKAg6BWZhbHNlEh8KEHNlcnZlcl9zdHJlYW1pbmcYBiABKAg6BWZh", - "bHNlIqYGCgtGaWxlT3B0aW9ucxIUCgxqYXZhX3BhY2thZ2UYASABKAkSHAoU", - "amF2YV9vdXRlcl9jbGFzc25hbWUYCCABKAkSIgoTamF2YV9tdWx0aXBsZV9m", - "aWxlcxgKIAEoCDoFZmFsc2USKQodamF2YV9nZW5lcmF0ZV9lcXVhbHNfYW5k", - "X2hhc2gYFCABKAhCAhgBEiUKFmphdmFfc3RyaW5nX2NoZWNrX3V0ZjgYGyAB", - "KAg6BWZhbHNlEkYKDG9wdGltaXplX2ZvchgJIAEoDjIpLmdvb2dsZS5wcm90", - "b2J1Zi5GaWxlT3B0aW9ucy5PcHRpbWl6ZU1vZGU6BVNQRUVEEhIKCmdvX3Bh", - "Y2thZ2UYCyABKAkSIgoTY2NfZ2VuZXJpY19zZXJ2aWNlcxgQIAEoCDoFZmFs", - "c2USJAoVamF2YV9nZW5lcmljX3NlcnZpY2VzGBEgASgIOgVmYWxzZRIiChNw", - "eV9nZW5lcmljX3NlcnZpY2VzGBIgASgIOgVmYWxzZRIjChRwaHBfZ2VuZXJp", - "Y19zZXJ2aWNlcxgqIAEoCDoFZmFsc2USGQoKZGVwcmVjYXRlZBgXIAEoCDoF", - "ZmFsc2USHwoQY2NfZW5hYmxlX2FyZW5hcxgfIAEoCDoFZmFsc2USGQoRb2Jq", - "Y19jbGFzc19wcmVmaXgYJCABKAkSGAoQY3NoYXJwX25hbWVzcGFjZRglIAEo", - "CRIUCgxzd2lmdF9wcmVmaXgYJyABKAkSGAoQcGhwX2NsYXNzX3ByZWZpeBgo", - "IAEoCRIVCg1waHBfbmFtZXNwYWNlGCkgASgJEh4KFnBocF9tZXRhZGF0YV9u", - "YW1lc3BhY2UYLCABKAkSFAoMcnVieV9wYWNrYWdlGC0gASgJEkMKFHVuaW50", - "ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5Vbmlu", - "dGVycHJldGVkT3B0aW9uIjoKDE9wdGltaXplTW9kZRIJCgVTUEVFRBABEg0K", - "CUNPREVfU0laRRACEhAKDExJVEVfUlVOVElNRRADKgkI6AcQgICAgAJKBAgm", - "ECci8gEKDk1lc3NhZ2VPcHRpb25zEiYKF21lc3NhZ2Vfc2V0X3dpcmVfZm9y", - "bWF0GAEgASgIOgVmYWxzZRIuCh9ub19zdGFuZGFyZF9kZXNjcmlwdG9yX2Fj", - "Y2Vzc29yGAIgASgIOgVmYWxzZRIZCgpkZXByZWNhdGVkGAMgASgIOgVmYWxz", - "ZRIRCgltYXBfZW50cnkYByABKAgSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y", - "5wcgAygLMiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24q", - "CQjoBxCAgICAAkoECAgQCUoECAkQCiKeAwoMRmllbGRPcHRpb25zEjoKBWN0", - "eXBlGAEgASgOMiMuZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucy5DVHlw", - "ZToGU1RSSU5HEg4KBnBhY2tlZBgCIAEoCBI/CgZqc3R5cGUYBiABKA4yJC5n", - "b29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zLkpTVHlwZToJSlNfTk9STUFM", - "EhMKBGxhenkYBSABKAg6BWZhbHNlEhkKCmRlcHJlY2F0ZWQYAyABKAg6BWZh", - "bHNlEhMKBHdlYWsYCiABKAg6BWZhbHNlEkMKFHVuaW50ZXJwcmV0ZWRfb3B0", - "aW9uGOcHIAMoCzIkLmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0", - "aW9uIi8KBUNUeXBlEgoKBlNUUklORxAAEggKBENPUkQQARIQCgxTVFJJTkdf", - "UElFQ0UQAiI1CgZKU1R5cGUSDQoJSlNfTk9STUFMEAASDQoJSlNfU1RSSU5H", - "EAESDQoJSlNfTlVNQkVSEAIqCQjoBxCAgICAAkoECAQQBSJeCgxPbmVvZk9w", - "dGlvbnMSQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xl", - "LnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKTAQoL", - "RW51bU9wdGlvbnMSEwoLYWxsb3dfYWxpYXMYAiABKAgSGQoKZGVwcmVjYXRl", - "ZBgDIAEoCDoFZmFsc2USQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygL", - "MiQuZ29vZ2xlLnByb3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCA", - "gICAAkoECAUQBiJ9ChBFbnVtVmFsdWVPcHRpb25zEhkKCmRlcHJlY2F0ZWQY", - "ASABKAg6BWZhbHNlEkMKFHVuaW50ZXJwcmV0ZWRfb3B0aW9uGOcHIAMoCzIk", - "Lmdvb2dsZS5wcm90b2J1Zi5VbmludGVycHJldGVkT3B0aW9uKgkI6AcQgICA", - "gAIiewoOU2VydmljZU9wdGlvbnMSGQoKZGVwcmVjYXRlZBghIAEoCDoFZmFs", - "c2USQwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnBy", - "b3RvYnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24qCQjoBxCAgICAAiKtAgoNTWV0", - "aG9kT3B0aW9ucxIZCgpkZXByZWNhdGVkGCEgASgIOgVmYWxzZRJfChFpZGVt", - "cG90ZW5jeV9sZXZlbBgiIAEoDjIvLmdvb2dsZS5wcm90b2J1Zi5NZXRob2RP", - "cHRpb25zLklkZW1wb3RlbmN5TGV2ZWw6E0lERU1QT1RFTkNZX1VOS05PV04S", - "QwoUdW5pbnRlcnByZXRlZF9vcHRpb24Y5wcgAygLMiQuZ29vZ2xlLnByb3Rv", - "YnVmLlVuaW50ZXJwcmV0ZWRPcHRpb24iUAoQSWRlbXBvdGVuY3lMZXZlbBIX", - "ChNJREVNUE9URU5DWV9VTktOT1dOEAASEwoPTk9fU0lERV9FRkZFQ1RTEAES", - "DgoKSURFTVBPVEVOVBACKgkI6AcQgICAgAIingIKE1VuaW50ZXJwcmV0ZWRP", - "cHRpb24SOwoEbmFtZRgCIAMoCzItLmdvb2dsZS5wcm90b2J1Zi5VbmludGVy", - "cHJldGVkT3B0aW9uLk5hbWVQYXJ0EhgKEGlkZW50aWZpZXJfdmFsdWUYAyAB", - "KAkSGgoScG9zaXRpdmVfaW50X3ZhbHVlGAQgASgEEhoKEm5lZ2F0aXZlX2lu", - "dF92YWx1ZRgFIAEoAxIUCgxkb3VibGVfdmFsdWUYBiABKAESFAoMc3RyaW5n", - "X3ZhbHVlGAcgASgMEhcKD2FnZ3JlZ2F0ZV92YWx1ZRgIIAEoCRozCghOYW1l", - "UGFydBIRCgluYW1lX3BhcnQYASACKAkSFAoMaXNfZXh0ZW5zaW9uGAIgAigI", - "ItUBCg5Tb3VyY2VDb2RlSW5mbxI6Cghsb2NhdGlvbhgBIAMoCzIoLmdvb2ds", - "ZS5wcm90b2J1Zi5Tb3VyY2VDb2RlSW5mby5Mb2NhdGlvbhqGAQoITG9jYXRp", - "b24SEAoEcGF0aBgBIAMoBUICEAESEAoEc3BhbhgCIAMoBUICEAESGAoQbGVh", - "ZGluZ19jb21tZW50cxgDIAEoCRIZChF0cmFpbGluZ19jb21tZW50cxgEIAEo", - "CRIhChlsZWFkaW5nX2RldGFjaGVkX2NvbW1lbnRzGAYgAygJIqcBChFHZW5l", - "cmF0ZWRDb2RlSW5mbxJBCgphbm5vdGF0aW9uGAEgAygLMi0uZ29vZ2xlLnBy", - "b3RvYnVmLkdlbmVyYXRlZENvZGVJbmZvLkFubm90YXRpb24aTwoKQW5ub3Rh", - "dGlvbhIQCgRwYXRoGAEgAygFQgIQARITCgtzb3VyY2VfZmlsZRgCIAEoCRIN", - "CgViZWdpbhgDIAEoBRILCgNlbmQYBCABKAVCjwEKE2NvbS5nb29nbGUucHJv", - "dG9idWZCEERlc2NyaXB0b3JQcm90b3NIAVo+Z2l0aHViLmNvbS9nb2xhbmcv", - "cHJvdG9idWYvcHJvdG9jLWdlbi1nby9kZXNjcmlwdG9yO2Rlc2NyaXB0b3L4", - "AQGiAgNHUEKqAhpHb29nbGUuUHJvdG9idWYuUmVmbGVjdGlvbg==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorSet), global::Google.Protobuf.Reflection.FileDescriptorSet.Parser, new[]{ "File" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileDescriptorProto), global::Google.Protobuf.Reflection.FileDescriptorProto.Parser, new[]{ "Name", "Package", "Dependency", "PublicDependency", "WeakDependency", "MessageType", "EnumType", "Service", "Extension", "Options", "SourceCodeInfo", "Syntax" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto), global::Google.Protobuf.Reflection.DescriptorProto.Parser, new[]{ "Name", "Field", "Extension", "NestedType", "EnumType", "ExtensionRange", "OneofDecl", "Options", "ReservedRange", "ReservedName" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange), global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser, new[]{ "Start", "End", "Options" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange), global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser, new[]{ "Start", "End" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.ExtensionRangeOptions), global::Google.Protobuf.Reflection.ExtensionRangeOptions.Parser, new[]{ "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto), global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser, new[]{ "Name", "Number", "Label", "Type", "TypeName", "Extendee", "DefaultValue", "OneofIndex", "JsonName", "Options" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type), typeof(global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.OneofDescriptorProto), global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser, new[]{ "Name", "Options" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumDescriptorProto), global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser, new[]{ "Name", "Value", "Options", "ReservedRange", "ReservedName" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange), global::Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.Parser, new[]{ "Start", "End" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueDescriptorProto), global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser, new[]{ "Name", "Number", "Options" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.ServiceDescriptorProto), global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser, new[]{ "Name", "Method", "Options" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MethodDescriptorProto), global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser, new[]{ "Name", "InputType", "OutputType", "Options", "ClientStreaming", "ServerStreaming" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FileOptions), global::Google.Protobuf.Reflection.FileOptions.Parser, new[]{ "JavaPackage", "JavaOuterClassname", "JavaMultipleFiles", "JavaGenerateEqualsAndHash", "JavaStringCheckUtf8", "OptimizeFor", "GoPackage", "CcGenericServices", "JavaGenericServices", "PyGenericServices", "PhpGenericServices", "Deprecated", "CcEnableArenas", "ObjcClassPrefix", "CsharpNamespace", "SwiftPrefix", "PhpClassPrefix", "PhpNamespace", "PhpMetadataNamespace", "RubyPackage", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MessageOptions), global::Google.Protobuf.Reflection.MessageOptions.Parser, new[]{ "MessageSetWireFormat", "NoStandardDescriptorAccessor", "Deprecated", "MapEntry", "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.FieldOptions), global::Google.Protobuf.Reflection.FieldOptions.Parser, new[]{ "Ctype", "Packed", "Jstype", "Lazy", "Deprecated", "Weak", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.CType), typeof(global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.OneofOptions), global::Google.Protobuf.Reflection.OneofOptions.Parser, new[]{ "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumOptions), global::Google.Protobuf.Reflection.EnumOptions.Parser, new[]{ "AllowAlias", "Deprecated", "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.EnumValueOptions), global::Google.Protobuf.Reflection.EnumValueOptions.Parser, new[]{ "Deprecated", "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.ServiceOptions), global::Google.Protobuf.Reflection.ServiceOptions.Parser, new[]{ "Deprecated", "UninterpretedOption" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.MethodOptions), global::Google.Protobuf.Reflection.MethodOptions.Parser, new[]{ "Deprecated", "IdempotencyLevel", "UninterpretedOption" }, null, new[]{ typeof(global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption), global::Google.Protobuf.Reflection.UninterpretedOption.Parser, new[]{ "Name", "IdentifierValue", "PositiveIntValue", "NegativeIntValue", "DoubleValue", "StringValue", "AggregateValue" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart), global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser, new[]{ "NamePart_", "IsExtension" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo), global::Google.Protobuf.Reflection.SourceCodeInfo.Parser, new[]{ "Location" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location), global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser, new[]{ "Path", "Span", "LeadingComments", "TrailingComments", "LeadingDetachedComments" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.GeneratedCodeInfo), global::Google.Protobuf.Reflection.GeneratedCodeInfo.Parser, new[]{ "Annotation" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation), global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Parser, new[]{ "Path", "SourceFile", "Begin", "End" }, null, null, null, null)}) - })); - } - #endregion - - } - #region Messages - /// - /// The protocol compiler can output a FileDescriptorSet containing the .proto - /// files it parses. - /// - internal sealed partial class FileDescriptorSet : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FileDescriptorSet()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorSet() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorSet(FileDescriptorSet other) : this() { - file_ = other.file_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorSet Clone() { - return new FileDescriptorSet(this); - } - - /// Field number for the "file" field. - public const int FileFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_file_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.FileDescriptorProto.Parser); - private readonly pbc::RepeatedField file_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField File { - get { return file_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FileDescriptorSet); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FileDescriptorSet other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!file_.Equals(other.file_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= file_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - file_.WriteTo(output, _repeated_file_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += file_.CalculateSize(_repeated_file_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FileDescriptorSet other) { - if (other == null) { - return; - } - file_.Add(other.file_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - file_.AddEntriesFrom(input, _repeated_file_codec); - break; - } - } - } - } - - } - - /// - /// Describes a complete .proto file. - /// - internal sealed partial class FileDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FileDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorProto(FileDescriptorProto other) : this() { - name_ = other.name_; - package_ = other.package_; - dependency_ = other.dependency_.Clone(); - publicDependency_ = other.publicDependency_.Clone(); - weakDependency_ = other.weakDependency_.Clone(); - messageType_ = other.messageType_.Clone(); - enumType_ = other.enumType_.Clone(); - service_ = other.service_.Clone(); - extension_ = other.extension_.Clone(); - options_ = other.HasOptions ? other.options_.Clone() : null; - sourceCodeInfo_ = other.HasSourceCodeInfo ? other.sourceCodeInfo_.Clone() : null; - syntax_ = other.syntax_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileDescriptorProto Clone() { - return new FileDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - /// - /// file name, relative to root of source tree - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "package" field. - public const int PackageFieldNumber = 2; - private readonly static string PackageDefaultValue = ""; - - private string package_; - /// - /// e.g. "foo", "foo.bar", etc. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Package { - get { return package_ ?? PackageDefaultValue; } - set { - package_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "package" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPackage { - get { return package_ != null; } - } - /// Clears the value of the "package" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPackage() { - package_ = null; - } - - /// Field number for the "dependency" field. - public const int DependencyFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_dependency_codec - = pb::FieldCodec.ForString(26); - private readonly pbc::RepeatedField dependency_ = new pbc::RepeatedField(); - /// - /// Names of files imported by this file. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Dependency { - get { return dependency_; } - } - - /// Field number for the "public_dependency" field. - public const int PublicDependencyFieldNumber = 10; - private static readonly pb::FieldCodec _repeated_publicDependency_codec - = pb::FieldCodec.ForInt32(80); - private readonly pbc::RepeatedField publicDependency_ = new pbc::RepeatedField(); - /// - /// Indexes of the public imported files in the dependency list above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField PublicDependency { - get { return publicDependency_; } - } - - /// Field number for the "weak_dependency" field. - public const int WeakDependencyFieldNumber = 11; - private static readonly pb::FieldCodec _repeated_weakDependency_codec - = pb::FieldCodec.ForInt32(88); - private readonly pbc::RepeatedField weakDependency_ = new pbc::RepeatedField(); - /// - /// Indexes of the weak imported files in the dependency list. - /// For Google-internal migration only. Do not use. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField WeakDependency { - get { return weakDependency_; } - } - - /// Field number for the "message_type" field. - public const int MessageTypeFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_messageType_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.DescriptorProto.Parser); - private readonly pbc::RepeatedField messageType_ = new pbc::RepeatedField(); - /// - /// All top-level definitions in this file. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField MessageType { - get { return messageType_; } - } - - /// Field number for the "enum_type" field. - public const int EnumTypeFieldNumber = 5; - private static readonly pb::FieldCodec _repeated_enumType_codec - = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser); - private readonly pbc::RepeatedField enumType_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField EnumType { - get { return enumType_; } - } - - /// Field number for the "service" field. - public const int ServiceFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_service_codec - = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.ServiceDescriptorProto.Parser); - private readonly pbc::RepeatedField service_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Service { - get { return service_; } - } - - /// Field number for the "extension" field. - public const int ExtensionFieldNumber = 7; - private static readonly pb::FieldCodec _repeated_extension_codec - = pb::FieldCodec.ForMessage(58, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser); - private readonly pbc::RepeatedField extension_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Extension { - get { return extension_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 8; - private global::Google.Protobuf.Reflection.FileOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FileOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - /// Field number for the "source_code_info" field. - public const int SourceCodeInfoFieldNumber = 9; - private global::Google.Protobuf.Reflection.SourceCodeInfo sourceCodeInfo_; - /// - /// This field contains optional information about the original source code. - /// You may safely remove this entire field without harming runtime - /// functionality of the descriptors -- the information is needed only by - /// development tools. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.SourceCodeInfo SourceCodeInfo { - get { return sourceCodeInfo_; } - set { - sourceCodeInfo_ = value; - } - } - /// Gets whether the source_code_info field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasSourceCodeInfo { - get { return sourceCodeInfo_ != null; } - } - /// Clears the value of the source_code_info field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearSourceCodeInfo() { - sourceCodeInfo_ = null; - } - - /// Field number for the "syntax" field. - public const int SyntaxFieldNumber = 12; - private readonly static string SyntaxDefaultValue = ""; - - private string syntax_; - /// - /// The syntax of the proto file. - /// The supported values are "proto2" and "proto3". - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Syntax { - get { return syntax_ ?? SyntaxDefaultValue; } - set { - syntax_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "syntax" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasSyntax { - get { return syntax_ != null; } - } - /// Clears the value of the "syntax" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearSyntax() { - syntax_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FileDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FileDescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Package != other.Package) return false; - if(!dependency_.Equals(other.dependency_)) return false; - if(!publicDependency_.Equals(other.publicDependency_)) return false; - if(!weakDependency_.Equals(other.weakDependency_)) return false; - if(!messageType_.Equals(other.messageType_)) return false; - if(!enumType_.Equals(other.enumType_)) return false; - if(!service_.Equals(other.service_)) return false; - if(!extension_.Equals(other.extension_)) return false; - if (!object.Equals(Options, other.Options)) return false; - if (!object.Equals(SourceCodeInfo, other.SourceCodeInfo)) return false; - if (Syntax != other.Syntax) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - if (HasPackage) hash ^= Package.GetHashCode(); - hash ^= dependency_.GetHashCode(); - hash ^= publicDependency_.GetHashCode(); - hash ^= weakDependency_.GetHashCode(); - hash ^= messageType_.GetHashCode(); - hash ^= enumType_.GetHashCode(); - hash ^= service_.GetHashCode(); - hash ^= extension_.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (HasSourceCodeInfo) hash ^= SourceCodeInfo.GetHashCode(); - if (HasSyntax) hash ^= Syntax.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (HasPackage) { - output.WriteRawTag(18); - output.WriteString(Package); - } - dependency_.WriteTo(output, _repeated_dependency_codec); - messageType_.WriteTo(output, _repeated_messageType_codec); - enumType_.WriteTo(output, _repeated_enumType_codec); - service_.WriteTo(output, _repeated_service_codec); - extension_.WriteTo(output, _repeated_extension_codec); - if (HasOptions) { - output.WriteRawTag(66); - output.WriteMessage(Options); - } - if (HasSourceCodeInfo) { - output.WriteRawTag(74); - output.WriteMessage(SourceCodeInfo); - } - publicDependency_.WriteTo(output, _repeated_publicDependency_codec); - weakDependency_.WriteTo(output, _repeated_weakDependency_codec); - if (HasSyntax) { - output.WriteRawTag(98); - output.WriteString(Syntax); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (HasPackage) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Package); - } - size += dependency_.CalculateSize(_repeated_dependency_codec); - size += publicDependency_.CalculateSize(_repeated_publicDependency_codec); - size += weakDependency_.CalculateSize(_repeated_weakDependency_codec); - size += messageType_.CalculateSize(_repeated_messageType_codec); - size += enumType_.CalculateSize(_repeated_enumType_codec); - size += service_.CalculateSize(_repeated_service_codec); - size += extension_.CalculateSize(_repeated_extension_codec); - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (HasSourceCodeInfo) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceCodeInfo); - } - if (HasSyntax) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Syntax); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FileDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - if (other.HasPackage) { - Package = other.Package; - } - dependency_.Add(other.dependency_); - publicDependency_.Add(other.publicDependency_); - weakDependency_.Add(other.weakDependency_); - messageType_.Add(other.messageType_); - enumType_.Add(other.enumType_); - service_.Add(other.service_); - extension_.Add(other.extension_); - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.FileOptions(); - } - Options.MergeFrom(other.Options); - } - if (other.HasSourceCodeInfo) { - if (!HasSourceCodeInfo) { - SourceCodeInfo = new global::Google.Protobuf.Reflection.SourceCodeInfo(); - } - SourceCodeInfo.MergeFrom(other.SourceCodeInfo); - } - if (other.HasSyntax) { - Syntax = other.Syntax; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - Package = input.ReadString(); - break; - } - case 26: { - dependency_.AddEntriesFrom(input, _repeated_dependency_codec); - break; - } - case 34: { - messageType_.AddEntriesFrom(input, _repeated_messageType_codec); - break; - } - case 42: { - enumType_.AddEntriesFrom(input, _repeated_enumType_codec); - break; - } - case 50: { - service_.AddEntriesFrom(input, _repeated_service_codec); - break; - } - case 58: { - extension_.AddEntriesFrom(input, _repeated_extension_codec); - break; - } - case 66: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.FileOptions(); - } - input.ReadMessage(Options); - break; - } - case 74: { - if (!HasSourceCodeInfo) { - SourceCodeInfo = new global::Google.Protobuf.Reflection.SourceCodeInfo(); - } - input.ReadMessage(SourceCodeInfo); - break; - } - case 82: - case 80: { - publicDependency_.AddEntriesFrom(input, _repeated_publicDependency_codec); - break; - } - case 90: - case 88: { - weakDependency_.AddEntriesFrom(input, _repeated_weakDependency_codec); - break; - } - case 98: { - Syntax = input.ReadString(); - break; - } - } - } - } - - } - - /// - /// Describes a message type. - /// - internal sealed partial class DescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new DescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DescriptorProto(DescriptorProto other) : this() { - name_ = other.name_; - field_ = other.field_.Clone(); - extension_ = other.extension_.Clone(); - nestedType_ = other.nestedType_.Clone(); - enumType_ = other.enumType_.Clone(); - extensionRange_ = other.extensionRange_.Clone(); - oneofDecl_ = other.oneofDecl_.Clone(); - options_ = other.HasOptions ? other.options_.Clone() : null; - reservedRange_ = other.reservedRange_.Clone(); - reservedName_ = other.reservedName_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public DescriptorProto Clone() { - return new DescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "field" field. - public const int FieldFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_field_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser); - private readonly pbc::RepeatedField field_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Field { - get { return field_; } - } - - /// Field number for the "extension" field. - public const int ExtensionFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_extension_codec - = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.Reflection.FieldDescriptorProto.Parser); - private readonly pbc::RepeatedField extension_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Extension { - get { return extension_; } - } - - /// Field number for the "nested_type" field. - public const int NestedTypeFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_nestedType_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.Reflection.DescriptorProto.Parser); - private readonly pbc::RepeatedField nestedType_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField NestedType { - get { return nestedType_; } - } - - /// Field number for the "enum_type" field. - public const int EnumTypeFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_enumType_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.EnumDescriptorProto.Parser); - private readonly pbc::RepeatedField enumType_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField EnumType { - get { return enumType_; } - } - - /// Field number for the "extension_range" field. - public const int ExtensionRangeFieldNumber = 5; - private static readonly pb::FieldCodec _repeated_extensionRange_codec - = pb::FieldCodec.ForMessage(42, global::Google.Protobuf.Reflection.DescriptorProto.Types.ExtensionRange.Parser); - private readonly pbc::RepeatedField extensionRange_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ExtensionRange { - get { return extensionRange_; } - } - - /// Field number for the "oneof_decl" field. - public const int OneofDeclFieldNumber = 8; - private static readonly pb::FieldCodec _repeated_oneofDecl_codec - = pb::FieldCodec.ForMessage(66, global::Google.Protobuf.Reflection.OneofDescriptorProto.Parser); - private readonly pbc::RepeatedField oneofDecl_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField OneofDecl { - get { return oneofDecl_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 7; - private global::Google.Protobuf.Reflection.MessageOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.MessageOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - /// Field number for the "reserved_range" field. - public const int ReservedRangeFieldNumber = 9; - private static readonly pb::FieldCodec _repeated_reservedRange_codec - = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.Reflection.DescriptorProto.Types.ReservedRange.Parser); - private readonly pbc::RepeatedField reservedRange_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ReservedRange { - get { return reservedRange_; } - } - - /// Field number for the "reserved_name" field. - public const int ReservedNameFieldNumber = 10; - private static readonly pb::FieldCodec _repeated_reservedName_codec - = pb::FieldCodec.ForString(82); - private readonly pbc::RepeatedField reservedName_ = new pbc::RepeatedField(); - /// - /// Reserved field names, which may not be used by fields in the same message. - /// A given name may only be reserved once. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ReservedName { - get { return reservedName_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as DescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(DescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if(!field_.Equals(other.field_)) return false; - if(!extension_.Equals(other.extension_)) return false; - if(!nestedType_.Equals(other.nestedType_)) return false; - if(!enumType_.Equals(other.enumType_)) return false; - if(!extensionRange_.Equals(other.extensionRange_)) return false; - if(!oneofDecl_.Equals(other.oneofDecl_)) return false; - if (!object.Equals(Options, other.Options)) return false; - if(!reservedRange_.Equals(other.reservedRange_)) return false; - if(!reservedName_.Equals(other.reservedName_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - hash ^= field_.GetHashCode(); - hash ^= extension_.GetHashCode(); - hash ^= nestedType_.GetHashCode(); - hash ^= enumType_.GetHashCode(); - hash ^= extensionRange_.GetHashCode(); - hash ^= oneofDecl_.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - hash ^= reservedRange_.GetHashCode(); - hash ^= reservedName_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - field_.WriteTo(output, _repeated_field_codec); - nestedType_.WriteTo(output, _repeated_nestedType_codec); - enumType_.WriteTo(output, _repeated_enumType_codec); - extensionRange_.WriteTo(output, _repeated_extensionRange_codec); - extension_.WriteTo(output, _repeated_extension_codec); - if (HasOptions) { - output.WriteRawTag(58); - output.WriteMessage(Options); - } - oneofDecl_.WriteTo(output, _repeated_oneofDecl_codec); - reservedRange_.WriteTo(output, _repeated_reservedRange_codec); - reservedName_.WriteTo(output, _repeated_reservedName_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - size += field_.CalculateSize(_repeated_field_codec); - size += extension_.CalculateSize(_repeated_extension_codec); - size += nestedType_.CalculateSize(_repeated_nestedType_codec); - size += enumType_.CalculateSize(_repeated_enumType_codec); - size += extensionRange_.CalculateSize(_repeated_extensionRange_codec); - size += oneofDecl_.CalculateSize(_repeated_oneofDecl_codec); - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - size += reservedRange_.CalculateSize(_repeated_reservedRange_codec); - size += reservedName_.CalculateSize(_repeated_reservedName_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(DescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - field_.Add(other.field_); - extension_.Add(other.extension_); - nestedType_.Add(other.nestedType_); - enumType_.Add(other.enumType_); - extensionRange_.Add(other.extensionRange_); - oneofDecl_.Add(other.oneofDecl_); - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.MessageOptions(); - } - Options.MergeFrom(other.Options); - } - reservedRange_.Add(other.reservedRange_); - reservedName_.Add(other.reservedName_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - field_.AddEntriesFrom(input, _repeated_field_codec); - break; - } - case 26: { - nestedType_.AddEntriesFrom(input, _repeated_nestedType_codec); - break; - } - case 34: { - enumType_.AddEntriesFrom(input, _repeated_enumType_codec); - break; - } - case 42: { - extensionRange_.AddEntriesFrom(input, _repeated_extensionRange_codec); - break; - } - case 50: { - extension_.AddEntriesFrom(input, _repeated_extension_codec); - break; - } - case 58: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.MessageOptions(); - } - input.ReadMessage(Options); - break; - } - case 66: { - oneofDecl_.AddEntriesFrom(input, _repeated_oneofDecl_codec); - break; - } - case 74: { - reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec); - break; - } - case 82: { - reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the DescriptorProto message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - internal sealed partial class ExtensionRange : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ExtensionRange()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRange() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRange(ExtensionRange other) : this() { - _hasBits0 = other._hasBits0; - start_ = other.start_; - end_ = other.end_; - options_ = other.HasOptions ? other.options_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRange Clone() { - return new ExtensionRange(this); - } - - /// Field number for the "start" field. - public const int StartFieldNumber = 1; - private readonly static int StartDefaultValue = 0; - - private int start_; - /// - /// Inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Start { - get { if ((_hasBits0 & 1) != 0) { return start_; } else { return StartDefaultValue; } } - set { - _hasBits0 |= 1; - start_ = value; - } - } - /// Gets whether the "start" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasStart { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "start" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearStart() { - _hasBits0 &= ~1; - } - - /// Field number for the "end" field. - public const int EndFieldNumber = 2; - private readonly static int EndDefaultValue = 0; - - private int end_; - /// - /// Exclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int End { - get { if ((_hasBits0 & 2) != 0) { return end_; } else { return EndDefaultValue; } } - set { - _hasBits0 |= 2; - end_ = value; - } - } - /// Gets whether the "end" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasEnd { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "end" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearEnd() { - _hasBits0 &= ~2; - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private global::Google.Protobuf.Reflection.ExtensionRangeOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.ExtensionRangeOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ExtensionRange); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ExtensionRange other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Start != other.Start) return false; - if (End != other.End) return false; - if (!object.Equals(Options, other.Options)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasStart) hash ^= Start.GetHashCode(); - if (HasEnd) hash ^= End.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasStart) { - output.WriteRawTag(8); - output.WriteInt32(Start); - } - if (HasEnd) { - output.WriteRawTag(16); - output.WriteInt32(End); - } - if (HasOptions) { - output.WriteRawTag(26); - output.WriteMessage(Options); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasStart) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start); - } - if (HasEnd) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(End); - } - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ExtensionRange other) { - if (other == null) { - return; - } - if (other.HasStart) { - Start = other.Start; - } - if (other.HasEnd) { - End = other.End; - } - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.ExtensionRangeOptions(); - } - Options.MergeFrom(other.Options); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Start = input.ReadInt32(); - break; - } - case 16: { - End = input.ReadInt32(); - break; - } - case 26: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.ExtensionRangeOptions(); - } - input.ReadMessage(Options); - break; - } - } - } - } - - } - - /// - /// Range of reserved tag numbers. Reserved tag numbers may not be used by - /// fields or extension ranges in the same message. Reserved ranges may - /// not overlap. - /// - internal sealed partial class ReservedRange : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ReservedRange()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorProto.Descriptor.NestedTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedRange() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedRange(ReservedRange other) : this() { - _hasBits0 = other._hasBits0; - start_ = other.start_; - end_ = other.end_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ReservedRange Clone() { - return new ReservedRange(this); - } - - /// Field number for the "start" field. - public const int StartFieldNumber = 1; - private readonly static int StartDefaultValue = 0; - - private int start_; - /// - /// Inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Start { - get { if ((_hasBits0 & 1) != 0) { return start_; } else { return StartDefaultValue; } } - set { - _hasBits0 |= 1; - start_ = value; - } - } - /// Gets whether the "start" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasStart { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "start" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearStart() { - _hasBits0 &= ~1; - } - - /// Field number for the "end" field. - public const int EndFieldNumber = 2; - private readonly static int EndDefaultValue = 0; - - private int end_; - /// - /// Exclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int End { - get { if ((_hasBits0 & 2) != 0) { return end_; } else { return EndDefaultValue; } } - set { - _hasBits0 |= 2; - end_ = value; - } - } - /// Gets whether the "end" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasEnd { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "end" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearEnd() { - _hasBits0 &= ~2; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ReservedRange); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ReservedRange other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Start != other.Start) return false; - if (End != other.End) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasStart) hash ^= Start.GetHashCode(); - if (HasEnd) hash ^= End.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasStart) { - output.WriteRawTag(8); - output.WriteInt32(Start); - } - if (HasEnd) { - output.WriteRawTag(16); - output.WriteInt32(End); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasStart) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start); - } - if (HasEnd) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(End); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ReservedRange other) { - if (other == null) { - return; - } - if (other.HasStart) { - Start = other.Start; - } - if (other.HasEnd) { - End = other.End; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Start = input.ReadInt32(); - break; - } - case 16: { - End = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - internal sealed partial class ExtensionRangeOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ExtensionRangeOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRangeOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRangeOptions(ExtensionRangeOptions other) : this() { - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ExtensionRangeOptions Clone() { - return new ExtensionRangeOptions(this); - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ExtensionRangeOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ExtensionRangeOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ExtensionRangeOptions other) { - if (other == null) { - return; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - /// - /// Describes a field within a message. - /// - internal sealed partial class FieldDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FieldDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[4]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldDescriptorProto(FieldDescriptorProto other) : this() { - _hasBits0 = other._hasBits0; - name_ = other.name_; - number_ = other.number_; - label_ = other.label_; - type_ = other.type_; - typeName_ = other.typeName_; - extendee_ = other.extendee_; - defaultValue_ = other.defaultValue_; - oneofIndex_ = other.oneofIndex_; - jsonName_ = other.jsonName_; - options_ = other.HasOptions ? other.options_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldDescriptorProto Clone() { - return new FieldDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "number" field. - public const int NumberFieldNumber = 3; - private readonly static int NumberDefaultValue = 0; - - private int number_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Number { - get { if ((_hasBits0 & 1) != 0) { return number_; } else { return NumberDefaultValue; } } - set { - _hasBits0 |= 1; - number_ = value; - } - } - /// Gets whether the "number" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasNumber { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "number" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearNumber() { - _hasBits0 &= ~1; - } - - /// Field number for the "label" field. - public const int LabelFieldNumber = 4; - private readonly static global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label LabelDefaultValue = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label.Optional; - - private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label label_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label Label { - get { if ((_hasBits0 & 2) != 0) { return label_; } else { return LabelDefaultValue; } } - set { - _hasBits0 |= 2; - label_ = value; - } - } - /// Gets whether the "label" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasLabel { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "label" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearLabel() { - _hasBits0 &= ~2; - } - - /// Field number for the "type" field. - public const int TypeFieldNumber = 5; - private readonly static global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type TypeDefaultValue = global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type.Double; - - private global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type type_; - /// - /// If type_name is set, this need not be set. If both this and type_name - /// are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type Type { - get { if ((_hasBits0 & 4) != 0) { return type_; } else { return TypeDefaultValue; } } - set { - _hasBits0 |= 4; - type_ = value; - } - } - /// Gets whether the "type" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasType { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "type" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearType() { - _hasBits0 &= ~4; - } - - /// Field number for the "type_name" field. - public const int TypeNameFieldNumber = 6; - private readonly static string TypeNameDefaultValue = ""; - - private string typeName_; - /// - /// For message and enum types, this is the name of the type. If the name - /// starts with a '.', it is fully-qualified. Otherwise, C++-like scoping - /// rules are used to find the type (i.e. first the nested types within this - /// message are searched, then within the parent, on up to the root - /// namespace). - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TypeName { - get { return typeName_ ?? TypeNameDefaultValue; } - set { - typeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "type_name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasTypeName { - get { return typeName_ != null; } - } - /// Clears the value of the "type_name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearTypeName() { - typeName_ = null; - } - - /// Field number for the "extendee" field. - public const int ExtendeeFieldNumber = 2; - private readonly static string ExtendeeDefaultValue = ""; - - private string extendee_; - /// - /// For extensions, this is the name of the type being extended. It is - /// resolved in the same manner as type_name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Extendee { - get { return extendee_ ?? ExtendeeDefaultValue; } - set { - extendee_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "extendee" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasExtendee { - get { return extendee_ != null; } - } - /// Clears the value of the "extendee" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearExtendee() { - extendee_ = null; - } - - /// Field number for the "default_value" field. - public const int DefaultValueFieldNumber = 7; - private readonly static string DefaultValueDefaultValue = ""; - - private string defaultValue_; - /// - /// For numeric types, contains the original text representation of the value. - /// For booleans, "true" or "false". - /// For strings, contains the default text contents (not escaped in any way). - /// For bytes, contains the C escaped value. All bytes >= 128 are escaped. - /// TODO(kenton): Base-64 encode? - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string DefaultValue { - get { return defaultValue_ ?? DefaultValueDefaultValue; } - set { - defaultValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "default_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDefaultValue { - get { return defaultValue_ != null; } - } - /// Clears the value of the "default_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDefaultValue() { - defaultValue_ = null; - } - - /// Field number for the "oneof_index" field. - public const int OneofIndexFieldNumber = 9; - private readonly static int OneofIndexDefaultValue = 0; - - private int oneofIndex_; - /// - /// If set, gives the index of a oneof in the containing type's oneof_decl - /// list. This field is a member of that oneof. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OneofIndex { - get { if ((_hasBits0 & 8) != 0) { return oneofIndex_; } else { return OneofIndexDefaultValue; } } - set { - _hasBits0 |= 8; - oneofIndex_ = value; - } - } - /// Gets whether the "oneof_index" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOneofIndex { - get { return (_hasBits0 & 8) != 0; } - } - /// Clears the value of the "oneof_index" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOneofIndex() { - _hasBits0 &= ~8; - } - - /// Field number for the "json_name" field. - public const int JsonNameFieldNumber = 10; - private readonly static string JsonNameDefaultValue = ""; - - private string jsonName_; - /// - /// JSON name of this field. The value is set by protocol compiler. If the - /// user has set a "json_name" option on this field, that option's value - /// will be used. Otherwise, it's deduced from the field's name by converting - /// it to camelCase. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JsonName { - get { return jsonName_ ?? JsonNameDefaultValue; } - set { - jsonName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "json_name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJsonName { - get { return jsonName_ != null; } - } - /// Clears the value of the "json_name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJsonName() { - jsonName_ = null; - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 8; - private global::Google.Protobuf.Reflection.FieldOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FieldOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FieldDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FieldDescriptorProto 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 (Label != other.Label) return false; - if (Type != other.Type) return false; - if (TypeName != other.TypeName) return false; - if (Extendee != other.Extendee) return false; - if (DefaultValue != other.DefaultValue) return false; - if (OneofIndex != other.OneofIndex) return false; - if (JsonName != other.JsonName) return false; - if (!object.Equals(Options, other.Options)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - if (HasNumber) hash ^= Number.GetHashCode(); - if (HasLabel) hash ^= Label.GetHashCode(); - if (HasType) hash ^= Type.GetHashCode(); - if (HasTypeName) hash ^= TypeName.GetHashCode(); - if (HasExtendee) hash ^= Extendee.GetHashCode(); - if (HasDefaultValue) hash ^= DefaultValue.GetHashCode(); - if (HasOneofIndex) hash ^= OneofIndex.GetHashCode(); - if (HasJsonName) hash ^= JsonName.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (HasExtendee) { - output.WriteRawTag(18); - output.WriteString(Extendee); - } - if (HasNumber) { - output.WriteRawTag(24); - output.WriteInt32(Number); - } - if (HasLabel) { - output.WriteRawTag(32); - output.WriteEnum((int) Label); - } - if (HasType) { - output.WriteRawTag(40); - output.WriteEnum((int) Type); - } - if (HasTypeName) { - output.WriteRawTag(50); - output.WriteString(TypeName); - } - if (HasDefaultValue) { - output.WriteRawTag(58); - output.WriteString(DefaultValue); - } - if (HasOptions) { - output.WriteRawTag(66); - output.WriteMessage(Options); - } - if (HasOneofIndex) { - output.WriteRawTag(72); - output.WriteInt32(OneofIndex); - } - if (HasJsonName) { - output.WriteRawTag(82); - output.WriteString(JsonName); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (HasNumber) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number); - } - if (HasLabel) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Label); - } - if (HasType) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type); - } - if (HasTypeName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TypeName); - } - if (HasExtendee) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Extendee); - } - if (HasDefaultValue) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultValue); - } - if (HasOneofIndex) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(OneofIndex); - } - if (HasJsonName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonName); - } - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FieldDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - if (other.HasNumber) { - Number = other.Number; - } - if (other.HasLabel) { - Label = other.Label; - } - if (other.HasType) { - Type = other.Type; - } - if (other.HasTypeName) { - TypeName = other.TypeName; - } - if (other.HasExtendee) { - Extendee = other.Extendee; - } - if (other.HasDefaultValue) { - DefaultValue = other.DefaultValue; - } - if (other.HasOneofIndex) { - OneofIndex = other.OneofIndex; - } - if (other.HasJsonName) { - JsonName = other.JsonName; - } - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.FieldOptions(); - } - Options.MergeFrom(other.Options); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - Extendee = input.ReadString(); - break; - } - case 24: { - Number = input.ReadInt32(); - break; - } - case 32: { - Label = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Label) input.ReadEnum(); - break; - } - case 40: { - Type = (global::Google.Protobuf.Reflection.FieldDescriptorProto.Types.Type) input.ReadEnum(); - break; - } - case 50: { - TypeName = input.ReadString(); - break; - } - case 58: { - DefaultValue = input.ReadString(); - break; - } - case 66: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.FieldOptions(); - } - input.ReadMessage(Options); - break; - } - case 72: { - OneofIndex = input.ReadInt32(); - break; - } - case 82: { - JsonName = input.ReadString(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the FieldDescriptorProto message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - internal enum Type { - /// - /// 0 is reserved for errors. - /// Order is weird for historical reasons. - /// - [pbr::OriginalName("TYPE_DOUBLE")] Double = 1, - [pbr::OriginalName("TYPE_FLOAT")] Float = 2, - /// - /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if - /// negative values are likely. - /// - [pbr::OriginalName("TYPE_INT64")] Int64 = 3, - [pbr::OriginalName("TYPE_UINT64")] Uint64 = 4, - /// - /// Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if - /// negative values are likely. - /// - [pbr::OriginalName("TYPE_INT32")] Int32 = 5, - [pbr::OriginalName("TYPE_FIXED64")] Fixed64 = 6, - [pbr::OriginalName("TYPE_FIXED32")] Fixed32 = 7, - [pbr::OriginalName("TYPE_BOOL")] Bool = 8, - [pbr::OriginalName("TYPE_STRING")] String = 9, - /// - /// Tag-delimited aggregate. - /// Group type is deprecated and not supported in proto3. However, Proto3 - /// implementations should still be able to parse the group wire format and - /// treat group fields as unknown fields. - /// - [pbr::OriginalName("TYPE_GROUP")] Group = 10, - /// - /// Length-delimited aggregate. - /// - [pbr::OriginalName("TYPE_MESSAGE")] Message = 11, - /// - /// New in version 2. - /// - [pbr::OriginalName("TYPE_BYTES")] Bytes = 12, - [pbr::OriginalName("TYPE_UINT32")] Uint32 = 13, - [pbr::OriginalName("TYPE_ENUM")] Enum = 14, - [pbr::OriginalName("TYPE_SFIXED32")] Sfixed32 = 15, - [pbr::OriginalName("TYPE_SFIXED64")] Sfixed64 = 16, - /// - /// Uses ZigZag encoding. - /// - [pbr::OriginalName("TYPE_SINT32")] Sint32 = 17, - /// - /// Uses ZigZag encoding. - /// - [pbr::OriginalName("TYPE_SINT64")] Sint64 = 18, - } - - internal enum Label { - /// - /// 0 is reserved for errors - /// - [pbr::OriginalName("LABEL_OPTIONAL")] Optional = 1, - [pbr::OriginalName("LABEL_REQUIRED")] Required = 2, - [pbr::OriginalName("LABEL_REPEATED")] Repeated = 3, - } - - } - #endregion - - } - - /// - /// Describes a oneof. - /// - internal sealed partial class OneofDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneofDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[5]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofDescriptorProto(OneofDescriptorProto other) : this() { - name_ = other.name_; - options_ = other.HasOptions ? other.options_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofDescriptorProto Clone() { - return new OneofDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 2; - private global::Google.Protobuf.Reflection.OneofOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.OneofOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneofDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneofDescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (!object.Equals(Options, other.Options)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (HasOptions) { - output.WriteRawTag(18); - output.WriteMessage(Options); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneofDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.OneofOptions(); - } - Options.MergeFrom(other.Options); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.OneofOptions(); - } - input.ReadMessage(Options); - break; - } - } - } - } - - } - - /// - /// Describes an enum type. - /// - internal sealed partial class EnumDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[6]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumDescriptorProto(EnumDescriptorProto other) : this() { - name_ = other.name_; - value_ = other.value_.Clone(); - options_ = other.HasOptions ? other.options_.Clone() : null; - reservedRange_ = other.reservedRange_.Clone(); - reservedName_ = other.reservedName_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumDescriptorProto Clone() { - return new EnumDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "value" field. - public const int ValueFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_value_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.EnumValueDescriptorProto.Parser); - private readonly pbc::RepeatedField value_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Value { - get { return value_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private global::Google.Protobuf.Reflection.EnumOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.EnumOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - /// Field number for the "reserved_range" field. - public const int ReservedRangeFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_reservedRange_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.Reflection.EnumDescriptorProto.Types.EnumReservedRange.Parser); - private readonly pbc::RepeatedField reservedRange_ = new pbc::RepeatedField(); - /// - /// Range of reserved numeric values. Reserved numeric values may not be used - /// by enum values in the same enum declaration. Reserved ranges may not - /// overlap. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ReservedRange { - get { return reservedRange_; } - } - - /// Field number for the "reserved_name" field. - public const int ReservedNameFieldNumber = 5; - private static readonly pb::FieldCodec _repeated_reservedName_codec - = pb::FieldCodec.ForString(42); - private readonly pbc::RepeatedField reservedName_ = new pbc::RepeatedField(); - /// - /// Reserved enum value names, which may not be reused. A given name may only - /// be reserved once. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField ReservedName { - get { return reservedName_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnumDescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if(!value_.Equals(other.value_)) return false; - if (!object.Equals(Options, other.Options)) return false; - if(!reservedRange_.Equals(other.reservedRange_)) return false; - if(!reservedName_.Equals(other.reservedName_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - hash ^= value_.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - hash ^= reservedRange_.GetHashCode(); - hash ^= reservedName_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - value_.WriteTo(output, _repeated_value_codec); - if (HasOptions) { - output.WriteRawTag(26); - output.WriteMessage(Options); - } - reservedRange_.WriteTo(output, _repeated_reservedRange_codec); - reservedName_.WriteTo(output, _repeated_reservedName_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - size += value_.CalculateSize(_repeated_value_codec); - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - size += reservedRange_.CalculateSize(_repeated_reservedRange_codec); - size += reservedName_.CalculateSize(_repeated_reservedName_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnumDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - value_.Add(other.value_); - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.EnumOptions(); - } - Options.MergeFrom(other.Options); - } - reservedRange_.Add(other.reservedRange_); - reservedName_.Add(other.reservedName_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - value_.AddEntriesFrom(input, _repeated_value_codec); - break; - } - case 26: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.EnumOptions(); - } - input.ReadMessage(Options); - break; - } - case 34: { - reservedRange_.AddEntriesFrom(input, _repeated_reservedRange_codec); - break; - } - case 42: { - reservedName_.AddEntriesFrom(input, _repeated_reservedName_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the EnumDescriptorProto message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Range of reserved numeric values. Reserved values may not be used by - /// entries in the same enum. Reserved ranges may not overlap. - /// - /// Note that this is distinct from DescriptorProto.ReservedRange in that it - /// is inclusive such that it can appropriately represent the entire int32 - /// domain. - /// - internal sealed partial class EnumReservedRange : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumReservedRange()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.EnumDescriptorProto.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumReservedRange() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumReservedRange(EnumReservedRange other) : this() { - _hasBits0 = other._hasBits0; - start_ = other.start_; - end_ = other.end_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumReservedRange Clone() { - return new EnumReservedRange(this); - } - - /// Field number for the "start" field. - public const int StartFieldNumber = 1; - private readonly static int StartDefaultValue = 0; - - private int start_; - /// - /// Inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Start { - get { if ((_hasBits0 & 1) != 0) { return start_; } else { return StartDefaultValue; } } - set { - _hasBits0 |= 1; - start_ = value; - } - } - /// Gets whether the "start" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasStart { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "start" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearStart() { - _hasBits0 &= ~1; - } - - /// Field number for the "end" field. - public const int EndFieldNumber = 2; - private readonly static int EndDefaultValue = 0; - - private int end_; - /// - /// Inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int End { - get { if ((_hasBits0 & 2) != 0) { return end_; } else { return EndDefaultValue; } } - set { - _hasBits0 |= 2; - end_ = value; - } - } - /// Gets whether the "end" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasEnd { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "end" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearEnd() { - _hasBits0 &= ~2; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumReservedRange); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnumReservedRange other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Start != other.Start) return false; - if (End != other.End) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasStart) hash ^= Start.GetHashCode(); - if (HasEnd) hash ^= End.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasStart) { - output.WriteRawTag(8); - output.WriteInt32(Start); - } - if (HasEnd) { - output.WriteRawTag(16); - output.WriteInt32(End); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasStart) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Start); - } - if (HasEnd) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(End); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnumReservedRange other) { - if (other == null) { - return; - } - if (other.HasStart) { - Start = other.Start; - } - if (other.HasEnd) { - End = other.End; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Start = input.ReadInt32(); - break; - } - case 16: { - End = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - /// - /// Describes a value within an enum. - /// - internal sealed partial class EnumValueDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumValueDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[7]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueDescriptorProto(EnumValueDescriptorProto other) : this() { - _hasBits0 = other._hasBits0; - name_ = other.name_; - number_ = other.number_; - options_ = other.HasOptions ? other.options_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueDescriptorProto Clone() { - return new EnumValueDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "number" field. - public const int NumberFieldNumber = 2; - private readonly static int NumberDefaultValue = 0; - - private int number_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Number { - get { if ((_hasBits0 & 1) != 0) { return number_; } else { return NumberDefaultValue; } } - set { - _hasBits0 |= 1; - number_ = value; - } - } - /// Gets whether the "number" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasNumber { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "number" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearNumber() { - _hasBits0 &= ~1; - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private global::Google.Protobuf.Reflection.EnumValueOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.EnumValueOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumValueDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnumValueDescriptorProto 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 (!object.Equals(Options, other.Options)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - if (HasNumber) hash ^= Number.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (HasNumber) { - output.WriteRawTag(16); - output.WriteInt32(Number); - } - if (HasOptions) { - output.WriteRawTag(26); - output.WriteMessage(Options); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (HasNumber) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Number); - } - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnumValueDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - if (other.HasNumber) { - Number = other.Number; - } - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.EnumValueOptions(); - } - Options.MergeFrom(other.Options); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Number = input.ReadInt32(); - break; - } - case 26: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.EnumValueOptions(); - } - input.ReadMessage(Options); - break; - } - } - } - } - - } - - /// - /// Describes a service. - /// - internal sealed partial class ServiceDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ServiceDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[8]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceDescriptorProto(ServiceDescriptorProto other) : this() { - name_ = other.name_; - method_ = other.method_.Clone(); - options_ = other.HasOptions ? other.options_.Clone() : null; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceDescriptorProto Clone() { - return new ServiceDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "method" field. - public const int MethodFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_method_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.MethodDescriptorProto.Parser); - private readonly pbc::RepeatedField method_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Method { - get { return method_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private global::Google.Protobuf.Reflection.ServiceOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.ServiceOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ServiceDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ServiceDescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if(!method_.Equals(other.method_)) return false; - if (!object.Equals(Options, other.Options)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - hash ^= method_.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - method_.WriteTo(output, _repeated_method_codec); - if (HasOptions) { - output.WriteRawTag(26); - output.WriteMessage(Options); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - size += method_.CalculateSize(_repeated_method_codec); - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ServiceDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - method_.Add(other.method_); - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.ServiceOptions(); - } - Options.MergeFrom(other.Options); - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - method_.AddEntriesFrom(input, _repeated_method_codec); - break; - } - case 26: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.ServiceOptions(); - } - input.ReadMessage(Options); - break; - } - } - } - } - - } - - /// - /// Describes a method of a service. - /// - internal sealed partial class MethodDescriptorProto : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MethodDescriptorProto()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[9]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodDescriptorProto() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodDescriptorProto(MethodDescriptorProto other) : this() { - _hasBits0 = other._hasBits0; - name_ = other.name_; - inputType_ = other.inputType_; - outputType_ = other.outputType_; - options_ = other.HasOptions ? other.options_.Clone() : null; - clientStreaming_ = other.clientStreaming_; - serverStreaming_ = other.serverStreaming_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodDescriptorProto Clone() { - return new MethodDescriptorProto(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private readonly static string NameDefaultValue = ""; - - private string name_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_ ?? NameDefaultValue; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasName { - get { return name_ != null; } - } - /// Clears the value of the "name" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearName() { - name_ = null; - } - - /// Field number for the "input_type" field. - public const int InputTypeFieldNumber = 2; - private readonly static string InputTypeDefaultValue = ""; - - private string inputType_; - /// - /// Input and output type names. These are resolved in the same way as - /// FieldDescriptorProto.type_name, but must refer to a message type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string InputType { - get { return inputType_ ?? InputTypeDefaultValue; } - set { - inputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "input_type" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasInputType { - get { return inputType_ != null; } - } - /// Clears the value of the "input_type" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearInputType() { - inputType_ = null; - } - - /// Field number for the "output_type" field. - public const int OutputTypeFieldNumber = 3; - private readonly static string OutputTypeDefaultValue = ""; - - private string outputType_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string OutputType { - get { return outputType_ ?? OutputTypeDefaultValue; } - set { - outputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "output_type" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOutputType { - get { return outputType_ != null; } - } - /// Clears the value of the "output_type" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOutputType() { - outputType_ = null; - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 4; - private global::Google.Protobuf.Reflection.MethodOptions options_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.MethodOptions Options { - get { return options_; } - set { - options_ = value; - } - } - /// Gets whether the options field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptions { - get { return options_ != null; } - } - /// Clears the value of the options field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptions() { - options_ = null; - } - - /// Field number for the "client_streaming" field. - public const int ClientStreamingFieldNumber = 5; - private readonly static bool ClientStreamingDefaultValue = false; - - private bool clientStreaming_; - /// - /// Identifies if client streams multiple client messages - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool ClientStreaming { - get { if ((_hasBits0 & 1) != 0) { return clientStreaming_; } else { return ClientStreamingDefaultValue; } } - set { - _hasBits0 |= 1; - clientStreaming_ = value; - } - } - /// Gets whether the "client_streaming" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasClientStreaming { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "client_streaming" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearClientStreaming() { - _hasBits0 &= ~1; - } - - /// Field number for the "server_streaming" field. - public const int ServerStreamingFieldNumber = 6; - private readonly static bool ServerStreamingDefaultValue = false; - - private bool serverStreaming_; - /// - /// Identifies if server streams multiple server messages - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool ServerStreaming { - get { if ((_hasBits0 & 2) != 0) { return serverStreaming_; } else { return ServerStreamingDefaultValue; } } - set { - _hasBits0 |= 2; - serverStreaming_ = value; - } - } - /// Gets whether the "server_streaming" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasServerStreaming { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "server_streaming" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearServerStreaming() { - _hasBits0 &= ~2; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MethodDescriptorProto); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MethodDescriptorProto other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (InputType != other.InputType) return false; - if (OutputType != other.OutputType) return false; - if (!object.Equals(Options, other.Options)) return false; - if (ClientStreaming != other.ClientStreaming) return false; - if (ServerStreaming != other.ServerStreaming) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasName) hash ^= Name.GetHashCode(); - if (HasInputType) hash ^= InputType.GetHashCode(); - if (HasOutputType) hash ^= OutputType.GetHashCode(); - if (HasOptions) hash ^= Options.GetHashCode(); - if (HasClientStreaming) hash ^= ClientStreaming.GetHashCode(); - if (HasServerStreaming) hash ^= ServerStreaming.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasName) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (HasInputType) { - output.WriteRawTag(18); - output.WriteString(InputType); - } - if (HasOutputType) { - output.WriteRawTag(26); - output.WriteString(OutputType); - } - if (HasOptions) { - output.WriteRawTag(34); - output.WriteMessage(Options); - } - if (HasClientStreaming) { - output.WriteRawTag(40); - output.WriteBool(ClientStreaming); - } - if (HasServerStreaming) { - output.WriteRawTag(48); - output.WriteBool(ServerStreaming); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasName) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (HasInputType) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(InputType); - } - if (HasOutputType) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(OutputType); - } - if (HasOptions) { - size += 1 + pb::CodedOutputStream.ComputeMessageSize(Options); - } - if (HasClientStreaming) { - size += 1 + 1; - } - if (HasServerStreaming) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MethodDescriptorProto other) { - if (other == null) { - return; - } - if (other.HasName) { - Name = other.Name; - } - if (other.HasInputType) { - InputType = other.InputType; - } - if (other.HasOutputType) { - OutputType = other.OutputType; - } - if (other.HasOptions) { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.MethodOptions(); - } - Options.MergeFrom(other.Options); - } - if (other.HasClientStreaming) { - ClientStreaming = other.ClientStreaming; - } - if (other.HasServerStreaming) { - ServerStreaming = other.ServerStreaming; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - InputType = input.ReadString(); - break; - } - case 26: { - OutputType = input.ReadString(); - break; - } - case 34: { - if (!HasOptions) { - Options = new global::Google.Protobuf.Reflection.MethodOptions(); - } - input.ReadMessage(Options); - break; - } - case 40: { - ClientStreaming = input.ReadBool(); - break; - } - case 48: { - ServerStreaming = input.ReadBool(); - break; - } - } - } - } - - } - - internal sealed partial class FileOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FileOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[10]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileOptions(FileOptions other) : this() { - _hasBits0 = other._hasBits0; - javaPackage_ = other.javaPackage_; - javaOuterClassname_ = other.javaOuterClassname_; - javaMultipleFiles_ = other.javaMultipleFiles_; - javaGenerateEqualsAndHash_ = other.javaGenerateEqualsAndHash_; - javaStringCheckUtf8_ = other.javaStringCheckUtf8_; - optimizeFor_ = other.optimizeFor_; - goPackage_ = other.goPackage_; - ccGenericServices_ = other.ccGenericServices_; - javaGenericServices_ = other.javaGenericServices_; - pyGenericServices_ = other.pyGenericServices_; - phpGenericServices_ = other.phpGenericServices_; - deprecated_ = other.deprecated_; - ccEnableArenas_ = other.ccEnableArenas_; - objcClassPrefix_ = other.objcClassPrefix_; - csharpNamespace_ = other.csharpNamespace_; - swiftPrefix_ = other.swiftPrefix_; - phpClassPrefix_ = other.phpClassPrefix_; - phpNamespace_ = other.phpNamespace_; - phpMetadataNamespace_ = other.phpMetadataNamespace_; - rubyPackage_ = other.rubyPackage_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FileOptions Clone() { - return new FileOptions(this); - } - - /// Field number for the "java_package" field. - public const int JavaPackageFieldNumber = 1; - private readonly static string JavaPackageDefaultValue = ""; - - private string javaPackage_; - /// - /// Sets the Java package where classes generated from this .proto will be - /// placed. By default, the proto package is used, but this is often - /// inappropriate because proto packages do not normally start with backwards - /// domain names. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JavaPackage { - get { return javaPackage_ ?? JavaPackageDefaultValue; } - set { - javaPackage_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "java_package" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaPackage { - get { return javaPackage_ != null; } - } - /// Clears the value of the "java_package" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaPackage() { - javaPackage_ = null; - } - - /// Field number for the "java_outer_classname" field. - public const int JavaOuterClassnameFieldNumber = 8; - private readonly static string JavaOuterClassnameDefaultValue = ""; - - private string javaOuterClassname_; - /// - /// If set, all the classes from the .proto file are wrapped in a single - /// outer class with the given name. This applies to both Proto1 - /// (equivalent to the old "--one_java_file" option) and Proto2 (where - /// a .proto always translates to a single class, but you may want to - /// explicitly choose the class name). - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JavaOuterClassname { - get { return javaOuterClassname_ ?? JavaOuterClassnameDefaultValue; } - set { - javaOuterClassname_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "java_outer_classname" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaOuterClassname { - get { return javaOuterClassname_ != null; } - } - /// Clears the value of the "java_outer_classname" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaOuterClassname() { - javaOuterClassname_ = null; - } - - /// Field number for the "java_multiple_files" field. - public const int JavaMultipleFilesFieldNumber = 10; - private readonly static bool JavaMultipleFilesDefaultValue = false; - - private bool javaMultipleFiles_; - /// - /// If set true, then the Java code generator will generate a separate .java - /// file for each top-level message, enum, and service defined in the .proto - /// file. Thus, these types will *not* be nested inside the outer class - /// named by java_outer_classname. However, the outer class will still be - /// generated to contain the file's getDescriptor() method as well as any - /// top-level extensions defined in the file. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool JavaMultipleFiles { - get { if ((_hasBits0 & 2) != 0) { return javaMultipleFiles_; } else { return JavaMultipleFilesDefaultValue; } } - set { - _hasBits0 |= 2; - javaMultipleFiles_ = value; - } - } - /// Gets whether the "java_multiple_files" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaMultipleFiles { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "java_multiple_files" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaMultipleFiles() { - _hasBits0 &= ~2; - } - - /// Field number for the "java_generate_equals_and_hash" field. - public const int JavaGenerateEqualsAndHashFieldNumber = 20; - private readonly static bool JavaGenerateEqualsAndHashDefaultValue = false; - - private bool javaGenerateEqualsAndHash_; - /// - /// This option does nothing. - /// - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool JavaGenerateEqualsAndHash { - get { if ((_hasBits0 & 32) != 0) { return javaGenerateEqualsAndHash_; } else { return JavaGenerateEqualsAndHashDefaultValue; } } - set { - _hasBits0 |= 32; - javaGenerateEqualsAndHash_ = value; - } - } - /// Gets whether the "java_generate_equals_and_hash" field is set - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaGenerateEqualsAndHash { - get { return (_hasBits0 & 32) != 0; } - } - /// Clears the value of the "java_generate_equals_and_hash" field - [global::System.ObsoleteAttribute] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaGenerateEqualsAndHash() { - _hasBits0 &= ~32; - } - - /// Field number for the "java_string_check_utf8" field. - public const int JavaStringCheckUtf8FieldNumber = 27; - private readonly static bool JavaStringCheckUtf8DefaultValue = false; - - private bool javaStringCheckUtf8_; - /// - /// If set true, then the Java2 code generator will generate code that - /// throws an exception whenever an attempt is made to assign a non-UTF-8 - /// byte sequence to a string field. - /// Message reflection will do the same. - /// However, an extension field still accepts non-UTF-8 byte sequences. - /// This option has no effect on when used with the lite runtime. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool JavaStringCheckUtf8 { - get { if ((_hasBits0 & 128) != 0) { return javaStringCheckUtf8_; } else { return JavaStringCheckUtf8DefaultValue; } } - set { - _hasBits0 |= 128; - javaStringCheckUtf8_ = value; - } - } - /// Gets whether the "java_string_check_utf8" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaStringCheckUtf8 { - get { return (_hasBits0 & 128) != 0; } - } - /// Clears the value of the "java_string_check_utf8" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaStringCheckUtf8() { - _hasBits0 &= ~128; - } - - /// Field number for the "optimize_for" field. - public const int OptimizeForFieldNumber = 9; - private readonly static global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeForDefaultValue = global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode.Speed; - - private global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode optimizeFor_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode OptimizeFor { - get { if ((_hasBits0 & 1) != 0) { return optimizeFor_; } else { return OptimizeForDefaultValue; } } - set { - _hasBits0 |= 1; - optimizeFor_ = value; - } - } - /// Gets whether the "optimize_for" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasOptimizeFor { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "optimize_for" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearOptimizeFor() { - _hasBits0 &= ~1; - } - - /// Field number for the "go_package" field. - public const int GoPackageFieldNumber = 11; - private readonly static string GoPackageDefaultValue = ""; - - private string goPackage_; - /// - /// Sets the Go package where structs generated from this .proto will be - /// placed. If omitted, the Go package will be derived from the following: - /// - The basename of the package import path, if provided. - /// - Otherwise, the package statement in the .proto file, if present. - /// - Otherwise, the basename of the .proto file, without extension. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string GoPackage { - get { return goPackage_ ?? GoPackageDefaultValue; } - set { - goPackage_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "go_package" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasGoPackage { - get { return goPackage_ != null; } - } - /// Clears the value of the "go_package" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearGoPackage() { - goPackage_ = null; - } - - /// Field number for the "cc_generic_services" field. - public const int CcGenericServicesFieldNumber = 16; - private readonly static bool CcGenericServicesDefaultValue = false; - - private bool ccGenericServices_; - /// - /// Should generic services be generated in each language? "Generic" services - /// are not specific to any particular RPC system. They are generated by the - /// main code generators in each language (without additional plugins). - /// Generic services were the only kind of service generation supported by - /// early versions of google.protobuf. - /// - /// Generic services are now considered deprecated in favor of using plugins - /// that generate code specific to your particular RPC system. Therefore, - /// these default to false. Old code which depends on generic services should - /// explicitly set them to true. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool CcGenericServices { - get { if ((_hasBits0 & 4) != 0) { return ccGenericServices_; } else { return CcGenericServicesDefaultValue; } } - set { - _hasBits0 |= 4; - ccGenericServices_ = value; - } - } - /// Gets whether the "cc_generic_services" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasCcGenericServices { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "cc_generic_services" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearCcGenericServices() { - _hasBits0 &= ~4; - } - - /// Field number for the "java_generic_services" field. - public const int JavaGenericServicesFieldNumber = 17; - private readonly static bool JavaGenericServicesDefaultValue = false; - - private bool javaGenericServices_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool JavaGenericServices { - get { if ((_hasBits0 & 8) != 0) { return javaGenericServices_; } else { return JavaGenericServicesDefaultValue; } } - set { - _hasBits0 |= 8; - javaGenericServices_ = value; - } - } - /// Gets whether the "java_generic_services" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJavaGenericServices { - get { return (_hasBits0 & 8) != 0; } - } - /// Clears the value of the "java_generic_services" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJavaGenericServices() { - _hasBits0 &= ~8; - } - - /// Field number for the "py_generic_services" field. - public const int PyGenericServicesFieldNumber = 18; - private readonly static bool PyGenericServicesDefaultValue = false; - - private bool pyGenericServices_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool PyGenericServices { - get { if ((_hasBits0 & 16) != 0) { return pyGenericServices_; } else { return PyGenericServicesDefaultValue; } } - set { - _hasBits0 |= 16; - pyGenericServices_ = value; - } - } - /// Gets whether the "py_generic_services" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPyGenericServices { - get { return (_hasBits0 & 16) != 0; } - } - /// Clears the value of the "py_generic_services" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPyGenericServices() { - _hasBits0 &= ~16; - } - - /// Field number for the "php_generic_services" field. - public const int PhpGenericServicesFieldNumber = 42; - private readonly static bool PhpGenericServicesDefaultValue = false; - - private bool phpGenericServices_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool PhpGenericServices { - get { if ((_hasBits0 & 512) != 0) { return phpGenericServices_; } else { return PhpGenericServicesDefaultValue; } } - set { - _hasBits0 |= 512; - phpGenericServices_ = value; - } - } - /// Gets whether the "php_generic_services" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPhpGenericServices { - get { return (_hasBits0 & 512) != 0; } - } - /// Clears the value of the "php_generic_services" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPhpGenericServices() { - _hasBits0 &= ~512; - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 23; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this file deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for everything in the file, or it will be completely ignored; in the very - /// least, this is a formalization for deprecating files. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 64) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 64; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 64) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~64; - } - - /// Field number for the "cc_enable_arenas" field. - public const int CcEnableArenasFieldNumber = 31; - private readonly static bool CcEnableArenasDefaultValue = false; - - private bool ccEnableArenas_; - /// - /// Enables the use of arenas for the proto messages in this file. This applies - /// only to generated classes for C++. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool CcEnableArenas { - get { if ((_hasBits0 & 256) != 0) { return ccEnableArenas_; } else { return CcEnableArenasDefaultValue; } } - set { - _hasBits0 |= 256; - ccEnableArenas_ = value; - } - } - /// Gets whether the "cc_enable_arenas" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasCcEnableArenas { - get { return (_hasBits0 & 256) != 0; } - } - /// Clears the value of the "cc_enable_arenas" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearCcEnableArenas() { - _hasBits0 &= ~256; - } - - /// Field number for the "objc_class_prefix" field. - public const int ObjcClassPrefixFieldNumber = 36; - private readonly static string ObjcClassPrefixDefaultValue = ""; - - private string objcClassPrefix_; - /// - /// Sets the objective c class prefix which is prepended to all objective c - /// generated classes from this .proto. There is no default. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string ObjcClassPrefix { - get { return objcClassPrefix_ ?? ObjcClassPrefixDefaultValue; } - set { - objcClassPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "objc_class_prefix" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasObjcClassPrefix { - get { return objcClassPrefix_ != null; } - } - /// Clears the value of the "objc_class_prefix" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearObjcClassPrefix() { - objcClassPrefix_ = null; - } - - /// Field number for the "csharp_namespace" field. - public const int CsharpNamespaceFieldNumber = 37; - private readonly static string CsharpNamespaceDefaultValue = ""; - - private string csharpNamespace_; - /// - /// Namespace for generated classes; defaults to the package. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string CsharpNamespace { - get { return csharpNamespace_ ?? CsharpNamespaceDefaultValue; } - set { - csharpNamespace_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "csharp_namespace" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasCsharpNamespace { - get { return csharpNamespace_ != null; } - } - /// Clears the value of the "csharp_namespace" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearCsharpNamespace() { - csharpNamespace_ = null; - } - - /// Field number for the "swift_prefix" field. - public const int SwiftPrefixFieldNumber = 39; - private readonly static string SwiftPrefixDefaultValue = ""; - - private string swiftPrefix_; - /// - /// By default Swift generators will take the proto package and CamelCase it - /// replacing '.' with underscore and use that to prefix the types/symbols - /// defined. When this options is provided, they will use this value instead - /// to prefix the types/symbols defined. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string SwiftPrefix { - get { return swiftPrefix_ ?? SwiftPrefixDefaultValue; } - set { - swiftPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "swift_prefix" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasSwiftPrefix { - get { return swiftPrefix_ != null; } - } - /// Clears the value of the "swift_prefix" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearSwiftPrefix() { - swiftPrefix_ = null; - } - - /// Field number for the "php_class_prefix" field. - public const int PhpClassPrefixFieldNumber = 40; - private readonly static string PhpClassPrefixDefaultValue = ""; - - private string phpClassPrefix_; - /// - /// Sets the php class prefix which is prepended to all php generated classes - /// from this .proto. Default is empty. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string PhpClassPrefix { - get { return phpClassPrefix_ ?? PhpClassPrefixDefaultValue; } - set { - phpClassPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "php_class_prefix" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPhpClassPrefix { - get { return phpClassPrefix_ != null; } - } - /// Clears the value of the "php_class_prefix" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPhpClassPrefix() { - phpClassPrefix_ = null; - } - - /// Field number for the "php_namespace" field. - public const int PhpNamespaceFieldNumber = 41; - private readonly static string PhpNamespaceDefaultValue = ""; - - private string phpNamespace_; - /// - /// Use this option to change the namespace of php generated classes. Default - /// is empty. When this option is empty, the package name will be used for - /// determining the namespace. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string PhpNamespace { - get { return phpNamespace_ ?? PhpNamespaceDefaultValue; } - set { - phpNamespace_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "php_namespace" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPhpNamespace { - get { return phpNamespace_ != null; } - } - /// Clears the value of the "php_namespace" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPhpNamespace() { - phpNamespace_ = null; - } - - /// Field number for the "php_metadata_namespace" field. - public const int PhpMetadataNamespaceFieldNumber = 44; - private readonly static string PhpMetadataNamespaceDefaultValue = ""; - - private string phpMetadataNamespace_; - /// - /// Use this option to change the namespace of php generated metadata classes. - /// Default is empty. When this option is empty, the proto file name will be - /// used for determining the namespace. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string PhpMetadataNamespace { - get { return phpMetadataNamespace_ ?? PhpMetadataNamespaceDefaultValue; } - set { - phpMetadataNamespace_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "php_metadata_namespace" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPhpMetadataNamespace { - get { return phpMetadataNamespace_ != null; } - } - /// Clears the value of the "php_metadata_namespace" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPhpMetadataNamespace() { - phpMetadataNamespace_ = null; - } - - /// Field number for the "ruby_package" field. - public const int RubyPackageFieldNumber = 45; - private readonly static string RubyPackageDefaultValue = ""; - - private string rubyPackage_; - /// - /// Use this option to change the package of ruby generated classes. Default - /// is empty. When this option is not set, the package name will be used for - /// determining the ruby package. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string RubyPackage { - get { return rubyPackage_ ?? RubyPackageDefaultValue; } - set { - rubyPackage_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "ruby_package" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasRubyPackage { - get { return rubyPackage_ != null; } - } - /// Clears the value of the "ruby_package" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearRubyPackage() { - rubyPackage_ = null; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. - /// See the documentation for the "Options" section above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FileOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FileOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (JavaPackage != other.JavaPackage) return false; - if (JavaOuterClassname != other.JavaOuterClassname) return false; - if (JavaMultipleFiles != other.JavaMultipleFiles) return false; - if (JavaGenerateEqualsAndHash != other.JavaGenerateEqualsAndHash) return false; - if (JavaStringCheckUtf8 != other.JavaStringCheckUtf8) return false; - if (OptimizeFor != other.OptimizeFor) return false; - if (GoPackage != other.GoPackage) return false; - if (CcGenericServices != other.CcGenericServices) return false; - if (JavaGenericServices != other.JavaGenericServices) return false; - if (PyGenericServices != other.PyGenericServices) return false; - if (PhpGenericServices != other.PhpGenericServices) return false; - if (Deprecated != other.Deprecated) return false; - if (CcEnableArenas != other.CcEnableArenas) return false; - if (ObjcClassPrefix != other.ObjcClassPrefix) return false; - if (CsharpNamespace != other.CsharpNamespace) return false; - if (SwiftPrefix != other.SwiftPrefix) return false; - if (PhpClassPrefix != other.PhpClassPrefix) return false; - if (PhpNamespace != other.PhpNamespace) return false; - if (PhpMetadataNamespace != other.PhpMetadataNamespace) return false; - if (RubyPackage != other.RubyPackage) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasJavaPackage) hash ^= JavaPackage.GetHashCode(); - if (HasJavaOuterClassname) hash ^= JavaOuterClassname.GetHashCode(); - if (HasJavaMultipleFiles) hash ^= JavaMultipleFiles.GetHashCode(); - if (HasJavaGenerateEqualsAndHash) hash ^= JavaGenerateEqualsAndHash.GetHashCode(); - if (HasJavaStringCheckUtf8) hash ^= JavaStringCheckUtf8.GetHashCode(); - if (HasOptimizeFor) hash ^= OptimizeFor.GetHashCode(); - if (HasGoPackage) hash ^= GoPackage.GetHashCode(); - if (HasCcGenericServices) hash ^= CcGenericServices.GetHashCode(); - if (HasJavaGenericServices) hash ^= JavaGenericServices.GetHashCode(); - if (HasPyGenericServices) hash ^= PyGenericServices.GetHashCode(); - if (HasPhpGenericServices) hash ^= PhpGenericServices.GetHashCode(); - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - if (HasCcEnableArenas) hash ^= CcEnableArenas.GetHashCode(); - if (HasObjcClassPrefix) hash ^= ObjcClassPrefix.GetHashCode(); - if (HasCsharpNamespace) hash ^= CsharpNamespace.GetHashCode(); - if (HasSwiftPrefix) hash ^= SwiftPrefix.GetHashCode(); - if (HasPhpClassPrefix) hash ^= PhpClassPrefix.GetHashCode(); - if (HasPhpNamespace) hash ^= PhpNamespace.GetHashCode(); - if (HasPhpMetadataNamespace) hash ^= PhpMetadataNamespace.GetHashCode(); - if (HasRubyPackage) hash ^= RubyPackage.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasJavaPackage) { - output.WriteRawTag(10); - output.WriteString(JavaPackage); - } - if (HasJavaOuterClassname) { - output.WriteRawTag(66); - output.WriteString(JavaOuterClassname); - } - if (HasOptimizeFor) { - output.WriteRawTag(72); - output.WriteEnum((int) OptimizeFor); - } - if (HasJavaMultipleFiles) { - output.WriteRawTag(80); - output.WriteBool(JavaMultipleFiles); - } - if (HasGoPackage) { - output.WriteRawTag(90); - output.WriteString(GoPackage); - } - if (HasCcGenericServices) { - output.WriteRawTag(128, 1); - output.WriteBool(CcGenericServices); - } - if (HasJavaGenericServices) { - output.WriteRawTag(136, 1); - output.WriteBool(JavaGenericServices); - } - if (HasPyGenericServices) { - output.WriteRawTag(144, 1); - output.WriteBool(PyGenericServices); - } - if (HasJavaGenerateEqualsAndHash) { - output.WriteRawTag(160, 1); - output.WriteBool(JavaGenerateEqualsAndHash); - } - if (HasDeprecated) { - output.WriteRawTag(184, 1); - output.WriteBool(Deprecated); - } - if (HasJavaStringCheckUtf8) { - output.WriteRawTag(216, 1); - output.WriteBool(JavaStringCheckUtf8); - } - if (HasCcEnableArenas) { - output.WriteRawTag(248, 1); - output.WriteBool(CcEnableArenas); - } - if (HasObjcClassPrefix) { - output.WriteRawTag(162, 2); - output.WriteString(ObjcClassPrefix); - } - if (HasCsharpNamespace) { - output.WriteRawTag(170, 2); - output.WriteString(CsharpNamespace); - } - if (HasSwiftPrefix) { - output.WriteRawTag(186, 2); - output.WriteString(SwiftPrefix); - } - if (HasPhpClassPrefix) { - output.WriteRawTag(194, 2); - output.WriteString(PhpClassPrefix); - } - if (HasPhpNamespace) { - output.WriteRawTag(202, 2); - output.WriteString(PhpNamespace); - } - if (HasPhpGenericServices) { - output.WriteRawTag(208, 2); - output.WriteBool(PhpGenericServices); - } - if (HasPhpMetadataNamespace) { - output.WriteRawTag(226, 2); - output.WriteString(PhpMetadataNamespace); - } - if (HasRubyPackage) { - output.WriteRawTag(234, 2); - output.WriteString(RubyPackage); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasJavaPackage) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaPackage); - } - if (HasJavaOuterClassname) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JavaOuterClassname); - } - if (HasJavaMultipleFiles) { - size += 1 + 1; - } - if (HasJavaGenerateEqualsAndHash) { - size += 2 + 1; - } - if (HasJavaStringCheckUtf8) { - size += 2 + 1; - } - if (HasOptimizeFor) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) OptimizeFor); - } - if (HasGoPackage) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(GoPackage); - } - if (HasCcGenericServices) { - size += 2 + 1; - } - if (HasJavaGenericServices) { - size += 2 + 1; - } - if (HasPyGenericServices) { - size += 2 + 1; - } - if (HasPhpGenericServices) { - size += 2 + 1; - } - if (HasDeprecated) { - size += 2 + 1; - } - if (HasCcEnableArenas) { - size += 2 + 1; - } - if (HasObjcClassPrefix) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(ObjcClassPrefix); - } - if (HasCsharpNamespace) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(CsharpNamespace); - } - if (HasSwiftPrefix) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(SwiftPrefix); - } - if (HasPhpClassPrefix) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(PhpClassPrefix); - } - if (HasPhpNamespace) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(PhpNamespace); - } - if (HasPhpMetadataNamespace) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(PhpMetadataNamespace); - } - if (HasRubyPackage) { - size += 2 + pb::CodedOutputStream.ComputeStringSize(RubyPackage); - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FileOptions other) { - if (other == null) { - return; - } - if (other.HasJavaPackage) { - JavaPackage = other.JavaPackage; - } - if (other.HasJavaOuterClassname) { - JavaOuterClassname = other.JavaOuterClassname; - } - if (other.HasJavaMultipleFiles) { - JavaMultipleFiles = other.JavaMultipleFiles; - } - if (other.HasJavaGenerateEqualsAndHash) { - JavaGenerateEqualsAndHash = other.JavaGenerateEqualsAndHash; - } - if (other.HasJavaStringCheckUtf8) { - JavaStringCheckUtf8 = other.JavaStringCheckUtf8; - } - if (other.HasOptimizeFor) { - OptimizeFor = other.OptimizeFor; - } - if (other.HasGoPackage) { - GoPackage = other.GoPackage; - } - if (other.HasCcGenericServices) { - CcGenericServices = other.CcGenericServices; - } - if (other.HasJavaGenericServices) { - JavaGenericServices = other.JavaGenericServices; - } - if (other.HasPyGenericServices) { - PyGenericServices = other.PyGenericServices; - } - if (other.HasPhpGenericServices) { - PhpGenericServices = other.PhpGenericServices; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - if (other.HasCcEnableArenas) { - CcEnableArenas = other.CcEnableArenas; - } - if (other.HasObjcClassPrefix) { - ObjcClassPrefix = other.ObjcClassPrefix; - } - if (other.HasCsharpNamespace) { - CsharpNamespace = other.CsharpNamespace; - } - if (other.HasSwiftPrefix) { - SwiftPrefix = other.SwiftPrefix; - } - if (other.HasPhpClassPrefix) { - PhpClassPrefix = other.PhpClassPrefix; - } - if (other.HasPhpNamespace) { - PhpNamespace = other.PhpNamespace; - } - if (other.HasPhpMetadataNamespace) { - PhpMetadataNamespace = other.PhpMetadataNamespace; - } - if (other.HasRubyPackage) { - RubyPackage = other.RubyPackage; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 10: { - JavaPackage = input.ReadString(); - break; - } - case 66: { - JavaOuterClassname = input.ReadString(); - break; - } - case 72: { - OptimizeFor = (global::Google.Protobuf.Reflection.FileOptions.Types.OptimizeMode) input.ReadEnum(); - break; - } - case 80: { - JavaMultipleFiles = input.ReadBool(); - break; - } - case 90: { - GoPackage = input.ReadString(); - break; - } - case 128: { - CcGenericServices = input.ReadBool(); - break; - } - case 136: { - JavaGenericServices = input.ReadBool(); - break; - } - case 144: { - PyGenericServices = input.ReadBool(); - break; - } - case 160: { - JavaGenerateEqualsAndHash = input.ReadBool(); - break; - } - case 184: { - Deprecated = input.ReadBool(); - break; - } - case 216: { - JavaStringCheckUtf8 = input.ReadBool(); - break; - } - case 248: { - CcEnableArenas = input.ReadBool(); - break; - } - case 290: { - ObjcClassPrefix = input.ReadString(); - break; - } - case 298: { - CsharpNamespace = input.ReadString(); - break; - } - case 314: { - SwiftPrefix = input.ReadString(); - break; - } - case 322: { - PhpClassPrefix = input.ReadString(); - break; - } - case 330: { - PhpNamespace = input.ReadString(); - break; - } - case 336: { - PhpGenericServices = input.ReadBool(); - break; - } - case 354: { - PhpMetadataNamespace = input.ReadString(); - break; - } - case 362: { - RubyPackage = input.ReadString(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - #region Nested types - /// Container for nested types declared in the FileOptions message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Generated classes can be optimized for speed or code size. - /// - internal enum OptimizeMode { - /// - /// Generate complete code for parsing, serialization, - /// - [pbr::OriginalName("SPEED")] Speed = 1, - /// - /// etc. - /// - [pbr::OriginalName("CODE_SIZE")] CodeSize = 2, - /// - /// Generate code using MessageLite and the lite runtime. - /// - [pbr::OriginalName("LITE_RUNTIME")] LiteRuntime = 3, - } - - } - #endregion - - } - - internal sealed partial class MessageOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MessageOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[11]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageOptions(MessageOptions other) : this() { - _hasBits0 = other._hasBits0; - messageSetWireFormat_ = other.messageSetWireFormat_; - noStandardDescriptorAccessor_ = other.noStandardDescriptorAccessor_; - deprecated_ = other.deprecated_; - mapEntry_ = other.mapEntry_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MessageOptions Clone() { - return new MessageOptions(this); - } - - /// Field number for the "message_set_wire_format" field. - public const int MessageSetWireFormatFieldNumber = 1; - private readonly static bool MessageSetWireFormatDefaultValue = false; - - private bool messageSetWireFormat_; - /// - /// Set true to use the old proto1 MessageSet wire format for extensions. - /// This is provided for backwards-compatibility with the MessageSet wire - /// format. You should not use this for any other reason: It's less - /// efficient, has fewer features, and is more complicated. - /// - /// The message must be defined exactly as follows: - /// message Foo { - /// option message_set_wire_format = true; - /// extensions 4 to max; - /// } - /// Note that the message cannot have any defined fields; MessageSets only - /// have extensions. - /// - /// All extensions of your type must be singular messages; e.g. they cannot - /// be int32s, enums, or repeated messages. - /// - /// Because this is an option, the above two restrictions are not enforced by - /// the protocol compiler. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool MessageSetWireFormat { - get { if ((_hasBits0 & 1) != 0) { return messageSetWireFormat_; } else { return MessageSetWireFormatDefaultValue; } } - set { - _hasBits0 |= 1; - messageSetWireFormat_ = value; - } - } - /// Gets whether the "message_set_wire_format" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasMessageSetWireFormat { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "message_set_wire_format" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearMessageSetWireFormat() { - _hasBits0 &= ~1; - } - - /// Field number for the "no_standard_descriptor_accessor" field. - public const int NoStandardDescriptorAccessorFieldNumber = 2; - private readonly static bool NoStandardDescriptorAccessorDefaultValue = false; - - private bool noStandardDescriptorAccessor_; - /// - /// Disables the generation of the standard "descriptor()" accessor, which can - /// conflict with a field of the same name. This is meant to make migration - /// from proto1 easier; new code should avoid fields named "descriptor". - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool NoStandardDescriptorAccessor { - get { if ((_hasBits0 & 2) != 0) { return noStandardDescriptorAccessor_; } else { return NoStandardDescriptorAccessorDefaultValue; } } - set { - _hasBits0 |= 2; - noStandardDescriptorAccessor_ = value; - } - } - /// Gets whether the "no_standard_descriptor_accessor" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasNoStandardDescriptorAccessor { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "no_standard_descriptor_accessor" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearNoStandardDescriptorAccessor() { - _hasBits0 &= ~2; - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 3; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this message deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for the message, or it will be completely ignored; in the very least, - /// this is a formalization for deprecating messages. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 4) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 4; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~4; - } - - /// Field number for the "map_entry" field. - public const int MapEntryFieldNumber = 7; - private readonly static bool MapEntryDefaultValue = false; - - private bool mapEntry_; - /// - /// Whether the message is an automatically generated map entry type for the - /// maps field. - /// - /// For maps fields: - /// map<KeyType, ValueType> map_field = 1; - /// The parsed descriptor looks like: - /// message MapFieldEntry { - /// option map_entry = true; - /// optional KeyType key = 1; - /// optional ValueType value = 2; - /// } - /// repeated MapFieldEntry map_field = 1; - /// - /// Implementations may choose not to generate the map_entry=true message, but - /// use a native map in the target language to hold the keys and values. - /// The reflection APIs in such implementations still need to work as - /// if the field is a repeated message field. - /// - /// NOTE: Do not set the option in .proto files. Always use the maps syntax - /// instead. The option should only be implicitly set by the proto compiler - /// parser. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool MapEntry { - get { if ((_hasBits0 & 8) != 0) { return mapEntry_; } else { return MapEntryDefaultValue; } } - set { - _hasBits0 |= 8; - mapEntry_ = value; - } - } - /// Gets whether the "map_entry" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasMapEntry { - get { return (_hasBits0 & 8) != 0; } - } - /// Clears the value of the "map_entry" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearMapEntry() { - _hasBits0 &= ~8; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MessageOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MessageOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (MessageSetWireFormat != other.MessageSetWireFormat) return false; - if (NoStandardDescriptorAccessor != other.NoStandardDescriptorAccessor) return false; - if (Deprecated != other.Deprecated) return false; - if (MapEntry != other.MapEntry) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasMessageSetWireFormat) hash ^= MessageSetWireFormat.GetHashCode(); - if (HasNoStandardDescriptorAccessor) hash ^= NoStandardDescriptorAccessor.GetHashCode(); - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - if (HasMapEntry) hash ^= MapEntry.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasMessageSetWireFormat) { - output.WriteRawTag(8); - output.WriteBool(MessageSetWireFormat); - } - if (HasNoStandardDescriptorAccessor) { - output.WriteRawTag(16); - output.WriteBool(NoStandardDescriptorAccessor); - } - if (HasDeprecated) { - output.WriteRawTag(24); - output.WriteBool(Deprecated); - } - if (HasMapEntry) { - output.WriteRawTag(56); - output.WriteBool(MapEntry); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasMessageSetWireFormat) { - size += 1 + 1; - } - if (HasNoStandardDescriptorAccessor) { - size += 1 + 1; - } - if (HasDeprecated) { - size += 1 + 1; - } - if (HasMapEntry) { - size += 1 + 1; - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MessageOptions other) { - if (other == null) { - return; - } - if (other.HasMessageSetWireFormat) { - MessageSetWireFormat = other.MessageSetWireFormat; - } - if (other.HasNoStandardDescriptorAccessor) { - NoStandardDescriptorAccessor = other.NoStandardDescriptorAccessor; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - if (other.HasMapEntry) { - MapEntry = other.MapEntry; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 8: { - MessageSetWireFormat = input.ReadBool(); - break; - } - case 16: { - NoStandardDescriptorAccessor = input.ReadBool(); - break; - } - case 24: { - Deprecated = input.ReadBool(); - break; - } - case 56: { - MapEntry = input.ReadBool(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - internal sealed partial class FieldOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FieldOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[12]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldOptions(FieldOptions other) : this() { - _hasBits0 = other._hasBits0; - ctype_ = other.ctype_; - packed_ = other.packed_; - jstype_ = other.jstype_; - lazy_ = other.lazy_; - deprecated_ = other.deprecated_; - weak_ = other.weak_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldOptions Clone() { - return new FieldOptions(this); - } - - /// Field number for the "ctype" field. - public const int CtypeFieldNumber = 1; - private readonly static global::Google.Protobuf.Reflection.FieldOptions.Types.CType CtypeDefaultValue = global::Google.Protobuf.Reflection.FieldOptions.Types.CType.String; - - private global::Google.Protobuf.Reflection.FieldOptions.Types.CType ctype_; - /// - /// The ctype option instructs the C++ code generator to use a different - /// representation of the field than it normally would. See the specific - /// options below. This option is not yet implemented in the open source - /// release -- sorry, we'll try to include it in a future version! - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FieldOptions.Types.CType Ctype { - get { if ((_hasBits0 & 1) != 0) { return ctype_; } else { return CtypeDefaultValue; } } - set { - _hasBits0 |= 1; - ctype_ = value; - } - } - /// Gets whether the "ctype" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasCtype { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "ctype" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearCtype() { - _hasBits0 &= ~1; - } - - /// Field number for the "packed" field. - public const int PackedFieldNumber = 2; - private readonly static bool PackedDefaultValue = false; - - private bool packed_; - /// - /// The packed option can be enabled for repeated primitive fields to enable - /// a more efficient representation on the wire. Rather than repeatedly - /// writing the tag and type for each element, the entire array is encoded as - /// a single length-delimited blob. In proto3, only explicit setting it to - /// false will avoid using packed encoding. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Packed { - get { if ((_hasBits0 & 2) != 0) { return packed_; } else { return PackedDefaultValue; } } - set { - _hasBits0 |= 2; - packed_ = value; - } - } - /// Gets whether the "packed" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPacked { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "packed" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPacked() { - _hasBits0 &= ~2; - } - - /// Field number for the "jstype" field. - public const int JstypeFieldNumber = 6; - private readonly static global::Google.Protobuf.Reflection.FieldOptions.Types.JSType JstypeDefaultValue = global::Google.Protobuf.Reflection.FieldOptions.Types.JSType.JsNormal; - - private global::Google.Protobuf.Reflection.FieldOptions.Types.JSType jstype_; - /// - /// The jstype option determines the JavaScript type used for values of the - /// field. The option is permitted only for 64 bit integral and fixed types - /// (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING - /// is represented as JavaScript string, which avoids loss of precision that - /// can happen when a large value is converted to a floating point JavaScript. - /// Specifying JS_NUMBER for the jstype causes the generated JavaScript code to - /// use the JavaScript "number" type. The behavior of the default option - /// JS_NORMAL is implementation dependent. - /// - /// This option is an enum to permit additional types to be added, e.g. - /// goog.math.Integer. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.FieldOptions.Types.JSType Jstype { - get { if ((_hasBits0 & 16) != 0) { return jstype_; } else { return JstypeDefaultValue; } } - set { - _hasBits0 |= 16; - jstype_ = value; - } - } - /// Gets whether the "jstype" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasJstype { - get { return (_hasBits0 & 16) != 0; } - } - /// Clears the value of the "jstype" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearJstype() { - _hasBits0 &= ~16; - } - - /// Field number for the "lazy" field. - public const int LazyFieldNumber = 5; - private readonly static bool LazyDefaultValue = false; - - private bool lazy_; - /// - /// Should this field be parsed lazily? Lazy applies only to message-type - /// fields. It means that when the outer message is initially parsed, the - /// inner message's contents will not be parsed but instead stored in encoded - /// form. The inner message will actually be parsed when it is first accessed. - /// - /// This is only a hint. Implementations are free to choose whether to use - /// eager or lazy parsing regardless of the value of this option. However, - /// setting this option true suggests that the protocol author believes that - /// using lazy parsing on this field is worth the additional bookkeeping - /// overhead typically needed to implement it. - /// - /// This option does not affect the public interface of any generated code; - /// all method signatures remain the same. Furthermore, thread-safety of the - /// interface is not affected by this option; const methods remain safe to - /// call from multiple threads concurrently, while non-const methods continue - /// to require exclusive access. - /// - /// Note that implementations may choose not to check required fields within - /// a lazy sub-message. That is, calling IsInitialized() on the outer message - /// may return true even if the inner message has missing required fields. - /// This is necessary because otherwise the inner message would have to be - /// parsed in order to perform the check, defeating the purpose of lazy - /// parsing. An implementation which chooses not to check required fields - /// must be consistent about it. That is, for any particular sub-message, the - /// implementation must either *always* check its required fields, or *never* - /// check its required fields, regardless of whether or not the message has - /// been parsed. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Lazy { - get { if ((_hasBits0 & 8) != 0) { return lazy_; } else { return LazyDefaultValue; } } - set { - _hasBits0 |= 8; - lazy_ = value; - } - } - /// Gets whether the "lazy" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasLazy { - get { return (_hasBits0 & 8) != 0; } - } - /// Clears the value of the "lazy" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearLazy() { - _hasBits0 &= ~8; - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 3; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this field deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for accessors, or it will be completely ignored; in the very least, this - /// is a formalization for deprecating fields. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 4) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 4; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~4; - } - - /// Field number for the "weak" field. - public const int WeakFieldNumber = 10; - private readonly static bool WeakDefaultValue = false; - - private bool weak_; - /// - /// For Google-internal migration only. Do not use. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Weak { - get { if ((_hasBits0 & 32) != 0) { return weak_; } else { return WeakDefaultValue; } } - set { - _hasBits0 |= 32; - weak_ = value; - } - } - /// Gets whether the "weak" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasWeak { - get { return (_hasBits0 & 32) != 0; } - } - /// Clears the value of the "weak" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearWeak() { - _hasBits0 &= ~32; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FieldOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(FieldOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Ctype != other.Ctype) return false; - if (Packed != other.Packed) return false; - if (Jstype != other.Jstype) return false; - if (Lazy != other.Lazy) return false; - if (Deprecated != other.Deprecated) return false; - if (Weak != other.Weak) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasCtype) hash ^= Ctype.GetHashCode(); - if (HasPacked) hash ^= Packed.GetHashCode(); - if (HasJstype) hash ^= Jstype.GetHashCode(); - if (HasLazy) hash ^= Lazy.GetHashCode(); - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - if (HasWeak) hash ^= Weak.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasCtype) { - output.WriteRawTag(8); - output.WriteEnum((int) Ctype); - } - if (HasPacked) { - output.WriteRawTag(16); - output.WriteBool(Packed); - } - if (HasDeprecated) { - output.WriteRawTag(24); - output.WriteBool(Deprecated); - } - if (HasLazy) { - output.WriteRawTag(40); - output.WriteBool(Lazy); - } - if (HasJstype) { - output.WriteRawTag(48); - output.WriteEnum((int) Jstype); - } - if (HasWeak) { - output.WriteRawTag(80); - output.WriteBool(Weak); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasCtype) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Ctype); - } - if (HasPacked) { - size += 1 + 1; - } - if (HasJstype) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Jstype); - } - if (HasLazy) { - size += 1 + 1; - } - if (HasDeprecated) { - size += 1 + 1; - } - if (HasWeak) { - size += 1 + 1; - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FieldOptions other) { - if (other == null) { - return; - } - if (other.HasCtype) { - Ctype = other.Ctype; - } - if (other.HasPacked) { - Packed = other.Packed; - } - if (other.HasJstype) { - Jstype = other.Jstype; - } - if (other.HasLazy) { - Lazy = other.Lazy; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - if (other.HasWeak) { - Weak = other.Weak; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 8: { - Ctype = (global::Google.Protobuf.Reflection.FieldOptions.Types.CType) input.ReadEnum(); - break; - } - case 16: { - Packed = input.ReadBool(); - break; - } - case 24: { - Deprecated = input.ReadBool(); - break; - } - case 40: { - Lazy = input.ReadBool(); - break; - } - case 48: { - Jstype = (global::Google.Protobuf.Reflection.FieldOptions.Types.JSType) input.ReadEnum(); - break; - } - case 80: { - Weak = input.ReadBool(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - #region Nested types - /// Container for nested types declared in the FieldOptions message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - internal enum CType { - /// - /// Default mode. - /// - [pbr::OriginalName("STRING")] String = 0, - [pbr::OriginalName("CORD")] Cord = 1, - [pbr::OriginalName("STRING_PIECE")] StringPiece = 2, - } - - internal enum JSType { - /// - /// Use the default type. - /// - [pbr::OriginalName("JS_NORMAL")] JsNormal = 0, - /// - /// Use JavaScript strings. - /// - [pbr::OriginalName("JS_STRING")] JsString = 1, - /// - /// Use JavaScript numbers. - /// - [pbr::OriginalName("JS_NUMBER")] JsNumber = 2, - } - - } - #endregion - - } - - internal sealed partial class OneofOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new OneofOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[13]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofOptions(OneofOptions other) : this() { - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public OneofOptions Clone() { - return new OneofOptions(this); - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as OneofOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(OneofOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(OneofOptions other) { - if (other == null) { - return; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - internal sealed partial class EnumOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[14]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumOptions(EnumOptions other) : this() { - _hasBits0 = other._hasBits0; - allowAlias_ = other.allowAlias_; - deprecated_ = other.deprecated_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumOptions Clone() { - return new EnumOptions(this); - } - - /// Field number for the "allow_alias" field. - public const int AllowAliasFieldNumber = 2; - private readonly static bool AllowAliasDefaultValue = false; - - private bool allowAlias_; - /// - /// Set this option to true to allow mapping different tag names to the same - /// value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool AllowAlias { - get { if ((_hasBits0 & 1) != 0) { return allowAlias_; } else { return AllowAliasDefaultValue; } } - set { - _hasBits0 |= 1; - allowAlias_ = value; - } - } - /// Gets whether the "allow_alias" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasAllowAlias { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "allow_alias" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearAllowAlias() { - _hasBits0 &= ~1; - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 3; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this enum deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for the enum, or it will be completely ignored; in the very least, this - /// is a formalization for deprecating enums. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 2) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 2; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~2; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnumOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (AllowAlias != other.AllowAlias) return false; - if (Deprecated != other.Deprecated) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasAllowAlias) hash ^= AllowAlias.GetHashCode(); - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasAllowAlias) { - output.WriteRawTag(16); - output.WriteBool(AllowAlias); - } - if (HasDeprecated) { - output.WriteRawTag(24); - output.WriteBool(Deprecated); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasAllowAlias) { - size += 1 + 1; - } - if (HasDeprecated) { - size += 1 + 1; - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnumOptions other) { - if (other == null) { - return; - } - if (other.HasAllowAlias) { - AllowAlias = other.AllowAlias; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 16: { - AllowAlias = input.ReadBool(); - break; - } - case 24: { - Deprecated = input.ReadBool(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - internal sealed partial class EnumValueOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumValueOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[15]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueOptions(EnumValueOptions other) : this() { - _hasBits0 = other._hasBits0; - deprecated_ = other.deprecated_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValueOptions Clone() { - return new EnumValueOptions(this); - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 1; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this enum value deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for the enum value, or it will be completely ignored; in the very least, - /// this is a formalization for deprecating enum values. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 1) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 1; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~1; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumValueOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(EnumValueOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Deprecated != other.Deprecated) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasDeprecated) { - output.WriteRawTag(8); - output.WriteBool(Deprecated); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasDeprecated) { - size += 1 + 1; - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(EnumValueOptions other) { - if (other == null) { - return; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 8: { - Deprecated = input.ReadBool(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - internal sealed partial class ServiceOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ServiceOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[16]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceOptions(ServiceOptions other) : this() { - _hasBits0 = other._hasBits0; - deprecated_ = other.deprecated_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ServiceOptions Clone() { - return new ServiceOptions(this); - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 33; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this service deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for the service, or it will be completely ignored; in the very least, - /// this is a formalization for deprecating services. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 1) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 1; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~1; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ServiceOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(ServiceOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Deprecated != other.Deprecated) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasDeprecated) { - output.WriteRawTag(136, 2); - output.WriteBool(Deprecated); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasDeprecated) { - size += 2 + 1; - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ServiceOptions other) { - if (other == null) { - return; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 264: { - Deprecated = input.ReadBool(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - } - - internal sealed partial class MethodOptions : pb::IExtendableMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new MethodOptions()); - private pb::UnknownFieldSet _unknownFields; - internal pb::ExtensionSet _extensions; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[17]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodOptions() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodOptions(MethodOptions other) : this() { - _hasBits0 = other._hasBits0; - deprecated_ = other.deprecated_; - idempotencyLevel_ = other.idempotencyLevel_; - uninterpretedOption_ = other.uninterpretedOption_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - _extensions = pb::ExtensionSet.Clone(other._extensions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public MethodOptions Clone() { - return new MethodOptions(this); - } - - /// Field number for the "deprecated" field. - public const int DeprecatedFieldNumber = 33; - private readonly static bool DeprecatedDefaultValue = false; - - private bool deprecated_; - /// - /// Is this method deprecated? - /// Depending on the target platform, this can emit Deprecated annotations - /// for the method, or it will be completely ignored; in the very least, - /// this is a formalization for deprecating methods. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Deprecated { - get { if ((_hasBits0 & 1) != 0) { return deprecated_; } else { return DeprecatedDefaultValue; } } - set { - _hasBits0 |= 1; - deprecated_ = value; - } - } - /// Gets whether the "deprecated" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDeprecated { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "deprecated" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDeprecated() { - _hasBits0 &= ~1; - } - - /// Field number for the "idempotency_level" field. - public const int IdempotencyLevelFieldNumber = 34; - private readonly static global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel IdempotencyLevelDefaultValue = global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel.IdempotencyUnknown; - - private global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel idempotencyLevel_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel IdempotencyLevel { - get { if ((_hasBits0 & 2) != 0) { return idempotencyLevel_; } else { return IdempotencyLevelDefaultValue; } } - set { - _hasBits0 |= 2; - idempotencyLevel_ = value; - } - } - /// Gets whether the "idempotency_level" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasIdempotencyLevel { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "idempotency_level" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearIdempotencyLevel() { - _hasBits0 &= ~2; - } - - /// Field number for the "uninterpreted_option" field. - public const int UninterpretedOptionFieldNumber = 999; - private static readonly pb::FieldCodec _repeated_uninterpretedOption_codec - = pb::FieldCodec.ForMessage(7994, global::Google.Protobuf.Reflection.UninterpretedOption.Parser); - private readonly pbc::RepeatedField uninterpretedOption_ = new pbc::RepeatedField(); - /// - /// The parser stores options it doesn't recognize here. See above. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField UninterpretedOption { - get { return uninterpretedOption_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as MethodOptions); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(MethodOptions other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Deprecated != other.Deprecated) return false; - if (IdempotencyLevel != other.IdempotencyLevel) return false; - if(!uninterpretedOption_.Equals(other.uninterpretedOption_)) return false; - if (!Equals(_extensions, other._extensions)) { - return false; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasDeprecated) hash ^= Deprecated.GetHashCode(); - if (HasIdempotencyLevel) hash ^= IdempotencyLevel.GetHashCode(); - hash ^= uninterpretedOption_.GetHashCode(); - if (_extensions != null) { - hash ^= _extensions.GetHashCode(); - } - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasDeprecated) { - output.WriteRawTag(136, 2); - output.WriteBool(Deprecated); - } - if (HasIdempotencyLevel) { - output.WriteRawTag(144, 2); - output.WriteEnum((int) IdempotencyLevel); - } - uninterpretedOption_.WriteTo(output, _repeated_uninterpretedOption_codec); - if (_extensions != null) { - _extensions.WriteTo(output); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasDeprecated) { - size += 2 + 1; - } - if (HasIdempotencyLevel) { - size += 2 + pb::CodedOutputStream.ComputeEnumSize((int) IdempotencyLevel); - } - size += uninterpretedOption_.CalculateSize(_repeated_uninterpretedOption_codec); - if (_extensions != null) { - size += _extensions.CalculateSize(); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(MethodOptions other) { - if (other == null) { - return; - } - if (other.HasDeprecated) { - Deprecated = other.Deprecated; - } - if (other.HasIdempotencyLevel) { - IdempotencyLevel = other.IdempotencyLevel; - } - uninterpretedOption_.Add(other.uninterpretedOption_); - pb::ExtensionSet.MergeFrom(ref _extensions, other._extensions); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - if (!pb::ExtensionSet.TryMergeFieldFrom(ref _extensions, input)) { - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - } - break; - case 264: { - Deprecated = input.ReadBool(); - break; - } - case 272: { - IdempotencyLevel = (global::Google.Protobuf.Reflection.MethodOptions.Types.IdempotencyLevel) input.ReadEnum(); - break; - } - case 7994: { - uninterpretedOption_.AddEntriesFrom(input, _repeated_uninterpretedOption_codec); - break; - } - } - } - } - - public TValue GetExtension(pb::Extension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.Get(ref _extensions, extension); - } - public pbc::RepeatedField GetOrRegisterExtension(pb::RepeatedExtension extension) { - return pb::ExtensionSet.GetOrRegister(ref _extensions, extension); - } - public void SetExtension(pb::Extension extension, TValue value) { - pb::ExtensionSet.Set(ref _extensions, extension, value); - } - public bool HasExtension(pb::Extension extension) { - return pb::ExtensionSet.Has(ref _extensions, extension); - } - public void ClearExtension(pb::Extension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - public void ClearExtension(pb::RepeatedExtension extension) { - pb::ExtensionSet.Clear(ref _extensions, extension); - } - - #region Nested types - /// Container for nested types declared in the MethodOptions message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Is this method side-effect-free (or safe in HTTP parlance), or idempotent, - /// or neither? HTTP based RPC implementation may choose GET verb for safe - /// methods, and PUT verb for idempotent methods instead of the default POST. - /// - internal enum IdempotencyLevel { - [pbr::OriginalName("IDEMPOTENCY_UNKNOWN")] IdempotencyUnknown = 0, - /// - /// implies idempotent - /// - [pbr::OriginalName("NO_SIDE_EFFECTS")] NoSideEffects = 1, - /// - /// idempotent, but may have side effects - /// - [pbr::OriginalName("IDEMPOTENT")] Idempotent = 2, - } - - } - #endregion - - } - - /// - /// A message representing a option the parser does not recognize. This only - /// appears in options protos created by the compiler::Parser class. - /// DescriptorPool resolves these when building Descriptor objects. Therefore, - /// options protos in descriptor objects (e.g. returned by Descriptor::options(), - /// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions - /// in them. - /// - internal sealed partial class UninterpretedOption : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new UninterpretedOption()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[18]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public UninterpretedOption() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public UninterpretedOption(UninterpretedOption other) : this() { - _hasBits0 = other._hasBits0; - name_ = other.name_.Clone(); - identifierValue_ = other.identifierValue_; - positiveIntValue_ = other.positiveIntValue_; - negativeIntValue_ = other.negativeIntValue_; - doubleValue_ = other.doubleValue_; - stringValue_ = other.stringValue_; - aggregateValue_ = other.aggregateValue_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public UninterpretedOption Clone() { - return new UninterpretedOption(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_name_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.Reflection.UninterpretedOption.Types.NamePart.Parser); - private readonly pbc::RepeatedField name_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Name { - get { return name_; } - } - - /// Field number for the "identifier_value" field. - public const int IdentifierValueFieldNumber = 3; - private readonly static string IdentifierValueDefaultValue = ""; - - private string identifierValue_; - /// - /// The value of the uninterpreted option, in whatever type the tokenizer - /// identified it as during parsing. Exactly one of these should be set. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string IdentifierValue { - get { return identifierValue_ ?? IdentifierValueDefaultValue; } - set { - identifierValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "identifier_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasIdentifierValue { - get { return identifierValue_ != null; } - } - /// Clears the value of the "identifier_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearIdentifierValue() { - identifierValue_ = null; - } - - /// Field number for the "positive_int_value" field. - public const int PositiveIntValueFieldNumber = 4; - private readonly static ulong PositiveIntValueDefaultValue = 0UL; - - private ulong positiveIntValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ulong PositiveIntValue { - get { if ((_hasBits0 & 1) != 0) { return positiveIntValue_; } else { return PositiveIntValueDefaultValue; } } - set { - _hasBits0 |= 1; - positiveIntValue_ = value; - } - } - /// Gets whether the "positive_int_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasPositiveIntValue { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "positive_int_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearPositiveIntValue() { - _hasBits0 &= ~1; - } - - /// Field number for the "negative_int_value" field. - public const int NegativeIntValueFieldNumber = 5; - private readonly static long NegativeIntValueDefaultValue = 0L; - - private long negativeIntValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long NegativeIntValue { - get { if ((_hasBits0 & 2) != 0) { return negativeIntValue_; } else { return NegativeIntValueDefaultValue; } } - set { - _hasBits0 |= 2; - negativeIntValue_ = value; - } - } - /// Gets whether the "negative_int_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasNegativeIntValue { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "negative_int_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearNegativeIntValue() { - _hasBits0 &= ~2; - } - - /// Field number for the "double_value" field. - public const int DoubleValueFieldNumber = 6; - private readonly static double DoubleValueDefaultValue = 0D; - - private double doubleValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double DoubleValue { - get { if ((_hasBits0 & 4) != 0) { return doubleValue_; } else { return DoubleValueDefaultValue; } } - set { - _hasBits0 |= 4; - doubleValue_ = value; - } - } - /// Gets whether the "double_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasDoubleValue { - get { return (_hasBits0 & 4) != 0; } - } - /// Clears the value of the "double_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearDoubleValue() { - _hasBits0 &= ~4; - } - - /// Field number for the "string_value" field. - public const int StringValueFieldNumber = 7; - private readonly static pb::ByteString StringValueDefaultValue = pb::ByteString.Empty; - - private pb::ByteString stringValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString StringValue { - get { return stringValue_ ?? StringValueDefaultValue; } - set { - stringValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "string_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasStringValue { - get { return stringValue_ != null; } - } - /// Clears the value of the "string_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearStringValue() { - stringValue_ = null; - } - - /// Field number for the "aggregate_value" field. - public const int AggregateValueFieldNumber = 8; - private readonly static string AggregateValueDefaultValue = ""; - - private string aggregateValue_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string AggregateValue { - get { return aggregateValue_ ?? AggregateValueDefaultValue; } - set { - aggregateValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "aggregate_value" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasAggregateValue { - get { return aggregateValue_ != null; } - } - /// Clears the value of the "aggregate_value" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearAggregateValue() { - aggregateValue_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as UninterpretedOption); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(UninterpretedOption other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!name_.Equals(other.name_)) return false; - if (IdentifierValue != other.IdentifierValue) return false; - if (PositiveIntValue != other.PositiveIntValue) return false; - if (NegativeIntValue != other.NegativeIntValue) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(DoubleValue, other.DoubleValue)) return false; - if (StringValue != other.StringValue) return false; - if (AggregateValue != other.AggregateValue) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= name_.GetHashCode(); - if (HasIdentifierValue) hash ^= IdentifierValue.GetHashCode(); - if (HasPositiveIntValue) hash ^= PositiveIntValue.GetHashCode(); - if (HasNegativeIntValue) hash ^= NegativeIntValue.GetHashCode(); - if (HasDoubleValue) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(DoubleValue); - if (HasStringValue) hash ^= StringValue.GetHashCode(); - if (HasAggregateValue) hash ^= AggregateValue.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - name_.WriteTo(output, _repeated_name_codec); - if (HasIdentifierValue) { - output.WriteRawTag(26); - output.WriteString(IdentifierValue); - } - if (HasPositiveIntValue) { - output.WriteRawTag(32); - output.WriteUInt64(PositiveIntValue); - } - if (HasNegativeIntValue) { - output.WriteRawTag(40); - output.WriteInt64(NegativeIntValue); - } - if (HasDoubleValue) { - output.WriteRawTag(49); - output.WriteDouble(DoubleValue); - } - if (HasStringValue) { - output.WriteRawTag(58); - output.WriteBytes(StringValue); - } - if (HasAggregateValue) { - output.WriteRawTag(66); - output.WriteString(AggregateValue); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += name_.CalculateSize(_repeated_name_codec); - if (HasIdentifierValue) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(IdentifierValue); - } - if (HasPositiveIntValue) { - size += 1 + pb::CodedOutputStream.ComputeUInt64Size(PositiveIntValue); - } - if (HasNegativeIntValue) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(NegativeIntValue); - } - if (HasDoubleValue) { - size += 1 + 8; - } - if (HasStringValue) { - size += 1 + pb::CodedOutputStream.ComputeBytesSize(StringValue); - } - if (HasAggregateValue) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(AggregateValue); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(UninterpretedOption other) { - if (other == null) { - return; - } - name_.Add(other.name_); - if (other.HasIdentifierValue) { - IdentifierValue = other.IdentifierValue; - } - if (other.HasPositiveIntValue) { - PositiveIntValue = other.PositiveIntValue; - } - if (other.HasNegativeIntValue) { - NegativeIntValue = other.NegativeIntValue; - } - if (other.HasDoubleValue) { - DoubleValue = other.DoubleValue; - } - if (other.HasStringValue) { - StringValue = other.StringValue; - } - if (other.HasAggregateValue) { - AggregateValue = other.AggregateValue; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 18: { - name_.AddEntriesFrom(input, _repeated_name_codec); - break; - } - case 26: { - IdentifierValue = input.ReadString(); - break; - } - case 32: { - PositiveIntValue = input.ReadUInt64(); - break; - } - case 40: { - NegativeIntValue = input.ReadInt64(); - break; - } - case 49: { - DoubleValue = input.ReadDouble(); - break; - } - case 58: { - StringValue = input.ReadBytes(); - break; - } - case 66: { - AggregateValue = input.ReadString(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the UninterpretedOption message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// The name of the uninterpreted option. Each string represents a segment in - /// a dot-separated name. is_extension is true iff a segment represents an - /// extension (denoted with parentheses in options specs in .proto files). - /// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents - /// "foo.(bar.baz).qux". - /// - internal sealed partial class NamePart : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new NamePart()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.UninterpretedOption.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NamePart() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NamePart(NamePart other) : this() { - _hasBits0 = other._hasBits0; - namePart_ = other.namePart_; - isExtension_ = other.isExtension_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public NamePart Clone() { - return new NamePart(this); - } - - /// Field number for the "name_part" field. - public const int NamePart_FieldNumber = 1; - private readonly static string NamePart_DefaultValue = ""; - - private string namePart_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string NamePart_ { - get { return namePart_ ?? NamePart_DefaultValue; } - set { - namePart_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "name_part" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasNamePart_ { - get { return namePart_ != null; } - } - /// Clears the value of the "name_part" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearNamePart_() { - namePart_ = null; - } - - /// Field number for the "is_extension" field. - public const int IsExtensionFieldNumber = 2; - private readonly static bool IsExtensionDefaultValue = false; - - private bool isExtension_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool IsExtension { - get { if ((_hasBits0 & 1) != 0) { return isExtension_; } else { return IsExtensionDefaultValue; } } - set { - _hasBits0 |= 1; - isExtension_ = value; - } - } - /// Gets whether the "is_extension" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasIsExtension { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "is_extension" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearIsExtension() { - _hasBits0 &= ~1; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as NamePart); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(NamePart other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (NamePart_ != other.NamePart_) return false; - if (IsExtension != other.IsExtension) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (HasNamePart_) hash ^= NamePart_.GetHashCode(); - if (HasIsExtension) hash ^= IsExtension.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (HasNamePart_) { - output.WriteRawTag(10); - output.WriteString(NamePart_); - } - if (HasIsExtension) { - output.WriteRawTag(16); - output.WriteBool(IsExtension); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (HasNamePart_) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(NamePart_); - } - if (HasIsExtension) { - size += 1 + 1; - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(NamePart other) { - if (other == null) { - return; - } - if (other.HasNamePart_) { - NamePart_ = other.NamePart_; - } - if (other.HasIsExtension) { - IsExtension = other.IsExtension; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - NamePart_ = input.ReadString(); - break; - } - case 16: { - IsExtension = input.ReadBool(); - break; - } - } - } - } - - } - - } - #endregion - - } - - /// - /// Encapsulates information about the original source file from which a - /// FileDescriptorProto was generated. - /// - internal sealed partial class SourceCodeInfo : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SourceCodeInfo()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[19]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceCodeInfo() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceCodeInfo(SourceCodeInfo other) : this() { - location_ = other.location_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceCodeInfo Clone() { - return new SourceCodeInfo(this); - } - - /// Field number for the "location" field. - public const int LocationFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_location_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.SourceCodeInfo.Types.Location.Parser); - private readonly pbc::RepeatedField location_ = new pbc::RepeatedField(); - /// - /// A Location identifies a piece of source code in a .proto file which - /// corresponds to a particular definition. This information is intended - /// to be useful to IDEs, code indexers, documentation generators, and similar - /// tools. - /// - /// For example, say we have a file like: - /// message Foo { - /// optional string foo = 1; - /// } - /// Let's look at just the field definition: - /// optional string foo = 1; - /// ^ ^^ ^^ ^ ^^^ - /// a bc de f ghi - /// We have the following locations: - /// span path represents - /// [a,i) [ 4, 0, 2, 0 ] The whole field definition. - /// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - /// [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - /// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - /// [g,h) [ 4, 0, 2, 0, 3 ] The number (1). - /// - /// Notes: - /// - A location may refer to a repeated field itself (i.e. not to any - /// particular index within it). This is used whenever a set of elements are - /// logically enclosed in a single code segment. For example, an entire - /// extend block (possibly containing multiple extension definitions) will - /// have an outer location whose path refers to the "extensions" repeated - /// field without an index. - /// - Multiple locations may have the same path. This happens when a single - /// logical declaration is spread out across multiple places. The most - /// obvious example is the "extend" block again -- there may be multiple - /// extend blocks in the same scope, each of which will have the same path. - /// - A location's span is not always a subset of its parent's span. For - /// example, the "extendee" of an extension declaration appears at the - /// beginning of the "extend" block and is shared by all extensions within - /// the block. - /// - Just because a location's span is a subset of some other location's span - /// does not mean that it is a descendant. For example, a "group" defines - /// both a type and a field in a single declaration. Thus, the locations - /// corresponding to the type and field and their components will overlap. - /// - Code which tries to interpret locations should probably be designed to - /// ignore those that it doesn't understand, as more types of locations could - /// be recorded in the future. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Location { - get { return location_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SourceCodeInfo); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SourceCodeInfo other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!location_.Equals(other.location_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= location_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - location_.WriteTo(output, _repeated_location_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += location_.CalculateSize(_repeated_location_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SourceCodeInfo other) { - if (other == null) { - return; - } - location_.Add(other.location_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - location_.AddEntriesFrom(input, _repeated_location_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the SourceCodeInfo message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - internal sealed partial class Location : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Location()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.SourceCodeInfo.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Location() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Location(Location other) : this() { - path_ = other.path_.Clone(); - span_ = other.span_.Clone(); - leadingComments_ = other.leadingComments_; - trailingComments_ = other.trailingComments_; - leadingDetachedComments_ = other.leadingDetachedComments_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Location Clone() { - return new Location(this); - } - - /// Field number for the "path" field. - public const int PathFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_path_codec - = pb::FieldCodec.ForInt32(10); - private readonly pbc::RepeatedField path_ = new pbc::RepeatedField(); - /// - /// Identifies which part of the FileDescriptorProto was defined at this - /// location. - /// - /// Each element is a field number or an index. They form a path from - /// the root FileDescriptorProto to the place where the definition. For - /// example, this path: - /// [ 4, 3, 2, 7, 1 ] - /// refers to: - /// file.message_type(3) // 4, 3 - /// .field(7) // 2, 7 - /// .name() // 1 - /// This is because FileDescriptorProto.message_type has field number 4: - /// repeated DescriptorProto message_type = 4; - /// and DescriptorProto.field has field number 2: - /// repeated FieldDescriptorProto field = 2; - /// and FieldDescriptorProto.name has field number 1: - /// optional string name = 1; - /// - /// Thus, the above path gives the location of a field name. If we removed - /// the last element: - /// [ 4, 3, 2, 7 ] - /// this path refers to the whole field declaration (from the beginning - /// of the label to the terminating semicolon). - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Path { - get { return path_; } - } - - /// Field number for the "span" field. - public const int SpanFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_span_codec - = pb::FieldCodec.ForInt32(18); - private readonly pbc::RepeatedField span_ = new pbc::RepeatedField(); - /// - /// Always has exactly three or four elements: start line, start column, - /// end line (optional, otherwise assumed same as start line), end column. - /// These are packed into a single field for efficiency. Note that line - /// and column numbers are zero-based -- typically you will want to add - /// 1 to each before displaying to a user. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Span { - get { return span_; } - } - - /// Field number for the "leading_comments" field. - public const int LeadingCommentsFieldNumber = 3; - private readonly static string LeadingCommentsDefaultValue = ""; - - private string leadingComments_; - /// - /// If this SourceCodeInfo represents a complete declaration, these are any - /// comments appearing before and after the declaration which appear to be - /// attached to the declaration. - /// - /// A series of line comments appearing on consecutive lines, with no other - /// tokens appearing on those lines, will be treated as a single comment. - /// - /// leading_detached_comments will keep paragraphs of comments that appear - /// before (but not connected to) the current element. Each paragraph, - /// separated by empty lines, will be one comment element in the repeated - /// field. - /// - /// Only the comment content is provided; comment markers (e.g. //) are - /// stripped out. For block comments, leading whitespace and an asterisk - /// will be stripped from the beginning of each line other than the first. - /// Newlines are included in the output. - /// - /// Examples: - /// - /// optional int32 foo = 1; // Comment attached to foo. - /// // Comment attached to bar. - /// optional int32 bar = 2; - /// - /// optional string baz = 3; - /// // Comment attached to baz. - /// // Another line attached to baz. - /// - /// // Comment attached to qux. - /// // - /// // Another line attached to qux. - /// optional double qux = 4; - /// - /// // Detached comment for corge. This is not leading or trailing comments - /// // to qux or corge because there are blank lines separating it from - /// // both. - /// - /// // Detached comment for corge paragraph 2. - /// - /// optional string corge = 5; - /// /* Block comment attached - /// * to corge. Leading asterisks - /// * will be removed. */ - /// /* Block comment attached to - /// * grault. */ - /// optional int32 grault = 6; - /// - /// // ignored detached comments. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string LeadingComments { - get { return leadingComments_ ?? LeadingCommentsDefaultValue; } - set { - leadingComments_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "leading_comments" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasLeadingComments { - get { return leadingComments_ != null; } - } - /// Clears the value of the "leading_comments" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearLeadingComments() { - leadingComments_ = null; - } - - /// Field number for the "trailing_comments" field. - public const int TrailingCommentsFieldNumber = 4; - private readonly static string TrailingCommentsDefaultValue = ""; - - private string trailingComments_; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TrailingComments { - get { return trailingComments_ ?? TrailingCommentsDefaultValue; } - set { - trailingComments_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "trailing_comments" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasTrailingComments { - get { return trailingComments_ != null; } - } - /// Clears the value of the "trailing_comments" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearTrailingComments() { - trailingComments_ = null; - } - - /// Field number for the "leading_detached_comments" field. - public const int LeadingDetachedCommentsFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_leadingDetachedComments_codec - = pb::FieldCodec.ForString(50); - private readonly pbc::RepeatedField leadingDetachedComments_ = new pbc::RepeatedField(); - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField LeadingDetachedComments { - get { return leadingDetachedComments_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Location); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Location other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!path_.Equals(other.path_)) return false; - if(!span_.Equals(other.span_)) return false; - if (LeadingComments != other.LeadingComments) return false; - if (TrailingComments != other.TrailingComments) return false; - if(!leadingDetachedComments_.Equals(other.leadingDetachedComments_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= path_.GetHashCode(); - hash ^= span_.GetHashCode(); - if (HasLeadingComments) hash ^= LeadingComments.GetHashCode(); - if (HasTrailingComments) hash ^= TrailingComments.GetHashCode(); - hash ^= leadingDetachedComments_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - path_.WriteTo(output, _repeated_path_codec); - span_.WriteTo(output, _repeated_span_codec); - if (HasLeadingComments) { - output.WriteRawTag(26); - output.WriteString(LeadingComments); - } - if (HasTrailingComments) { - output.WriteRawTag(34); - output.WriteString(TrailingComments); - } - leadingDetachedComments_.WriteTo(output, _repeated_leadingDetachedComments_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += path_.CalculateSize(_repeated_path_codec); - size += span_.CalculateSize(_repeated_span_codec); - if (HasLeadingComments) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(LeadingComments); - } - if (HasTrailingComments) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(TrailingComments); - } - size += leadingDetachedComments_.CalculateSize(_repeated_leadingDetachedComments_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Location other) { - if (other == null) { - return; - } - path_.Add(other.path_); - span_.Add(other.span_); - if (other.HasLeadingComments) { - LeadingComments = other.LeadingComments; - } - if (other.HasTrailingComments) { - TrailingComments = other.TrailingComments; - } - leadingDetachedComments_.Add(other.leadingDetachedComments_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: - case 8: { - path_.AddEntriesFrom(input, _repeated_path_codec); - break; - } - case 18: - case 16: { - span_.AddEntriesFrom(input, _repeated_span_codec); - break; - } - case 26: { - LeadingComments = input.ReadString(); - break; - } - case 34: { - TrailingComments = input.ReadString(); - break; - } - case 50: { - leadingDetachedComments_.AddEntriesFrom(input, _repeated_leadingDetachedComments_codec); - break; - } - } - } - } - - } - - } - #endregion - - } - - /// - /// Describes the relationship between generated code and its original source - /// file. A GeneratedCodeInfo message is associated with only one generated - /// source file, but may contain references to different source .proto files. - /// - internal sealed partial class GeneratedCodeInfo : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new GeneratedCodeInfo()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.DescriptorReflection.Descriptor.MessageTypes[20]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GeneratedCodeInfo() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GeneratedCodeInfo(GeneratedCodeInfo other) : this() { - annotation_ = other.annotation_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public GeneratedCodeInfo Clone() { - return new GeneratedCodeInfo(this); - } - - /// Field number for the "annotation" field. - public const int AnnotationFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_annotation_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.Reflection.GeneratedCodeInfo.Types.Annotation.Parser); - private readonly pbc::RepeatedField annotation_ = new pbc::RepeatedField(); - /// - /// An Annotation connects some span of text in generated code to an element - /// of its generating .proto file. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Annotation { - get { return annotation_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as GeneratedCodeInfo); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(GeneratedCodeInfo other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!annotation_.Equals(other.annotation_)) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= annotation_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - annotation_.WriteTo(output, _repeated_annotation_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += annotation_.CalculateSize(_repeated_annotation_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(GeneratedCodeInfo other) { - if (other == null) { - return; - } - annotation_.Add(other.annotation_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - annotation_.AddEntriesFrom(input, _repeated_annotation_codec); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the GeneratedCodeInfo message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - internal sealed partial class Annotation : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Annotation()); - private pb::UnknownFieldSet _unknownFields; - private int _hasBits0; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.Reflection.GeneratedCodeInfo.Descriptor.NestedTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Annotation() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Annotation(Annotation other) : this() { - _hasBits0 = other._hasBits0; - path_ = other.path_.Clone(); - sourceFile_ = other.sourceFile_; - begin_ = other.begin_; - end_ = other.end_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Annotation Clone() { - return new Annotation(this); - } - - /// Field number for the "path" field. - public const int PathFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_path_codec - = pb::FieldCodec.ForInt32(10); - private readonly pbc::RepeatedField path_ = new pbc::RepeatedField(); - /// - /// Identifies the element in the original source .proto file. This field - /// is formatted the same as SourceCodeInfo.Location.path. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Path { - get { return path_; } - } - - /// Field number for the "source_file" field. - public const int SourceFileFieldNumber = 2; - private readonly static string SourceFileDefaultValue = ""; - - private string sourceFile_; - /// - /// Identifies the filesystem path to the original source .proto. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string SourceFile { - get { return sourceFile_ ?? SourceFileDefaultValue; } - set { - sourceFile_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - /// Gets whether the "source_file" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasSourceFile { - get { return sourceFile_ != null; } - } - /// Clears the value of the "source_file" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearSourceFile() { - sourceFile_ = null; - } - - /// Field number for the "begin" field. - public const int BeginFieldNumber = 3; - private readonly static int BeginDefaultValue = 0; - - private int begin_; - /// - /// Identifies the starting offset in bytes in the generated code - /// that relates to the identified object. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Begin { - get { if ((_hasBits0 & 1) != 0) { return begin_; } else { return BeginDefaultValue; } } - set { - _hasBits0 |= 1; - begin_ = value; - } - } - /// Gets whether the "begin" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasBegin { - get { return (_hasBits0 & 1) != 0; } - } - /// Clears the value of the "begin" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearBegin() { - _hasBits0 &= ~1; - } - - /// Field number for the "end" field. - public const int EndFieldNumber = 4; - private readonly static int EndDefaultValue = 0; - - private int end_; - /// - /// Identifies the ending offset in bytes in the generated code that - /// relates to the identified offset. The end offset should be one past - /// the last relevant byte (so the length of the text = end - begin). - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int End { - get { if ((_hasBits0 & 2) != 0) { return end_; } else { return EndDefaultValue; } } - set { - _hasBits0 |= 2; - end_ = value; - } - } - /// Gets whether the "end" field is set - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool HasEnd { - get { return (_hasBits0 & 2) != 0; } - } - /// Clears the value of the "end" field - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearEnd() { - _hasBits0 &= ~2; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Annotation); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Annotation other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if(!path_.Equals(other.path_)) return false; - if (SourceFile != other.SourceFile) return false; - if (Begin != other.Begin) return false; - if (End != other.End) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= path_.GetHashCode(); - if (HasSourceFile) hash ^= SourceFile.GetHashCode(); - if (HasBegin) hash ^= Begin.GetHashCode(); - if (HasEnd) hash ^= End.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - path_.WriteTo(output, _repeated_path_codec); - if (HasSourceFile) { - output.WriteRawTag(18); - output.WriteString(SourceFile); - } - if (HasBegin) { - output.WriteRawTag(24); - output.WriteInt32(Begin); - } - if (HasEnd) { - output.WriteRawTag(32); - output.WriteInt32(End); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += path_.CalculateSize(_repeated_path_codec); - if (HasSourceFile) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceFile); - } - if (HasBegin) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Begin); - } - if (HasEnd) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(End); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Annotation other) { - if (other == null) { - return; - } - path_.Add(other.path_); - if (other.HasSourceFile) { - SourceFile = other.SourceFile; - } - if (other.HasBegin) { - Begin = other.Begin; - } - if (other.HasEnd) { - End = other.End; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: - case 8: { - path_.AddEntriesFrom(input, _repeated_path_codec); - break; - } - case 18: { - SourceFile = input.ReadString(); - break; - } - case 24: { - Begin = input.ReadInt32(); - break; - } - case 32: { - End = input.ReadInt32(); - break; - } - } - } - } - - } - - } - #endregion - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorBase.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorBase.cs deleted file mode 100644 index 6befbf1..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorBase.cs +++ /dev/null @@ -1,92 +0,0 @@ -#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 -{ - /// - /// Base class for nearly all descriptors, providing common functionality. - /// - public abstract class DescriptorBase : IDescriptor - { - internal DescriptorBase(FileDescriptor file, string fullName, int index) - { - File = file; - FullName = fullName; - Index = index; - } - - /// - /// The index of this descriptor within its parent descriptor. - /// - /// - /// 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.) - /// - public int Index { get; } - - /// - /// Returns the name of the entity (field, message etc) being described. - /// - public abstract string Name { get; } - - /// - /// The fully qualified name of the descriptor's target. - /// - public string FullName { get; } - - /// - /// The file this descriptor was declared in. - /// - public FileDescriptor File { get; } - - /// - /// The declaration information about the descriptor, or null if no declaration information - /// is available for this descriptor. - /// - /// - /// This information is typically only available for dynamically loaded descriptors, - /// for example within a protoc plugin where the full descriptors, including source info, - /// are passed to the code by protoc. - /// - public DescriptorDeclaration Declaration => File.GetDeclaration(this); - - /// - /// Retrieves the list of nested descriptors corresponding to the given field number, if any. - /// If the field is unknown or not a nested descriptor list, return null to terminate the search. - /// The default implementation returns null. - /// - internal virtual IReadOnlyList GetNestedDescriptorListForField(int fieldNumber) => null; - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorDeclaration.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorDeclaration.cs deleted file mode 100644 index b22048f..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorDeclaration.cs +++ /dev/null @@ -1,112 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2018 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 System.Linq; -using System.Text; -using static Google.Protobuf.Reflection.SourceCodeInfo.Types; - -namespace Google.Protobuf.Reflection -{ - /// - /// Provides additional information about the declaration of a descriptor, - /// such as source location and comments. - /// - public sealed class DescriptorDeclaration - { - /// - /// The descriptor this declaration relates to. - /// - public IDescriptor Descriptor { get; } - - /// - /// The start line of the declaration within the source file. This value is 1-based. - /// - public int StartLine { get; } - /// - /// The start column of the declaration within the source file. This value is 1-based. - /// - public int StartColumn { get; } - - /// - /// // The end line of the declaration within the source file. This value is 1-based. - /// - public int EndLine { get; } - /// - /// The end column of the declaration within the source file. This value is 1-based, and - /// exclusive. (The final character of the declaration is on the column before this value.) - /// - public int EndColumn { get; } - - /// - /// Comments appearing before the declaration. Never null, but may be empty. Multi-line comments - /// are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - /// are removed from each line. - /// - public string LeadingComments { get; } - - /// - /// Comments appearing after the declaration. Never null, but may be empty. Multi-line comments - /// are represented as a newline-separated string. Leading whitespace and the comment marker ("//") - /// are removed from each line. - /// - public string TrailingComments { get; } - - /// - /// Comments appearing before the declaration, but separated from it by blank - /// lines. Each string represents a newline-separated paragraph of comments. - /// Leading whitespace and the comment marker ("//") are removed from each line. - /// The list is never null, but may be empty. Likewise each element is never null, but may be empty. - /// - public IReadOnlyList LeadingDetachedComments { get; } - - private DescriptorDeclaration(IDescriptor descriptor, Location location) - { - // TODO: Validation - Descriptor = descriptor; - bool hasEndLine = location.Span.Count == 4; - // Lines and columns are 0-based in the proto. - StartLine = location.Span[0] + 1; - StartColumn = location.Span[1] + 1; - EndLine = hasEndLine ? location.Span[2] + 1 : StartLine; - EndColumn = location.Span[hasEndLine ? 3 : 2] + 1; - LeadingComments = location.LeadingComments; - TrailingComments = location.TrailingComments; - LeadingDetachedComments = new ReadOnlyCollection(location.LeadingDetachedComments.ToList()); - } - - internal static DescriptorDeclaration FromProto(IDescriptor descriptor, Location location) => - new DescriptorDeclaration(descriptor, location); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorPool.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorPool.cs deleted file mode 100644 index 93f2fa9..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorPool.cs +++ /dev/null @@ -1,334 +0,0 @@ -#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 -{ - /// - /// Contains lookup tables containing all the descriptors defined in a particular file. - /// - internal sealed class DescriptorPool - { - private readonly IDictionary descriptorsByName = - new Dictionary(); - - private readonly IDictionary, FieldDescriptor> fieldsByNumber = - new Dictionary, FieldDescriptor>(); - - private readonly IDictionary, EnumValueDescriptor> enumValuesByNumber = - new Dictionary, EnumValueDescriptor>(); - - private readonly HashSet dependencies; - - internal DescriptorPool(IEnumerable dependencyFiles) - { - dependencies = new HashSet(); - foreach (var dependencyFile in dependencyFiles) - { - dependencies.Add(dependencyFile); - ImportPublicDependencies(dependencyFile); - } - - 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); - } - } - } - - /// - /// Finds a symbol of the given name within the pool. - /// - /// The type of symbol to look for - /// Fully-qualified name to look up - /// The symbol with the given name and type, - /// or null if the symbol doesn't exist or has the wrong type - internal T FindSymbol(string fullName) where T : class - { - IDescriptor result; - descriptorsByName.TryGetValue(fullName, out result); - T descriptor = result as T; - if (descriptor != null) - { - return descriptor; - } - - // dependencies contains direct dependencies and any *public* dependencies - // of those dependencies (transitively)... so we don't need to recurse here. - foreach (FileDescriptor dependency in dependencies) - { - dependency.DescriptorPool.descriptorsByName.TryGetValue(fullName, out result); - descriptor = result as T; - if (descriptor != null) - { - return descriptor; - } - } - - return null; - } - - /// - /// 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). - /// - 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); - } - - /// - /// Adds a symbol to the symbol table. - /// - /// The symbol already existed - /// in the symbol table. - 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); - - /// - /// Verifies that the descriptor's name is valid (i.e. it contains - /// only letters, digits and underscores, and does not start with a digit). - /// - /// - 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."); - } - } - - /// - /// Returns the field with the given number in the given descriptor, - /// or null if it can't be found. - /// - internal FieldDescriptor FindFieldByNumber(MessageDescriptor messageDescriptor, int number) - { - FieldDescriptor ret; - fieldsByNumber.TryGetValue(new ObjectIntPair(messageDescriptor, number), out ret); - return ret; - } - - internal EnumValueDescriptor FindEnumValueByNumber(EnumDescriptor enumDescriptor, int number) - { - EnumValueDescriptor ret; - enumValuesByNumber.TryGetValue(new ObjectIntPair(enumDescriptor, number), out ret); - return ret; - } - - /// - /// Adds a field to the fieldsByNumber table. - /// - /// A field with the same - /// containing type and number already exists. - internal void AddFieldByNumber(FieldDescriptor field) - { - // for extensions, we use the extended type, otherwise we use the containing type - ObjectIntPair key = new ObjectIntPair(field.Proto.HasExtendee ? field.ExtendeeType : 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; - } - - /// - /// 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.) - /// - internal void AddEnumValueByNumber(EnumValueDescriptor enumValue) - { - ObjectIntPair key = new ObjectIntPair(enumValue.EnumDescriptor, enumValue.Number); - if (!enumValuesByNumber.ContainsKey(key)) - { - enumValuesByNumber[key] = enumValue; - } - } - - /// - /// 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. - /// - /// - /// This isn't heavily optimized, but it's only used during cross linking anyway. - /// If it starts being used more widely, we should look at performance more carefully. - /// - internal IDescriptor LookupSymbol(string name, IDescriptor relativeTo) - { - IDescriptor result; - if (name.StartsWith(".")) - { - // Fully-qualified name. - result = FindSymbol(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. - - int dotpos = scopeToTry.ToString().LastIndexOf("."); - if (dotpos == -1) - { - result = FindSymbol(name); - break; - } - else - { - scopeToTry.Length = dotpos + 1; - - // Append firstPart and try to find. - scopeToTry.Append(firstPart); - result = FindSymbol(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(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; - } - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorUtil.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorUtil.cs deleted file mode 100644 index f5570fc..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorUtil.cs +++ /dev/null @@ -1,64 +0,0 @@ -#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 -{ - /// - /// Internal class containing utility methods when working with descriptors. - /// - internal static class DescriptorUtil - { - /// - /// Equivalent to Func[TInput, int, TOutput] but usable in .NET 2.0. Only used to convert - /// arrays. - /// - internal delegate TOutput IndexedConverter(TInput element, int index); - - /// - /// Converts the given array into a read-only list, applying the specified conversion to - /// each input element. - /// - internal static IList ConvertAndMakeReadOnly - (IList input, IndexedConverter converter) - { - TOutput[] array = new TOutput[input.Count]; - for (int i = 0; i < array.Length; i++) - { - array[i] = converter(input[i], i); - } - return new ReadOnlyCollection(array); - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorValidationException.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorValidationException.cs deleted file mode 100644 index 143671d..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/DescriptorValidationException.cs +++ /dev/null @@ -1,80 +0,0 @@ -#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 -{ - /// - /// Thrown when building descriptors fails because the source DescriptorProtos - /// are not valid. - /// - public sealed class DescriptorValidationException : Exception - { - private readonly String name; - private readonly string description; - - /// - /// The full name of the descriptor where the error occurred. - /// - public String ProblemSymbolName - { - get { return name; } - } - - /// - /// A human-readable description of the error. (The Message property - /// is made up of the descriptor's name and this description.) - /// - 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/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs deleted file mode 100644 index 36a1d0a..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumDescriptor.cs +++ /dev/null @@ -1,153 +0,0 @@ -#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.Collections; -using System; -using System.Collections.Generic; - -namespace Google.Protobuf.Reflection -{ - /// - /// Descriptor for an enum type in a .proto file. - /// - public sealed class EnumDescriptor : DescriptorBase - { - private readonly EnumDescriptorProto proto; - private readonly MessageDescriptor containingType; - private readonly IList values; - private readonly Type clrType; - - internal EnumDescriptor(EnumDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index, Type clrType) - : base(file, file.ComputeFullName(parent, proto.Name), index) - { - this.proto = proto; - this.clrType = clrType; - 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; } } - - /// - /// The brief name of the descriptor's target. - /// - public override string Name { get { return proto.Name; } } - - internal override IReadOnlyList GetNestedDescriptorListForField(int fieldNumber) - { - switch (fieldNumber) - { - case EnumDescriptorProto.ValueFieldNumber: - return (IReadOnlyList) Values; - default: - return null; - } - } - - /// - /// The CLR type for this enum. For generated code, this will be a CLR enum type. - /// - public Type ClrType { get { return clrType; } } - - /// - /// If this is a nested type, get the outer descriptor, otherwise null. - /// - public MessageDescriptor ContainingType - { - get { return containingType; } - } - - /// - /// An unmodifiable list of defined value descriptors for this enum. - /// - public IList Values - { - get { return values; } - } - - /// - /// 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 null. - /// - public EnumValueDescriptor FindValueByNumber(int number) - { - return File.DescriptorPool.FindEnumValueByNumber(this, number); - } - - /// - /// Finds an enum value by name. - /// - /// The unqualified name of the value (e.g. "FOO"). - /// The value's descriptor, or null if not found. - public EnumValueDescriptor FindValueByName(string name) - { - return File.DescriptorPool.FindSymbol(FullName + "." + name); - } - - /// - /// The (possibly empty) set of custom options for this enum. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs deleted file mode 100644 index 99c9891..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/EnumValueDescriptor.cs +++ /dev/null @@ -1,99 +0,0 @@ -#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.Collections; -using System; - -namespace Google.Protobuf.Reflection -{ - /// - /// Descriptor for a single enum value within an enum in a .proto file. - /// - 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; } } - - /// - /// Returns the name of the enum value described by this object. - /// - public override string Name { get { return proto.Name; } } - - /// - /// Returns the number associated with this enum value. - /// - public int Number { get { return Proto.Number; } } - - /// - /// Returns the enum descriptor that this value is part of. - /// - public EnumDescriptor EnumDescriptor { get { return enumDescriptor; } } - - /// - /// The (possibly empty) set of custom options for this enum value. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - } -} - \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionAccessor.cs deleted file mode 100644 index 81d6e35..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionAccessor.cs +++ /dev/null @@ -1,69 +0,0 @@ -#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 -{ - internal sealed class ExtensionAccessor : IFieldAccessor - { - private readonly Extension extension; - private readonly ReflectionUtil.IExtensionReflectionHelper helper; - - internal ExtensionAccessor(FieldDescriptor descriptor) - { - Descriptor = descriptor; - extension = descriptor.Extension; - helper = ReflectionUtil.CreateExtensionHelper(extension); - } - - public FieldDescriptor Descriptor { get; } - - public void Clear(IMessage message) - { - helper.ClearExtension(message); - } - - public bool HasValue(IMessage message) - { - return helper.HasExtension(message); - } - - public object GetValue(IMessage message) - { - return helper.GetExtension(message); - } - - public void SetValue(IMessage message, object value) - { - helper.SetExtension(message, value); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs deleted file mode 100644 index 9cb6aba..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ExtensionCollection.cs +++ /dev/null @@ -1,105 +0,0 @@ -#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; -using System.Linq; - -namespace Google.Protobuf.Reflection -{ - /// - /// A collection to simplify retrieving the descriptors of extensions in a descriptor for a message - /// - public class ExtensionCollection - { - private IDictionary> extensionsByTypeInDeclarationOrder; - private IDictionary> extensionsByTypeInNumberOrder; - - internal ExtensionCollection(FileDescriptor file, Extension[] extensions) - { - UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly( - file.Proto.Extension, - (extension, i) => new FieldDescriptor(extension, file, null, i, null, extensions?[i])); - } - - internal ExtensionCollection(MessageDescriptor message, Extension[] extensions) - { - UnorderedExtensions = DescriptorUtil.ConvertAndMakeReadOnly( - message.Proto.Extension, - (extension, i) => new FieldDescriptor(extension, message.File, message, i, null, extensions?[i])); - } - - /// - /// Returns a readonly list of all the extensions defined in this type in - /// the order they were defined in the source .proto file - /// - public IList UnorderedExtensions { get; } - - /// - /// Returns a readonly list of all the extensions define in this type that extend - /// the provided descriptor type in the order they were defined in the source .proto file - /// - public IList GetExtensionsInDeclarationOrder(MessageDescriptor descriptor) - { - return extensionsByTypeInDeclarationOrder[descriptor]; - } - - /// - /// Returns a readonly list of all the extensions define in this type that extend - /// the provided descriptor type in accending field order - /// - public IList GetExtensionsInNumberOrder(MessageDescriptor descriptor) - { - return extensionsByTypeInNumberOrder[descriptor]; - } - - internal void CrossLink() - { - Dictionary> declarationOrder = new Dictionary>(); - foreach (FieldDescriptor descriptor in UnorderedExtensions) - { - descriptor.CrossLink(); - - IList _; - if (!declarationOrder.TryGetValue(descriptor.ExtendeeType, out _)) - declarationOrder.Add(descriptor.ExtendeeType, new List()); - - declarationOrder[descriptor.ExtendeeType].Add(descriptor); - } - - extensionsByTypeInDeclarationOrder = declarationOrder - .ToDictionary(kvp => kvp.Key, kvp => (IList)new ReadOnlyCollection(kvp.Value)); - extensionsByTypeInNumberOrder = declarationOrder - .ToDictionary(kvp => kvp.Key, kvp => (IList)new ReadOnlyCollection(kvp.Value.OrderBy(field => field.FieldNumber).ToArray())); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldAccessorBase.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldAccessorBase.cs deleted file mode 100644 index 85b7d39..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldAccessorBase.cs +++ /dev/null @@ -1,64 +0,0 @@ -#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; -using Google.Protobuf.Compatibility; - -namespace Google.Protobuf.Reflection -{ - /// - /// Base class for field accessors. - /// - internal abstract class FieldAccessorBase : IFieldAccessor - { - private readonly Func getValueDelegate; - private readonly FieldDescriptor descriptor; - - internal FieldAccessorBase(PropertyInfo property, FieldDescriptor descriptor) - { - this.descriptor = descriptor; - getValueDelegate = ReflectionUtil.CreateFuncIMessageObject(property.GetGetMethod()); - } - - public FieldDescriptor Descriptor { get { return descriptor; } } - - public object GetValue(IMessage message) - { - return getValueDelegate(message); - } - - public abstract bool HasValue(IMessage message); - public abstract void Clear(IMessage message); - public abstract void SetValue(IMessage message, object value); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs deleted file mode 100644 index 5a2f7f3..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldDescriptor.cs +++ /dev/null @@ -1,404 +0,0 @@ -#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.Collections; -using Google.Protobuf.Compatibility; -using System; - -namespace Google.Protobuf.Reflection -{ - /// - /// Descriptor for a field or extension within a message in a .proto file. - /// - public sealed class FieldDescriptor : DescriptorBase, IComparable - { - private EnumDescriptor enumType; - private MessageDescriptor extendeeType; - private MessageDescriptor messageType; - private FieldType fieldType; - private readonly string propertyName; // Annoyingly, needed in Crosslink. - private IFieldAccessor accessor; - - /// - /// Get the field's containing message type, or null if it is a field defined at the top level of a file as an extension. - /// - public MessageDescriptor ContainingType { get; } - - /// - /// Returns the oneof containing this field, or null if it is not part of a oneof. - /// - public OneofDescriptor ContainingOneof { get; } - - /// - /// The effective JSON name for this field. This is usually the lower-camel-cased form of the field name, - /// but can be overridden using the json_name option in the .proto file. - /// - public string JsonName { get; } - - internal FieldDescriptorProto Proto { get; } - - internal Extension Extension { get; } - - internal FieldDescriptor(FieldDescriptorProto proto, FileDescriptor file, - MessageDescriptor parent, int index, string propertyName, Extension extension) - : base(file, file.ComputeFullName(parent, proto.Name), index) - { - 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; - if (proto.HasOneofIndex) - { - 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); - // We can't create the accessor until we've cross-linked, unfortunately, as we - // may not know whether the type of the field is a map or not. Remember the property name - // for later. - // We could trust the generated code and check whether the type of the property is - // a MapField, but that feels a tad nasty. - this.propertyName = propertyName; - Extension = extension; - JsonName = Proto.JsonName == "" ? JsonFormatter.ToJsonName(Proto.Name) : Proto.JsonName; - } - - - /// - /// The brief name of the descriptor's target. - /// - public override string Name => Proto.Name; - - /// - /// Returns the accessor for this field. - /// - /// - /// - /// While a describes the field, it does not provide - /// any way of obtaining or changing the value of the field within a specific message; - /// that is the responsibility of the accessor. - /// - /// - /// In descriptors for generated code, the value returned by this property will be non-null for all - /// regular fields. However, if a message containing a map field is introspected, the list of nested messages will include - /// an auto-generated nested key/value pair message for the field. This is not represented in any - /// generated type, and the value of the map field itself is represented by a dictionary in the - /// reflection API. There are never instances of those "hidden" messages, so no accessor is provided - /// and this property will return null. - /// - /// - /// In dynamically loaded descriptors, the value returned by this property will current be null; - /// if and when dynamic messages are supported, it will return a suitable accessor to work with - /// them. - /// - /// - public IFieldAccessor Accessor => accessor; - - /// - /// Maps a field type as included in the .proto file to a FieldType. - /// - private static FieldType GetFieldTypeFromProtoType(FieldDescriptorProto.Types.Type type) - { - switch (type) - { - case FieldDescriptorProto.Types.Type.Double: - return FieldType.Double; - case FieldDescriptorProto.Types.Type.Float: - return FieldType.Float; - case FieldDescriptorProto.Types.Type.Int64: - return FieldType.Int64; - case FieldDescriptorProto.Types.Type.Uint64: - return FieldType.UInt64; - case FieldDescriptorProto.Types.Type.Int32: - return FieldType.Int32; - case FieldDescriptorProto.Types.Type.Fixed64: - return FieldType.Fixed64; - case FieldDescriptorProto.Types.Type.Fixed32: - return FieldType.Fixed32; - case FieldDescriptorProto.Types.Type.Bool: - return FieldType.Bool; - case FieldDescriptorProto.Types.Type.String: - return FieldType.String; - case FieldDescriptorProto.Types.Type.Group: - return FieldType.Group; - case FieldDescriptorProto.Types.Type.Message: - return FieldType.Message; - case FieldDescriptorProto.Types.Type.Bytes: - return FieldType.Bytes; - case FieldDescriptorProto.Types.Type.Uint32: - return FieldType.UInt32; - case FieldDescriptorProto.Types.Type.Enum: - return FieldType.Enum; - case FieldDescriptorProto.Types.Type.Sfixed32: - return FieldType.SFixed32; - case FieldDescriptorProto.Types.Type.Sfixed64: - return FieldType.SFixed64; - case FieldDescriptorProto.Types.Type.Sint32: - return FieldType.SInt32; - case FieldDescriptorProto.Types.Type.Sint64: - return FieldType.SInt64; - default: - throw new ArgumentException("Invalid type specified"); - } - } - - /// - /// Returns true if this field is a repeated field; false otherwise. - /// - public bool IsRepeated => Proto.Label == FieldDescriptorProto.Types.Label.Repeated; - - /// - /// Returns true if this field is a required field; false otherwise. - /// - public bool IsRequired => Proto.Label == FieldDescriptorProto.Types.Label.Required; - - /// - /// Returns true if this field is a map field; false otherwise. - /// - public bool IsMap => fieldType == FieldType.Message && messageType.Proto.Options != null && messageType.Proto.Options.MapEntry; - - /// - /// Returns true if this field is a packed, repeated field; false otherwise. - /// - public bool IsPacked => File.Proto.Syntax == "proto2" ? Proto.Options?.Packed ?? false : !Proto.Options.HasPacked || Proto.Options.Packed; - - /// - /// Returns the type of the field. - /// - public FieldType FieldType => fieldType; - - /// - /// Returns the field number declared in the proto file. - /// - public int FieldNumber => Proto.Number; - - /// - /// Compares this descriptor with another one, ordering in "canonical" order - /// which simply means ascending order by field number. - /// must be a field of the same type, i.e. the of - /// both fields must be the same. - /// - 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; - } - - /// - /// For enum fields, returns the field's type. - /// - public EnumDescriptor EnumType - { - get - { - if (fieldType != FieldType.Enum) - { - throw new InvalidOperationException("EnumType is only valid for enum fields."); - } - return enumType; - } - } - - /// - /// For embedded message and group fields, returns the field's type. - /// - public MessageDescriptor MessageType - { - get - { - if (fieldType != FieldType.Message && fieldType != FieldType.Group) - { - throw new InvalidOperationException("MessageType is only valid for message or group fields."); - } - return messageType; - } - } - - /// - /// For extension fields, returns the extended type - /// - public MessageDescriptor ExtendeeType - { - get - { - if (!Proto.HasExtendee) - { - throw new InvalidOperationException("ExtendeeType is only valid for extension fields."); - } - return extendeeType; - } - } - - /// - /// The (possibly empty) set of custom options for this field. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - - /// - /// Look up and cross-link all field types etc. - /// - internal void CrossLink() - { - if (Proto.HasTypeName) - { - IDescriptor typeDescriptor = - File.DescriptorPool.LookupSymbol(Proto.TypeName, this); - - if (Proto.HasType) - { - // 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 || fieldType == FieldType.Group) - { - if (!(typeDescriptor is MessageDescriptor)) - { - throw new DescriptorValidationException(this, $"\"{Proto.TypeName}\" is not a message type."); - } - messageType = (MessageDescriptor) typeDescriptor; - - if (Proto.HasDefaultValue) - { - 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."); - } - } - - if (Proto.HasExtendee) - { - extendeeType = File.DescriptorPool.LookupSymbol(Proto.Extendee, this) as MessageDescriptor; - } - - // Note: no attempt to perform any default value parsing - - File.DescriptorPool.AddFieldByNumber(this); - - if (ContainingType != null && ContainingType.Proto.HasOptions && ContainingType.Proto.Options.MessageSetWireFormat) - { - throw new DescriptorValidationException(this, "MessageSet format is not supported."); - } - accessor = CreateAccessor(); - } - - private IFieldAccessor CreateAccessor() - { - // If we're given no property name, that's because we really don't want an accessor. - // This could be because it's a map message, or it could be that we're loading a FileDescriptor dynamically. - // TODO: Support dynamic messages. - if (propertyName == null) - { - return null; - } - - if (Extension != null) - { - return new ExtensionAccessor(this); - } - var property = ContainingType.ClrType.GetProperty(propertyName); - if (property == null) - { - throw new DescriptorValidationException(this, $"Property {propertyName} not found in {ContainingType.ClrType}"); - } - return IsMap ? new MapFieldAccessor(property, this) - : IsRepeated ? new RepeatedFieldAccessor(property, this) - : (IFieldAccessor) new SingleFieldAccessor(property, this); - } - } -} - \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldType.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldType.cs deleted file mode 100644 index 37af179..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FieldType.cs +++ /dev/null @@ -1,113 +0,0 @@ -#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 -{ - /// - /// Enumeration of all the possible field types. - /// - public enum FieldType - { - /// - /// The double field type. - /// - Double, - /// - /// The float field type. - /// - Float, - /// - /// The int64 field type. - /// - Int64, - /// - /// The uint64 field type. - /// - UInt64, - /// - /// The int32 field type. - /// - Int32, - /// - /// The fixed64 field type. - /// - Fixed64, - /// - /// The fixed32 field type. - /// - Fixed32, - /// - /// The bool field type. - /// - Bool, - /// - /// The string field type. - /// - String, - /// - /// The field type used for groups. - /// - Group, - /// - /// The field type used for message fields. - /// - Message, - /// - /// The bytes field type. - /// - Bytes, - /// - /// The uint32 field type. - /// - UInt32, - /// - /// The sfixed32 field type. - /// - SFixed32, - /// - /// The sfixed64 field type. - /// - SFixed64, - /// - /// The sint32 field type. - /// - SInt32, - /// - /// The sint64 field type. - /// - SInt64, - /// - /// The field type used for enum fields. - /// - Enum - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs deleted file mode 100644 index 9b20e3d..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs +++ /dev/null @@ -1,542 +0,0 @@ -#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.Collections; -using Google.Protobuf.WellKnownTypes; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Diagnostics; -using System.Linq; -using System.Threading; -using static Google.Protobuf.Reflection.SourceCodeInfo.Types; - -namespace Google.Protobuf.Reflection -{ - /// - /// 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. - /// - public sealed class FileDescriptor : IDescriptor - { - // Prevent linker failures when using IL2CPP with the well-known types. - static FileDescriptor() - { - ForceReflectionInitialization(); - ForceReflectionInitialization(); - ForceReflectionInitialization(); - ForceReflectionInitialization(); - ForceReflectionInitialization(); - } - - private readonly Lazy> declarations; - - private FileDescriptor(ByteString descriptorData, FileDescriptorProto proto, IEnumerable dependencies, DescriptorPool pool, bool allowUnknownDependencies, GeneratedClrTypeInfo generatedCodeInfo) - { - SerializedData = descriptorData; - DescriptorPool = pool; - Proto = proto; - Dependencies = new ReadOnlyCollection(dependencies.ToList()); - - PublicDependencies = DeterminePublicDependencies(this, proto, dependencies, allowUnknownDependencies); - - pool.AddPackage(Package, this); - - MessageTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.MessageType, - (message, index) => - new MessageDescriptor(message, this, null, index, generatedCodeInfo?.NestedTypes[index])); - - EnumTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.EnumType, - (enumType, index) => - new EnumDescriptor(enumType, this, null, index, generatedCodeInfo?.NestedEnums[index])); - - Services = DescriptorUtil.ConvertAndMakeReadOnly(proto.Service, - (service, index) => - new ServiceDescriptor(service, this, index)); - - Extensions = new ExtensionCollection(this, generatedCodeInfo?.Extensions); - - declarations = new Lazy>(CreateDeclarationMap, LazyThreadSafetyMode.ExecutionAndPublication); - } - - private Dictionary CreateDeclarationMap() - { - var dictionary = new Dictionary(); - foreach (var location in Proto.SourceCodeInfo?.Location ?? Enumerable.Empty()) - { - var descriptor = FindDescriptorForPath(location.Path); - if (descriptor != null) - { - dictionary[descriptor] = DescriptorDeclaration.FromProto(descriptor, location); - } - } - return dictionary; - } - - private IDescriptor FindDescriptorForPath(IList path) - { - // All complete declarations have an even, non-empty path length - // (There can be an empty path for a descriptor declaration, but that can't have any comments, - // so we currently ignore it.) - if (path.Count == 0 || (path.Count & 1) != 0) - { - return null; - } - IReadOnlyList topLevelList = GetNestedDescriptorListForField(path[0]); - DescriptorBase current = GetDescriptorFromList(topLevelList, path[1]); - - for (int i = 2; current != null && i < path.Count; i += 2) - { - var list = current.GetNestedDescriptorListForField(path[i]); - current = GetDescriptorFromList(list, path[i + 1]); - } - return current; - } - - private DescriptorBase GetDescriptorFromList(IReadOnlyList list, int index) - { - // This is fine: it may be a newer version of protobuf than we understand, with a new descriptor - // field. - if (list == null) - { - return null; - } - // We *could* return null to silently continue, but this is basically data corruption. - if (index < 0 || index >= list.Count) - { - // We don't have much extra information to give at this point unfortunately. If this becomes a problem, - // we can pass in the complete path and report that and the file name. - throw new InvalidProtocolBufferException($"Invalid descriptor location path: index out of range"); - } - return list[index]; - } - - private IReadOnlyList GetNestedDescriptorListForField(int fieldNumber) - { - switch (fieldNumber) - { - case FileDescriptorProto.ServiceFieldNumber: - return (IReadOnlyList) Services; - case FileDescriptorProto.MessageTypeFieldNumber: - return (IReadOnlyList) MessageTypes; - case FileDescriptorProto.EnumTypeFieldNumber: - return (IReadOnlyList) EnumTypes; - default: - return null; - } - } - - internal DescriptorDeclaration GetDeclaration(IDescriptor descriptor) - { - DescriptorDeclaration declaration; - declarations.Value.TryGetValue(descriptor, out declaration); - return declaration; - } - - /// - /// Computes the full name of a descriptor within this file, with an optional parent message. - /// - internal string ComputeFullName(MessageDescriptor parent, string name) - { - if (parent != null) - { - return parent.FullName + "." + name; - } - if (Package.Length > 0) - { - return Package + "." + name; - } - return name; - } - - /// - /// 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. - /// - private static IList DeterminePublicDependencies(FileDescriptor @this, FileDescriptorProto proto, IEnumerable dependencies, bool allowUnknownDependencies) - { - var nameToFileMap = dependencies.ToDictionary(file => file.Name); - var publicDependencies = new List(); - 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; - if (!nameToFileMap.TryGetValue(name, out file)) - { - if (!allowUnknownDependencies) - { - throw new DescriptorValidationException(@this, "Invalid public dependency: " + name); - } - // Ignore unknown dependencies. - } - else - { - publicDependencies.Add(file); - } - } - return new ReadOnlyCollection(publicDependencies); - } - - /// - /// The descriptor in its protocol message representation. - /// - internal FileDescriptorProto Proto { get; } - - /// - /// The file name. - /// - public string Name => Proto.Name; - - /// - /// The package as declared in the .proto file. This may or may not - /// be equivalent to the .NET namespace of the generated classes. - /// - public string Package => Proto.Package; - - /// - /// Unmodifiable list of top-level message types declared in this file. - /// - public IList MessageTypes { get; } - - /// - /// Unmodifiable list of top-level enum types declared in this file. - /// - public IList EnumTypes { get; } - - /// - /// Unmodifiable list of top-level services declared in this file. - /// - public IList Services { get; } - - /// - /// Unmodifiable list of top-level extensions declared in this file. - /// - public ExtensionCollection Extensions { get; } - - /// - /// Unmodifiable list of this file's dependencies (imports). - /// - public IList Dependencies { get; } - - /// - /// Unmodifiable list of this file's public dependencies (public imports). - /// - public IList PublicDependencies { get; } - - /// - /// The original serialized binary form of this descriptor. - /// - public ByteString SerializedData { get; } - - /// - /// Implementation of IDescriptor.FullName - just returns the same as Name. - /// - string IDescriptor.FullName => Name; - - /// - /// Implementation of IDescriptor.File - just returns this descriptor. - /// - FileDescriptor IDescriptor.File => this; - - /// - /// Pool containing symbol descriptors. - /// - internal DescriptorPool DescriptorPool { get; } - - /// - /// Finds a type (message, enum, service or extension) in the file by name. Does not find nested types. - /// - /// The unqualified type name to look for. - /// The type of descriptor to look for - /// The type's descriptor, or null if not found. - public T FindTypeByName(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 = DescriptorPool.FindSymbol(name); - if (result != null && result.File == this) - { - return result; - } - return null; - } - - /// - /// Builds a FileDescriptor from its protocol buffer representation. - /// - /// The original serialized descriptor data. - /// We have only limited proto2 support, so serializing FileDescriptorProto - /// would not necessarily give us this. - /// The protocol message form of the FileDescriptor. - /// 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. - /// Whether unknown dependencies are ignored (true) or cause an exception to be thrown (false). - /// Details about generated code, for the purposes of reflection. - /// If 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. - private static FileDescriptor BuildFrom(ByteString descriptorData, FileDescriptorProto proto, FileDescriptor[] dependencies, bool allowUnknownDependencies, GeneratedClrTypeInfo generatedCodeInfo) - { - // 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(descriptorData, proto, dependencies, pool, allowUnknownDependencies, generatedCodeInfo); - - // Validate that the dependencies we've been passed (as FileDescriptors) are actually the ones we - // need. - if (dependencies.Length != proto.Dependency.Count) - { - 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(); - } - - Extensions.CrossLink(); - } - - /// - /// Creates a descriptor for generated code. - /// - /// - /// This method is only designed to be used by the results of generating code with protoc, - /// which creates the appropriate dependencies etc. It has to be public because the generated - /// code is "external", but should not be called directly by end users. - /// - public static FileDescriptor FromGeneratedCode( - byte[] descriptorData, - FileDescriptor[] dependencies, - GeneratedClrTypeInfo generatedCodeInfo) - { - ExtensionRegistry registry = new ExtensionRegistry(); - AddAllExtensions(dependencies, generatedCodeInfo, registry); - FileDescriptorProto proto; - try - { - proto = FileDescriptorProto.Parser.WithExtensionRegistry(registry).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(ByteString.CopyFrom(descriptorData), proto, dependencies, true, generatedCodeInfo); - } - catch (DescriptorValidationException e) - { - throw new ArgumentException($"Invalid embedded descriptor for \"{proto.Name}\".", e); - } - } - - private static void AddAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo, ExtensionRegistry registry) - { - registry.AddRange(dependencies.SelectMany(GetAllDependedExtensions).Concat(GetAllGeneratedExtensions(generatedInfo)).ToArray()); - } - - private static IEnumerable GetAllGeneratedExtensions(GeneratedClrTypeInfo generated) - { - return generated.Extensions.Concat(generated.NestedTypes.Where(t => t != null).SelectMany(GetAllGeneratedExtensions)); - } - - private static IEnumerable GetAllDependedExtensions(FileDescriptor descriptor) - { - return descriptor.Extensions.UnorderedExtensions - .Select(s => s.Extension) - .Concat(descriptor.Dependencies.Concat(descriptor.PublicDependencies).SelectMany(GetAllDependedExtensions)) - .Concat(descriptor.MessageTypes.SelectMany(GetAllDependedExtensionsFromMessage)); - } - - private static IEnumerable GetAllDependedExtensionsFromMessage(MessageDescriptor descriptor) - { - return descriptor.Extensions.UnorderedExtensions - .Select(s => s.Extension) - .Concat(descriptor.NestedTypes.SelectMany(GetAllDependedExtensionsFromMessage)); - } - - /// - /// Converts the given descriptor binary data into FileDescriptor objects. - /// Note: reflection using the returned FileDescriptors is not currently supported. - /// - /// The binary file descriptor proto data. Must not be null, and any - /// dependencies must come before the descriptor which depends on them. (If A depends on B, and B - /// depends on C, then the descriptors must be presented in the order C, B, A.) This is compatible - /// with the order in which protoc provides descriptors to plugins. - /// The file descriptors corresponding to . - public static IReadOnlyList BuildFromByteStrings(IEnumerable descriptorData) - { - ProtoPreconditions.CheckNotNull(descriptorData, nameof(descriptorData)); - - // TODO: See if we can build a single DescriptorPool instead of building lots of them. - // This will all behave correctly, but it's less efficient than we'd like. - var descriptors = new List(); - var descriptorsByName = new Dictionary(); - foreach (var data in descriptorData) - { - var proto = FileDescriptorProto.Parser.ParseFrom(data); - var dependencies = new List(); - foreach (var dependencyName in proto.Dependency) - { - FileDescriptor dependency; - if (!descriptorsByName.TryGetValue(dependencyName, out dependency)) - { - throw new ArgumentException($"Dependency missing: {dependencyName}"); - } - dependencies.Add(dependency); - } - var pool = new DescriptorPool(dependencies); - FileDescriptor descriptor = new FileDescriptor( - data, proto, dependencies, pool, - allowUnknownDependencies: false, generatedCodeInfo: null); - descriptor.CrossLink(); - descriptors.Add(descriptor); - if (descriptorsByName.ContainsKey(descriptor.Name)) - { - throw new ArgumentException($"Duplicate descriptor name: {descriptor.Name}"); - } - descriptorsByName.Add(descriptor.Name, descriptor); - } - return new ReadOnlyCollection(descriptors); - } - - /// - /// Returns a that represents this instance. - /// - /// - /// A that represents this instance. - /// - public override string ToString() - { - return $"FileDescriptor for {Name}"; - } - - /// - /// Returns the file descriptor for descriptor.proto. - /// - /// - /// This is used for protos which take a direct dependency on descriptor.proto, typically for - /// annotations. While descriptor.proto is a proto2 file, it is built into the Google.Protobuf - /// runtime for reflection purposes. The messages are internal to the runtime as they would require - /// proto2 semantics for full support, but the file descriptor is available via this property. The - /// C# codegen in protoc automatically uses this property when it detects a dependency on descriptor.proto. - /// - /// - /// The file descriptor for descriptor.proto. - /// - public static FileDescriptor DescriptorProtoFileDescriptor { get { return DescriptorReflection.Descriptor; } } - - /// - /// The (possibly empty) set of custom options for this file. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - - /// - /// Performs initialization for the given generic type argument. - /// - /// - /// This method is present for the sake of AOT compilers. It allows code (whether handwritten or generated) - /// to make calls into the reflection machinery of this library to express an intention to use that type - /// reflectively (e.g. for JSON parsing and formatting). The call itself does almost nothing, but AOT compilers - /// attempting to determine which generic type arguments need to be handled will spot the code path and act - /// accordingly. - /// - /// The type to force initialization for. - public static void ForceReflectionInitialization() => ReflectionUtil.ForceInitialize(); - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/GeneratedClrTypeInfo.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/GeneratedClrTypeInfo.cs deleted file mode 100644 index 479e177..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/GeneratedClrTypeInfo.cs +++ /dev/null @@ -1,128 +0,0 @@ -#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; - -namespace Google.Protobuf.Reflection -{ - /// - /// Extra information provided by generated code when initializing a message or file descriptor. - /// These are constructed as required, and are not long-lived. Hand-written code should - /// never need to use this type. - /// - public sealed class GeneratedClrTypeInfo - { - private static readonly string[] EmptyNames = new string[0]; - private static readonly GeneratedClrTypeInfo[] EmptyCodeInfo = new GeneratedClrTypeInfo[0]; - private static readonly Extension[] EmptyExtensions = new Extension[0]; - - /// - /// Irrelevant for file descriptors; the CLR type for the message for message descriptors. - /// - public Type ClrType { get; private set; } - - /// - /// Irrelevant for file descriptors; the parser for message descriptors. - /// - public MessageParser Parser { get; } - - /// - /// Irrelevant for file descriptors; the CLR property names (in message descriptor field order) - /// for fields in the message for message descriptors. - /// - public string[] PropertyNames { get; } - - /// - /// The extensions defined within this file/message descriptor - /// - public Extension[] Extensions { get; } - - /// - /// Irrelevant for file descriptors; the CLR property "base" names (in message descriptor oneof order) - /// for oneofs in the message for message descriptors. It is expected that for a oneof name of "Foo", - /// there will be a "FooCase" property and a "ClearFoo" method. - /// - public string[] OneofNames { get; } - - /// - /// The reflection information for types within this file/message descriptor. Elements may be null - /// if there is no corresponding generated type, e.g. for map entry types. - /// - public GeneratedClrTypeInfo[] NestedTypes { get; } - - /// - /// The CLR types for enums within this file/message descriptor. - /// - public Type[] NestedEnums { get; } - - /// - /// Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - /// Each array parameter may be null, to indicate a lack of values. - /// The parameter order is designed to make it feasible to format the generated code readably. - /// - public GeneratedClrTypeInfo(Type clrType, MessageParser parser, string[] propertyNames, string[] oneofNames, Type[] nestedEnums, Extension[] extensions, GeneratedClrTypeInfo[] nestedTypes) - { - NestedTypes = nestedTypes ?? EmptyCodeInfo; - NestedEnums = nestedEnums ?? ReflectionUtil.EmptyTypes; - ClrType = clrType; - Extensions = extensions ?? EmptyExtensions; - Parser = parser; - PropertyNames = propertyNames ?? EmptyNames; - OneofNames = oneofNames ?? EmptyNames; - } - - /// - /// Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names. - /// Each array parameter may be null, to indicate a lack of values. - /// The parameter order is designed to make it feasible to format the generated code readably. - /// - public GeneratedClrTypeInfo(Type clrType, MessageParser parser, string[] propertyNames, string[] oneofNames, Type[] nestedEnums, GeneratedClrTypeInfo[] nestedTypes) - : this(clrType, parser, propertyNames, oneofNames, nestedEnums, null, nestedTypes) - { - } - - /// - /// Creates a GeneratedClrTypeInfo for a file descriptor, with only types, enums, and extensions. - /// - public GeneratedClrTypeInfo(Type[] nestedEnums, Extension[] extensions, GeneratedClrTypeInfo[] nestedTypes) - : this(null, null, null, null, nestedEnums, extensions, nestedTypes) - { - } - - /// - /// Creates a GeneratedClrTypeInfo for a file descriptor, with only types and enums. - /// - public GeneratedClrTypeInfo(Type[] nestedEnums, GeneratedClrTypeInfo[] nestedTypes) - : this(null, null, null, null, nestedEnums, nestedTypes) - { - } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IDescriptor.cs deleted file mode 100644 index 1c1ef38..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IDescriptor.cs +++ /dev/null @@ -1,55 +0,0 @@ -#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 -{ - /// - /// Interface implemented by all descriptor types. - /// - public interface IDescriptor - { - /// - /// Returns the name of the entity (message, field etc) being described. - /// - string Name { get; } - - /// - /// Returns the fully-qualified name of the entity being described. - /// - string FullName { get; } - - /// - /// Returns the descriptor for the .proto file that this entity is part of. - /// - FileDescriptor File { get; } - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs deleted file mode 100644 index 8f7ef3c..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/IFieldAccessor.cs +++ /dev/null @@ -1,76 +0,0 @@ -#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; - -namespace Google.Protobuf.Reflection -{ - /// - /// Allows fields to be reflectively accessed. - /// - public interface IFieldAccessor - { - /// - /// Returns the descriptor associated with this field. - /// - FieldDescriptor Descriptor { get; } - - /// - /// Clears the field in the specified message. (For repeated fields, - /// this clears the list.) - /// - void Clear(IMessage message); - - /// - /// Indicates whether the field in the specified message is set. For proto3 fields, this throws an - /// - bool HasValue(IMessage message); - - /// - /// Fetches the field value. For repeated values, this will be an - /// implementation. For map values, this will be an - /// implementation. - /// - object GetValue(IMessage message); - - /// - /// Mutator for single "simple" fields only. - /// - /// - /// 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. - /// - /// The field is not a "simple" field. - void SetValue(IMessage message, object value); - } -} \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MapFieldAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MapFieldAccessor.cs deleted file mode 100644 index 56e3ddd..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MapFieldAccessor.cs +++ /dev/null @@ -1,64 +0,0 @@ -#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.Reflection; - -namespace Google.Protobuf.Reflection -{ - /// - /// Accessor for map fields. - /// - internal sealed class MapFieldAccessor : FieldAccessorBase - { - internal MapFieldAccessor(PropertyInfo property, FieldDescriptor descriptor) : base(property, descriptor) - { - } - - public override void Clear(IMessage message) - { - IDictionary list = (IDictionary) GetValue(message); - list.Clear(); - } - - public override bool HasValue(IMessage message) - { - throw new InvalidOperationException("HasValue is not implemented for map fields"); - } - - public override void SetValue(IMessage message, object value) - { - throw new InvalidOperationException("SetValue is not implemented for map fields"); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs deleted file mode 100644 index 15bfbfa..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MessageDescriptor.cs +++ /dev/null @@ -1,368 +0,0 @@ -#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 System.Linq; -#if NET35 -// Needed for ReadOnlyDictionary, which does not exist in .NET 3.5 -using Google.Protobuf.Collections; -#endif - -namespace Google.Protobuf.Reflection -{ - /// - /// Describes a message type. - /// - public sealed class MessageDescriptor : DescriptorBase - { - private static readonly HashSet WellKnownTypeNames = new HashSet - { - "google/protobuf/any.proto", - "google/protobuf/api.proto", - "google/protobuf/duration.proto", - "google/protobuf/empty.proto", - "google/protobuf/wrappers.proto", - "google/protobuf/timestamp.proto", - "google/protobuf/field_mask.proto", - "google/protobuf/source_context.proto", - "google/protobuf/struct.proto", - "google/protobuf/type.proto", - }; - - private readonly IList fieldsInDeclarationOrder; - private readonly IList fieldsInNumberOrder; - private readonly IDictionary jsonFieldMap; - - internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex, GeneratedClrTypeInfo generatedCodeInfo) - : base(file, file.ComputeFullName(parent, proto.Name), typeIndex) - { - Proto = proto; - Parser = generatedCodeInfo?.Parser; - ClrType = generatedCodeInfo?.ClrType; - ContainingType = parent; - - // If generatedCodeInfo is null, we just won't generate an accessor for any fields. - Oneofs = DescriptorUtil.ConvertAndMakeReadOnly( - proto.OneofDecl, - (oneof, index) => - new OneofDescriptor(oneof, file, this, index, generatedCodeInfo?.OneofNames[index])); - - NestedTypes = DescriptorUtil.ConvertAndMakeReadOnly( - proto.NestedType, - (type, index) => - new MessageDescriptor(type, file, this, index, generatedCodeInfo?.NestedTypes[index])); - - EnumTypes = DescriptorUtil.ConvertAndMakeReadOnly( - proto.EnumType, - (type, index) => - new EnumDescriptor(type, file, this, index, generatedCodeInfo?.NestedEnums[index])); - - Extensions = new ExtensionCollection(this, generatedCodeInfo?.Extensions); - - fieldsInDeclarationOrder = DescriptorUtil.ConvertAndMakeReadOnly( - proto.Field, - (field, index) => - new FieldDescriptor(field, file, this, index, generatedCodeInfo?.PropertyNames[index], null)); - fieldsInNumberOrder = new ReadOnlyCollection(fieldsInDeclarationOrder.OrderBy(field => field.FieldNumber).ToArray()); - // TODO: Use field => field.Proto.JsonName when we're confident it's appropriate. (And then use it in the formatter, too.) - jsonFieldMap = CreateJsonFieldMap(fieldsInNumberOrder); - file.DescriptorPool.AddSymbol(this); - Fields = new FieldCollection(this); - } - - private static ReadOnlyDictionary CreateJsonFieldMap(IList fields) - { - var map = new Dictionary(); - foreach (var field in fields) - { - map[field.Name] = field; - map[field.JsonName] = field; - } - return new ReadOnlyDictionary(map); - } - - /// - /// The brief name of the descriptor's target. - /// - public override string Name => Proto.Name; - - internal override IReadOnlyList GetNestedDescriptorListForField(int fieldNumber) - { - switch (fieldNumber) - { - case DescriptorProto.FieldFieldNumber: - return (IReadOnlyList) fieldsInDeclarationOrder; - case DescriptorProto.NestedTypeFieldNumber: - return (IReadOnlyList) NestedTypes; - case DescriptorProto.EnumTypeFieldNumber: - return (IReadOnlyList) EnumTypes; - default: - return null; - } - } - - internal DescriptorProto Proto { get; } - - /// - /// The CLR type used to represent message instances from this descriptor. - /// - /// - /// - /// The value returned by this property will be non-null for all regular fields. However, - /// if a message containing a map field is introspected, the list of nested messages will include - /// an auto-generated nested key/value pair message for the field. This is not represented in any - /// generated type, so this property will return null in such cases. - /// - /// - /// For wrapper types ( and the like), the type returned here - /// will be the generated message type, not the native type used by reflection for fields of those types. Code - /// using reflection should call to determine whether a message descriptor represents - /// a wrapper type, and handle the result appropriately. - /// - /// - public Type ClrType { get; } - - /// - /// A parser for this message type. - /// - /// - /// - /// As is not generic, this cannot be statically - /// typed to the relevant type, but it should produce objects of a type compatible with . - /// - /// - /// The value returned by this property will be non-null for all regular fields. However, - /// if a message containing a map field is introspected, the list of nested messages will include - /// an auto-generated nested key/value pair message for the field. No message parser object is created for - /// such messages, so this property will return null in such cases. - /// - /// - /// For wrapper types ( and the like), the parser returned here - /// will be the generated message type, not the native type used by reflection for fields of those types. Code - /// using reflection should call to determine whether a message descriptor represents - /// a wrapper type, and handle the result appropriately. - /// - /// - public MessageParser Parser { get; } - - /// - /// Returns whether this message is one of the "well known types" which may have runtime/protoc support. - /// - internal bool IsWellKnownType => File.Package == "google.protobuf" && WellKnownTypeNames.Contains(File.Name); - - /// - /// Returns whether this message is one of the "wrapper types" used for fields which represent primitive values - /// with the addition of presence. - /// - internal bool IsWrapperType => File.Package == "google.protobuf" && File.Name == "google/protobuf/wrappers.proto"; - - /// - /// If this is a nested type, get the outer descriptor, otherwise null. - /// - public MessageDescriptor ContainingType { get; } - - /// - /// A collection of fields, which can be retrieved by name or field number. - /// - public FieldCollection Fields { get; } - - /// - /// An unmodifiable list of extensions defined in this message's scrope - /// - public ExtensionCollection Extensions { get; } - - /// - /// An unmodifiable list of this message type's nested types. - /// - public IList NestedTypes { get; } - - /// - /// An unmodifiable list of this message type's enum types. - /// - public IList EnumTypes { get; } - - /// - /// An unmodifiable list of the "oneof" field collections in this message type. - /// - public IList Oneofs { get; } - - /// - /// Finds a field by field name. - /// - /// The unqualified name of the field (e.g. "foo"). - /// The field's descriptor, or null if not found. - public FieldDescriptor FindFieldByName(String name) => File.DescriptorPool.FindSymbol(FullName + "." + name); - - /// - /// Finds a field by field number. - /// - /// The field number within this message type. - /// The field's descriptor, or null if not found. - public FieldDescriptor FindFieldByNumber(int number) => File.DescriptorPool.FindFieldByNumber(this, number); - - /// - /// Finds a nested descriptor by name. The is valid for fields, nested - /// message types, oneofs and enums. - /// - /// The unqualified name of the descriptor, e.g. "Foo" - /// The descriptor, or null if not found. - public T FindDescriptor(string name) where T : class, IDescriptor => - File.DescriptorPool.FindSymbol(FullName + "." + name); - - /// - /// The (possibly empty) set of custom options for this message. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public Collections.RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - - /// - /// Looks up and cross-links all fields and nested types. - /// - internal void CrossLink() - { - foreach (MessageDescriptor message in NestedTypes) - { - message.CrossLink(); - } - - foreach (FieldDescriptor field in fieldsInDeclarationOrder) - { - field.CrossLink(); - } - - foreach (OneofDescriptor oneof in Oneofs) - { - oneof.CrossLink(); - } - - Extensions.CrossLink(); - } - - /// - /// A collection to simplify retrieving the field accessor for a particular field. - /// - public sealed class FieldCollection - { - private readonly MessageDescriptor messageDescriptor; - - internal FieldCollection(MessageDescriptor messageDescriptor) - { - this.messageDescriptor = messageDescriptor; - } - - /// - /// Returns the fields in the message as an immutable list, in the order in which they - /// are declared in the source .proto file. - /// - public IList InDeclarationOrder() => messageDescriptor.fieldsInDeclarationOrder; - - /// - /// Returns the fields in the message as an immutable list, in ascending field number - /// order. Field numbers need not be contiguous, so there is no direct mapping from the - /// index in the list to the field number; to retrieve a field by field number, it is better - /// to use the indexer. - /// - public IList InFieldNumberOrder() => messageDescriptor.fieldsInNumberOrder; - - // TODO: consider making this public in the future. (Being conservative for now...) - - /// - /// Returns a read-only dictionary mapping the field names in this message as they're available - /// in the JSON representation to the field descriptors. For example, a field foo_bar - /// in the message would result two entries, one with a key fooBar and one with a key - /// foo_bar, both referring to the same field. - /// - internal IDictionary ByJsonName() => messageDescriptor.jsonFieldMap; - - /// - /// Retrieves the descriptor for the field with the given number. - /// - /// Number of the field to retrieve the descriptor for - /// The accessor for the given field - /// The message descriptor does not contain a field - /// with the given number - public FieldDescriptor this[int number] - { - get - { - var fieldDescriptor = messageDescriptor.FindFieldByNumber(number); - if (fieldDescriptor == null) - { - throw new KeyNotFoundException("No such field number"); - } - return fieldDescriptor; - } - } - - /// - /// Retrieves the descriptor for the field with the given name. - /// - /// Name of the field to retrieve the descriptor for - /// The descriptor for the given field - /// The message descriptor does not contain a field - /// with the given name - public FieldDescriptor this[string name] - { - get - { - var fieldDescriptor = messageDescriptor.FindFieldByName(name); - if (fieldDescriptor == null) - { - throw new KeyNotFoundException("No such field name"); - } - return fieldDescriptor; - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs deleted file mode 100644 index 1b37d9b..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/MethodDescriptor.cs +++ /dev/null @@ -1,132 +0,0 @@ -#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.Collections; -using System; - -namespace Google.Protobuf.Reflection -{ - /// - /// Describes a single method in a service. - /// - public sealed class MethodDescriptor : DescriptorBase - { - private readonly MethodDescriptorProto proto; - private readonly ServiceDescriptor service; - private MessageDescriptor inputType; - private MessageDescriptor outputType; - - /// - /// The service this method belongs to. - /// - public ServiceDescriptor Service { get { return service; } } - - /// - /// The method's input type. - /// - public MessageDescriptor InputType { get { return inputType; } } - - /// - /// The method's input type. - /// - public MessageDescriptor OutputType { get { return outputType; } } - - /// - /// Indicates if client streams multiple requests. - /// - public bool IsClientStreaming { get { return proto.ClientStreaming; } } - - /// - /// Indicates if server streams multiple responses. - /// - public bool IsServerStreaming { get { return proto.ServerStreaming; } } - - /// - /// The (possibly empty) set of custom options for this method. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - - 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; } } - - /// - /// The brief name of the descriptor's target. - /// - 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/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs deleted file mode 100644 index f4bf628..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofAccessor.cs +++ /dev/null @@ -1,90 +0,0 @@ -#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; -using Google.Protobuf.Compatibility; - -namespace Google.Protobuf.Reflection -{ - /// - /// Reflection access for a oneof, allowing clear and "get case" actions. - /// - public sealed class OneofAccessor - { - private readonly Func caseDelegate; - private readonly Action clearDelegate; - private OneofDescriptor descriptor; - - internal OneofAccessor(PropertyInfo caseProperty, MethodInfo clearMethod, OneofDescriptor descriptor) - { - if (!caseProperty.CanRead) - { - throw new ArgumentException("Cannot read from property"); - } - this.descriptor = descriptor; - caseDelegate = ReflectionUtil.CreateFuncIMessageInt32(caseProperty.GetGetMethod()); - - this.descriptor = descriptor; - clearDelegate = ReflectionUtil.CreateActionIMessage(clearMethod); - } - - /// - /// Gets the descriptor for this oneof. - /// - /// - /// The descriptor of the oneof. - /// - public OneofDescriptor Descriptor { get { return descriptor; } } - - /// - /// Clears the oneof in the specified message. - /// - public void Clear(IMessage message) - { - clearDelegate(message); - } - - /// - /// Indicates which field in the oneof is set for specified message - /// - public FieldDescriptor GetCaseFieldDescriptor(IMessage message) - { - int fieldNumber = caseDelegate(message); - if (fieldNumber > 0) - { - return descriptor.ContainingType.FindFieldByNumber(fieldNumber); - } - return null; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs deleted file mode 100644 index 9f3d805..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OneofDescriptor.cs +++ /dev/null @@ -1,165 +0,0 @@ -#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.Generic; -using System.Collections.ObjectModel; -using Google.Protobuf.Collections; -using Google.Protobuf.Compatibility; - -namespace Google.Protobuf.Reflection -{ - /// - /// Describes a "oneof" field collection in a message type: a set of - /// fields of which at most one can be set in any particular message. - /// - public sealed class OneofDescriptor : DescriptorBase - { - private readonly OneofDescriptorProto proto; - private MessageDescriptor containingType; - private IList fields; - private readonly OneofAccessor accessor; - - internal OneofDescriptor(OneofDescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int index, string clrName) - : base(file, file.ComputeFullName(parent, proto.Name), index) - { - this.proto = proto; - containingType = parent; - - file.DescriptorPool.AddSymbol(this); - accessor = CreateAccessor(clrName); - } - - /// - /// The brief name of the descriptor's target. - /// - public override string Name { get { return proto.Name; } } - - /// - /// Gets the message type containing this oneof. - /// - /// - /// The message type containing this oneof. - /// - public MessageDescriptor ContainingType - { - get { return containingType; } - } - - /// - /// Gets the fields within this oneof, in declaration order. - /// - /// - /// The fields within this oneof, in declaration order. - /// - public IList Fields { get { return fields; } } - - /// - /// Gets an accessor for reflective access to the values associated with the oneof - /// in a particular message. - /// - /// - /// - /// In descriptors for generated code, the value returned by this property will always be non-null. - /// - /// - /// In dynamically loaded descriptors, the value returned by this property will current be null; - /// if and when dynamic messages are supported, it will return a suitable accessor to work with - /// them. - /// - /// - /// - /// The accessor used for reflective access. - /// - public OneofAccessor Accessor { get { return accessor; } } - - /// - /// The (possibly empty) set of custom options for this oneof. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return proto.Options.GetExtension(extension).Clone(); - } - */ - - internal void CrossLink() - { - List fieldCollection = new List(); - foreach (var field in ContainingType.Fields.InDeclarationOrder()) - { - if (field.ContainingOneof == this) - { - fieldCollection.Add(field); - } - } - fields = new ReadOnlyCollection(fieldCollection); - } - - private OneofAccessor CreateAccessor(string clrName) - { - // We won't have a CLR name if this is from a dynamically-loaded FileDescriptor. - // TODO: Support dynamic messages. - if (clrName == null) - { - return null; - } - var caseProperty = containingType.ClrType.GetProperty(clrName + "Case"); - if (caseProperty == null) - { - throw new DescriptorValidationException(this, $"Property {clrName}Case not found in {containingType.ClrType}"); - } - var clearMethod = containingType.ClrType.GetMethod("Clear" + clrName); - if (clearMethod == null) - { - throw new DescriptorValidationException(this, $"Method Clear{clrName} not found in {containingType.ClrType}"); - } - - return new OneofAccessor(caseProperty, clearMethod, this); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs deleted file mode 100644 index 63f5228..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/OriginalNameAttribute.cs +++ /dev/null @@ -1,65 +0,0 @@ -#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 -{ - /// - /// Specifies the original name (in the .proto file) of a named element, - /// such as an enum value. - /// - [AttributeUsage(AttributeTargets.Field)] - public class OriginalNameAttribute : Attribute - { - /// - /// The name of the element in the .proto file. - /// - public string Name { get; set; } - - /// - /// If the name is preferred in the .proto file. - /// - public bool PreferredAlias { get; set; } - - /// - /// Constructs a new attribute instance for the given name. - /// - /// The name of the element in the .proto file. - public OriginalNameAttribute(string name) - { - Name = ProtoPreconditions.CheckNotNull(name, nameof(name)); - PreferredAlias = true; - } - - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs deleted file mode 100644 index e547d83..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/PackageDescriptor.cs +++ /dev/null @@ -1,68 +0,0 @@ -#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 -{ - /// - /// 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. - /// - 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/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs deleted file mode 100644 index ca9c808..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ReflectionUtil.cs +++ /dev/null @@ -1,333 +0,0 @@ -#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.Compatibility; -using System; -using System.Reflection; - -namespace Google.Protobuf.Reflection -{ - /// - /// 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. - /// - internal static class ReflectionUtil - { - static ReflectionUtil() - { - ForceInitialize(); // Handles all reference types - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - ForceInitialize(); - SampleEnumMethod(); - } - - internal static void ForceInitialize() => new ReflectionHelper(); - - /// - /// Empty Type[] used when calling GetProperty to force property instead of indexer fetching. - /// - internal static readonly Type[] EmptyTypes = new Type[0]; - - /// - /// Creates a delegate which will cast the argument to the type that declares the method, - /// call the method on it, then convert the result to object. - /// - /// The method to create a delegate for, which must be declared in an IMessage - /// implementation. - internal static Func CreateFuncIMessageObject(MethodInfo method) => - GetReflectionHelper(method.DeclaringType, method.ReturnType).CreateFuncIMessageObject(method); - - /// - /// Creates a delegate which will cast the argument to the type that declares the method, - /// call the method on it, then convert the result to the specified type. The method is expected - /// to actually return an enum (because of where we're calling it - for oneof cases). Sometimes that - /// means we need some extra work to perform conversions. - /// - /// The method to create a delegate for, which must be declared in an IMessage - /// implementation. - internal static Func CreateFuncIMessageInt32(MethodInfo method) => - GetReflectionHelper(method.DeclaringType, method.ReturnType).CreateFuncIMessageInt32(method); - - /// - /// Creates a delegate which will execute the given method after casting the first argument to - /// the type that declares the method, and the second argument to the first parameter type of the method. - /// - /// The method to create a delegate for, which must be declared in an IMessage - /// implementation. - internal static Action CreateActionIMessageObject(MethodInfo method) => - GetReflectionHelper(method.DeclaringType, method.GetParameters()[0].ParameterType).CreateActionIMessageObject(method); - - /// - /// Creates a delegate which will execute the given method after casting the first argument to - /// type that declares the method. - /// - /// The method to create a delegate for, which must be declared in an IMessage - /// implementation. - internal static Action CreateActionIMessage(MethodInfo method) => - GetReflectionHelper(method.DeclaringType, typeof(object)).CreateActionIMessage(method); - - internal static Func CreateFuncIMessageBool(MethodInfo method) => - GetReflectionHelper(method.DeclaringType, method.ReturnType).CreateFuncIMessageBool(method); - - /// - /// Creates a delegate which will execute the given method after casting the first argument to - /// the type that declares the method, and the second argument to the first parameter type of the method. - /// - internal static IExtensionReflectionHelper CreateExtensionHelper(Extension extension) => - (IExtensionReflectionHelper)Activator.CreateInstance(typeof(ExtensionReflectionHelper<,>).MakeGenericType(extension.TargetType, extension.GetType().GenericTypeArguments[1])); - - /// - /// Creates a reflection helper for the given type arguments. Currently these are created on demand - /// rather than cached; this will be "busy" when initially loading a message's descriptor, but after that - /// they can be garbage collected. We could cache them by type if that proves to be important, but creating - /// an object is pretty cheap. - /// - private static IReflectionHelper GetReflectionHelper(Type t1, Type t2) => - (IReflectionHelper) Activator.CreateInstance(typeof(ReflectionHelper<,>).MakeGenericType(t1, t2)); - - // Non-generic interface allowing us to use an instance of ReflectionHelper without statically - // knowing the types involved. - private interface IReflectionHelper - { - Func CreateFuncIMessageInt32(MethodInfo method); - Action CreateActionIMessage(MethodInfo method); - Func CreateFuncIMessageObject(MethodInfo method); - Action CreateActionIMessageObject(MethodInfo method); - Func CreateFuncIMessageBool(MethodInfo method); - } - - internal interface IExtensionReflectionHelper - { - object GetExtension(IMessage message); - void SetExtension(IMessage message, object value); - bool HasExtension(IMessage message); - void ClearExtension(IMessage message); - } - - private class ReflectionHelper : IReflectionHelper - { - - public Func CreateFuncIMessageInt32(MethodInfo method) - { - // On pleasant runtimes, we can create a Func from a method returning - // an enum based on an int. That's the fast path. - if (CanConvertEnumFuncToInt32Func) - { - var del = (Func) method.CreateDelegate(typeof(Func)); - return message => del((T1) message); - } - else - { - // On some runtimes (e.g. old Mono) the return type has to be exactly correct, - // so we go via boxing. Reflection is already fairly inefficient, and this is - // only used for one-of case checking, fortunately. - var del = (Func) method.CreateDelegate(typeof(Func)); - return message => (int) (object) del((T1) message); - } - } - - public Action CreateActionIMessage(MethodInfo method) - { - var del = (Action) method.CreateDelegate(typeof(Action)); - return message => del((T1) message); - } - - public Func CreateFuncIMessageObject(MethodInfo method) - { - var del = (Func) method.CreateDelegate(typeof(Func)); - return message => del((T1) message); - } - - public Action CreateActionIMessageObject(MethodInfo method) - { - var del = (Action) method.CreateDelegate(typeof(Action)); - return (message, arg) => del((T1) message, (T2) arg); - } - - public Func CreateFuncIMessageBool(MethodInfo method) - { - var del = (Func)method.CreateDelegate(typeof(Func)); - return message => del((T1)message); - } - } - - private class ExtensionReflectionHelper : IExtensionReflectionHelper - where T1 : IExtendableMessage - { - private readonly Extension extension; - - public ExtensionReflectionHelper(Extension extension) - { - this.extension = extension; - } - - public object GetExtension(IMessage message) - { - if (!(message is T1)) - { - throw new InvalidCastException("Cannot access extension on message that isn't IExtensionMessage"); - } - - T1 extensionMessage = (T1)message; - - if (extension is Extension) - { - return extensionMessage.GetExtension(extension as Extension); - } - else if (extension is RepeatedExtension) - { - return extensionMessage.GetExtension(extension as RepeatedExtension); - } - else - { - throw new InvalidCastException("The provided extension is not a valid extension identifier type"); - } - } - - public bool HasExtension(IMessage message) - { - if (!(message is T1)) - { - throw new InvalidCastException("Cannot access extension on message that isn't IExtensionMessage"); - } - - T1 extensionMessage = (T1)message; - - if (extension is Extension) - { - return extensionMessage.HasExtension(extension as Extension); - } - else if (extension is RepeatedExtension) - { - throw new InvalidOperationException("HasValue is not implemented for repeated extensions"); - } - else - { - throw new InvalidCastException("The provided extension is not a valid extension identifier type"); - } - } - - public void SetExtension(IMessage message, object value) - { - if (!(message is T1)) - { - throw new InvalidCastException("Cannot access extension on message that isn't IExtensionMessage"); - } - - T1 extensionMessage = (T1)message; - - if (extension is Extension) - { - extensionMessage.SetExtension(extension as Extension, (T3)value); - } - else if (extension is RepeatedExtension) - { - throw new InvalidOperationException("SetValue is not implemented for repeated extensions"); - } - else - { - throw new InvalidCastException("The provided extension is not a valid extension identifier type"); - } - } - - public void ClearExtension(IMessage message) - { - if (!(message is T1)) - { - throw new InvalidCastException("Cannot access extension on message that isn't IExtensionMessage"); - } - - T1 extensionMessage = (T1)message; - - if (extension is Extension) - { - extensionMessage.ClearExtension(extension as Extension); - } - else if (extension is RepeatedExtension) - { - extensionMessage.GetExtension(extension as RepeatedExtension).Clear(); - } - else - { - throw new InvalidCastException("The provided extension is not a valid extension identifier type"); - } - } - } - - // Runtime compatibility checking code - see ReflectionHelper.CreateFuncIMessageInt32 for - // details about why we're doing this. - - // Deliberately not inside the generic type. We only want to check this once. - private static bool CanConvertEnumFuncToInt32Func { get; } = CheckCanConvertEnumFuncToInt32Func(); - - private static bool CheckCanConvertEnumFuncToInt32Func() - { - try - { - // Try to do the conversion using reflection, so we can see whether it's supported. - MethodInfo method = typeof(ReflectionUtil).GetMethod(nameof(SampleEnumMethod)); - // If this passes, we're in a reasonable runtime. - method.CreateDelegate(typeof(Func)); - return true; - } - catch (ArgumentException) - { - return false; - } - } - - public enum SampleEnum - { - X - } - - // Public to make the reflection simpler. - public static SampleEnum SampleEnumMethod() => SampleEnum.X; - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs deleted file mode 100644 index afb4a69..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/RepeatedFieldAccessor.cs +++ /dev/null @@ -1,65 +0,0 @@ -#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.Reflection; - -namespace Google.Protobuf.Reflection -{ - /// - /// Accessor for repeated fields. - /// - internal sealed class RepeatedFieldAccessor : FieldAccessorBase - { - internal RepeatedFieldAccessor(PropertyInfo property, FieldDescriptor descriptor) : base(property, descriptor) - { - } - - public override void Clear(IMessage message) - { - IList list = (IList) GetValue(message); - list.Clear(); - } - - public override bool HasValue(IMessage message) - { - throw new InvalidOperationException("HasValue is not implemented for repeated fields"); - } - - public override void SetValue(IMessage message, object value) - { - throw new InvalidOperationException("SetValue is not implemented for repeated fields"); - } - - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs deleted file mode 100644 index 54f4df7..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/ServiceDescriptor.cs +++ /dev/null @@ -1,128 +0,0 @@ -#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.Collections; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; - -namespace Google.Protobuf.Reflection -{ - /// - /// Describes a service type. - /// - public sealed class ServiceDescriptor : DescriptorBase - { - private readonly ServiceDescriptorProto proto; - private readonly IList 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); - } - - /// - /// The brief name of the descriptor's target. - /// - public override string Name { get { return proto.Name; } } - - internal override IReadOnlyList GetNestedDescriptorListForField(int fieldNumber) - { - switch (fieldNumber) - { - case ServiceDescriptorProto.MethodFieldNumber: - return (IReadOnlyList) methods; - default: - return null; - } - } - - internal ServiceDescriptorProto Proto { get { return proto; } } - - /// - /// An unmodifiable list of methods in this service. - /// - public IList Methods - { - get { return methods; } - } - - /// - /// Finds a method by name. - /// - /// The unqualified name of the method (e.g. "Foo"). - /// The method's decsriptor, or null if not found. - public MethodDescriptor FindMethodByName(String name) - { - return File.DescriptorPool.FindSymbol(FullName + "." + name); - } - - /// - /// The (possibly empty) set of custom options for this service. - /// - //[Obsolete("CustomOptions are obsolete. Use GetOption")] - public CustomOptions CustomOptions => new CustomOptions(Proto.Options._extensions?.ValuesByNumber); - - /* // uncomment this in the full proto2 support PR - /// - /// Gets a single value enum option for this descriptor - /// - public T GetOption(Extension extension) - { - var value = Proto.Options.GetExtension(extension); - return value is IDeepCloneable clonable ? clonable.Clone() : value; - } - - /// - /// Gets a repeated value enum option for this descriptor - /// - public RepeatedField GetOption(RepeatedExtension extension) - { - return Proto.Options.GetExtension(extension).Clone(); - } - */ - - internal void CrossLink() - { - foreach (MethodDescriptor method in methods) - { - method.CrossLink(); - } - } - } -} - \ No newline at end of file diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/SingleFieldAccessor.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/SingleFieldAccessor.cs deleted file mode 100644 index dfc5b62..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/SingleFieldAccessor.cs +++ /dev/null @@ -1,105 +0,0 @@ -#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; -using Google.Protobuf.Compatibility; - -namespace Google.Protobuf.Reflection -{ - /// - /// Accessor for single fields. - /// - internal sealed class SingleFieldAccessor : FieldAccessorBase - { - // All the work here is actually done in the constructor - it creates the appropriate delegates. - // There are various cases to consider, based on the property type (message, string/bytes, or "genuine" primitive) - // and proto2 vs proto3 for non-message types, as proto3 doesn't support "full" presence detection or default - // values. - - private readonly Action setValueDelegate; - private readonly Action clearDelegate; - private readonly Func hasDelegate; - - internal SingleFieldAccessor(PropertyInfo property, FieldDescriptor descriptor) : base(property, descriptor) - { - if (!property.CanWrite) - { - throw new ArgumentException("Not all required properties/methods available"); - } - setValueDelegate = ReflectionUtil.CreateActionIMessageObject(property.GetSetMethod()); - if (descriptor.File.Proto.Syntax == "proto2") - { - MethodInfo hasMethod = property.DeclaringType.GetRuntimeProperty("Has" + property.Name).GetMethod; - if (hasMethod == null) { - throw new ArgumentException("Not all required properties/methods are available"); - } - hasDelegate = ReflectionUtil.CreateFuncIMessageBool(hasMethod); - MethodInfo clearMethod = property.DeclaringType.GetRuntimeMethod("Clear" + property.Name, ReflectionUtil.EmptyTypes); - if (clearMethod == null) { - throw new ArgumentException("Not all required properties/methods are available"); - } - clearDelegate = ReflectionUtil.CreateActionIMessage(clearMethod); - } - else - { - hasDelegate = message => { - throw new InvalidOperationException("HasValue is not implemented for proto3 fields"); - }; - var clrType = property.PropertyType; - - // TODO: Validate that this is a reasonable single field? (Should be a value type, a message type, or string/ByteString.) - object defaultValue = - descriptor.FieldType == FieldType.Message ? null - : clrType == typeof(string) ? "" - : clrType == typeof(ByteString) ? ByteString.Empty - : Activator.CreateInstance(clrType); - clearDelegate = message => SetValue(message, defaultValue); - } - } - - public override void Clear(IMessage message) - { - clearDelegate(message); - } - - public override bool HasValue(IMessage message) - { - return hasDelegate(message); - } - - public override void SetValue(IMessage message, object value) - { - setValueDelegate(message, value); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/TypeRegistry.cs b/lib/protobuf/csharp/src/Google.Protobuf/Reflection/TypeRegistry.cs deleted file mode 100644 index e94e3e6..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/Reflection/TypeRegistry.cs +++ /dev/null @@ -1,183 +0,0 @@ -#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.Linq; - -namespace Google.Protobuf.Reflection -{ - /// - /// An immutable registry of types which can be looked up by their full name. - /// - public sealed class TypeRegistry - { - /// - /// An empty type registry, containing no types. - /// - public static TypeRegistry Empty { get; } = new TypeRegistry(new Dictionary()); - - private readonly Dictionary fullNameToMessageMap; - - private TypeRegistry(Dictionary fullNameToMessageMap) - { - this.fullNameToMessageMap = fullNameToMessageMap; - } - - /// - /// Attempts to find a message descriptor by its full name. - /// - /// The full name of the message, which is the dot-separated - /// combination of package, containing messages and message name - /// The message descriptor corresponding to or null - /// if there is no such message descriptor. - public MessageDescriptor Find(string fullName) - { - MessageDescriptor ret; - // Ignore the return value as ret will end up with the right value either way. - fullNameToMessageMap.TryGetValue(fullName, out ret); - return ret; - } - - /// - /// Creates a type registry from the specified set of file descriptors. - /// - /// - /// This is a convenience overload for - /// to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - /// - /// The set of files to include in the registry. Must not contain null values. - /// A type registry for the given files. - public static TypeRegistry FromFiles(params FileDescriptor[] fileDescriptors) - { - return FromFiles((IEnumerable) fileDescriptors); - } - - /// - /// Creates a type registry from the specified set of file descriptors. - /// - /// - /// All message types within all the specified files are added to the registry, and - /// the dependencies of the specified files are also added, recursively. - /// - /// The set of files to include in the registry. Must not contain null values. - /// A type registry for the given files. - public static TypeRegistry FromFiles(IEnumerable fileDescriptors) - { - ProtoPreconditions.CheckNotNull(fileDescriptors, nameof(fileDescriptors)); - var builder = new Builder(); - foreach (var file in fileDescriptors) - { - builder.AddFile(file); - } - return builder.Build(); - } - - /// - /// Creates a type registry from the file descriptor parents of the specified set of message descriptors. - /// - /// - /// This is a convenience overload for - /// to allow calls such as TypeRegistry.FromFiles(descriptor1, descriptor2). - /// - /// The set of message descriptors to use to identify file descriptors to include in the registry. - /// Must not contain null values. - /// A type registry for the given files. - public static TypeRegistry FromMessages(params MessageDescriptor[] messageDescriptors) - { - return FromMessages((IEnumerable) messageDescriptors); - } - - /// - /// Creates a type registry from the file descriptor parents of the specified set of message descriptors. - /// - /// - /// The specified message descriptors are only used to identify their file descriptors; the returned registry - /// contains all the types within the file descriptors which contain the specified message descriptors (and - /// the dependencies of those files), not just the specified messages. - /// - /// The set of message descriptors to use to identify file descriptors to include in the registry. - /// Must not contain null values. - /// A type registry for the given files. - public static TypeRegistry FromMessages(IEnumerable messageDescriptors) - { - ProtoPreconditions.CheckNotNull(messageDescriptors, nameof(messageDescriptors)); - return FromFiles(messageDescriptors.Select(md => md.File)); - } - - /// - /// Builder class which isn't exposed, but acts as a convenient alternative to passing round two dictionaries in recursive calls. - /// - private class Builder - { - private readonly Dictionary types; - private readonly HashSet fileDescriptorNames; - - internal Builder() - { - types = new Dictionary(); - fileDescriptorNames = new HashSet(); - } - - internal void AddFile(FileDescriptor fileDescriptor) - { - if (!fileDescriptorNames.Add(fileDescriptor.Name)) - { - return; - } - foreach (var dependency in fileDescriptor.Dependencies) - { - AddFile(dependency); - } - foreach (var message in fileDescriptor.MessageTypes) - { - AddMessage(message); - } - } - - private void AddMessage(MessageDescriptor messageDescriptor) - { - foreach (var nestedType in messageDescriptor.NestedTypes) - { - AddMessage(nestedType); - } - // This will overwrite any previous entry. Given that each file should - // only be added once, this could be a problem such as package A.B with type C, - // and package A with type B.C... it's unclear what we should do in that case. - types[messageDescriptor.FullName] = messageDescriptor; - } - - internal TypeRegistry Build() - { - return new TypeRegistry(types); - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/UnknownField.cs b/lib/protobuf/csharp/src/Google.Protobuf/UnknownField.cs deleted file mode 100644 index e3ce0e8..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/UnknownField.cs +++ /dev/null @@ -1,290 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2017 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.Collections; - -namespace Google.Protobuf -{ - /// - /// Represents a single field in an UnknownFieldSet. - /// - /// An UnknownField consists of four lists of values. The lists correspond - /// to the four "wire types" used in the protocol buffer binary format. - /// Normally, only one of the four lists will contain any values, since it - /// is impossible to define a valid message type that declares two different - /// types for the same field number. However, the code is designed to allow - /// for the case where the same unknown field number is encountered using - /// multiple different wire types. - /// - /// - internal sealed class UnknownField - { - private List varintList; - private List fixed32List; - private List fixed64List; - private List lengthDelimitedList; - private List groupList; - - /// - /// Creates a new UnknownField. - /// - public UnknownField() - { - } - - /// - /// Checks if two unknown field are equal. - /// - public override bool Equals(object other) - { - if (ReferenceEquals(this, other)) - { - return true; - } - UnknownField otherField = other as UnknownField; - return otherField != null - && Lists.Equals(varintList, otherField.varintList) - && Lists.Equals(fixed32List, otherField.fixed32List) - && Lists.Equals(fixed64List, otherField.fixed64List) - && Lists.Equals(lengthDelimitedList, otherField.lengthDelimitedList) - && Lists.Equals(groupList, otherField.groupList); - } - - /// - /// Get the hash code of the unknown field. - /// - public override int GetHashCode() - { - int hash = 43; - hash = hash * 47 + Lists.GetHashCode(varintList); - hash = hash * 47 + Lists.GetHashCode(fixed32List); - hash = hash * 47 + Lists.GetHashCode(fixed64List); - hash = hash * 47 + Lists.GetHashCode(lengthDelimitedList); - hash = hash * 47 + Lists.GetHashCode(groupList); - return hash; - } - - /// - /// Serializes the field, including the field number, and writes it to - /// - /// - /// The unknown field number. - /// The CodedOutputStream to write to. - internal void WriteTo(int fieldNumber, CodedOutputStream output) - { - if (varintList != null) - { - foreach (ulong value in varintList) - { - output.WriteTag(fieldNumber, WireFormat.WireType.Varint); - output.WriteUInt64(value); - } - } - if (fixed32List != null) - { - foreach (uint value in fixed32List) - { - output.WriteTag(fieldNumber, WireFormat.WireType.Fixed32); - output.WriteFixed32(value); - } - } - if (fixed64List != null) - { - foreach (ulong value in fixed64List) - { - output.WriteTag(fieldNumber, WireFormat.WireType.Fixed64); - output.WriteFixed64(value); - } - } - if (lengthDelimitedList != null) - { - foreach (ByteString value in lengthDelimitedList) - { - output.WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited); - output.WriteBytes(value); - } - } - if (groupList != null) - { - foreach (UnknownFieldSet value in groupList) - { - output.WriteTag(fieldNumber, WireFormat.WireType.StartGroup); - value.WriteTo(output); - output.WriteTag(fieldNumber, WireFormat.WireType.EndGroup); - } - } - } - - /// - /// Computes the number of bytes required to encode this field, including field - /// number. - /// - internal int GetSerializedSize(int fieldNumber) - { - int result = 0; - if (varintList != null) - { - result += CodedOutputStream.ComputeTagSize(fieldNumber) * varintList.Count; - foreach (ulong value in varintList) - { - result += CodedOutputStream.ComputeUInt64Size(value); - } - } - if (fixed32List != null) - { - result += CodedOutputStream.ComputeTagSize(fieldNumber) * fixed32List.Count; - result += CodedOutputStream.ComputeFixed32Size(1) * fixed32List.Count; - } - if (fixed64List != null) - { - result += CodedOutputStream.ComputeTagSize(fieldNumber) * fixed64List.Count; - result += CodedOutputStream.ComputeFixed64Size(1) * fixed64List.Count; - } - if (lengthDelimitedList != null) - { - result += CodedOutputStream.ComputeTagSize(fieldNumber) * lengthDelimitedList.Count; - foreach (ByteString value in lengthDelimitedList) - { - result += CodedOutputStream.ComputeBytesSize(value); - } - } - if (groupList != null) - { - result += CodedOutputStream.ComputeTagSize(fieldNumber) * 2 * groupList.Count; - foreach (UnknownFieldSet value in groupList) - { - result += value.CalculateSize(); - } - } - return result; - } - - /// - /// Merge the values in into this field. For each list - /// of values, 's values are append to the ones in this - /// field. - /// - internal UnknownField MergeFrom(UnknownField other) - { - varintList = AddAll(varintList, other.varintList); - fixed32List = AddAll(fixed32List, other.fixed32List); - fixed64List = AddAll(fixed64List, other.fixed64List); - lengthDelimitedList = AddAll(lengthDelimitedList, other.lengthDelimitedList); - groupList = AddAll(groupList, other.groupList); - return this; - } - - /// - /// Returns a new list containing all of the given specified values from - /// both the and lists. - /// If is null and is empty, - /// null is returned. Otherwise, either a new list is created (if - /// is null) or the elements of are added to . - /// - private static List AddAll(List current, IList extras) - { - if (extras.Count == 0) - { - return current; - } - if (current == null) - { - current = new List(extras); - } - else - { - current.AddRange(extras); - } - return current; - } - - /// - /// Adds a varint value. - /// - internal UnknownField AddVarint(ulong value) - { - varintList = Add(varintList, value); - return this; - } - - /// - /// Adds a fixed32 value. - /// - internal UnknownField AddFixed32(uint value) - { - fixed32List = Add(fixed32List, value); - return this; - } - - /// - /// Adds a fixed64 value. - /// - internal UnknownField AddFixed64(ulong value) - { - fixed64List = Add(fixed64List, value); - return this; - } - - /// - /// Adds a length-delimited value. - /// - internal UnknownField AddLengthDelimited(ByteString value) - { - lengthDelimitedList = Add(lengthDelimitedList, value); - return this; - } - - internal UnknownField AddGroup(UnknownFieldSet value) - { - groupList = Add(groupList, value); - return this; - } - - /// - /// Adds to the , creating - /// a new list if is null. The list is returned - either - /// the original reference or the new list. - /// - private static List Add(List list, T value) - { - if (list == null) - { - list = new List(); - } - list.Add(value); - return list; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/UnknownFieldSet.cs b/lib/protobuf/csharp/src/Google.Protobuf/UnknownFieldSet.cs deleted file mode 100644 index d136cf1..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/UnknownFieldSet.cs +++ /dev/null @@ -1,339 +0,0 @@ -#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.Generic; -using System.IO; -using Google.Protobuf.Reflection; - -namespace Google.Protobuf -{ - /// - /// Used to keep track of fields which were seen when parsing a protocol message - /// but whose field numbers or types are unrecognized. This most frequently - /// occurs when new fields are added to a message type and then messages containing - /// those fields are read by old software that was built before the new types were - /// added. - /// - /// Most users will never need to use this class directly. - /// - public sealed partial class UnknownFieldSet - { - private readonly IDictionary fields; - - /// - /// Creates a new UnknownFieldSet. - /// - internal UnknownFieldSet() - { - this.fields = new Dictionary(); - } - - /// - /// Checks whether or not the given field number is present in the set. - /// - internal bool HasField(int field) - { - return fields.ContainsKey(field); - } - - /// - /// Serializes the set and writes it to . - /// - public void WriteTo(CodedOutputStream output) - { - foreach (KeyValuePair entry in fields) - { - entry.Value.WriteTo(entry.Key, output); - } - } - - /// - /// Gets the number of bytes required to encode this set. - /// - public int CalculateSize() - { - int result = 0; - foreach (KeyValuePair entry in fields) - { - result += entry.Value.GetSerializedSize(entry.Key); - } - return result; - } - - /// - /// Checks if two unknown field sets are equal. - /// - public override bool Equals(object other) - { - if (ReferenceEquals(this, other)) - { - return true; - } - UnknownFieldSet otherSet = other as UnknownFieldSet; - IDictionary otherFields = otherSet.fields; - if (fields.Count != otherFields.Count) - { - return false; - } - foreach (KeyValuePair leftEntry in fields) - { - UnknownField rightValue; - if (!otherFields.TryGetValue(leftEntry.Key, out rightValue)) - { - return false; - } - if (!leftEntry.Value.Equals(rightValue)) - { - return false; - } - } - return true; - } - - /// - /// Gets the unknown field set's hash code. - /// - public override int GetHashCode() - { - int ret = 1; - foreach (KeyValuePair field in fields) - { - // Use ^ here to make the field order irrelevant. - int hash = field.Key.GetHashCode() ^ field.Value.GetHashCode(); - ret ^= hash; - } - return ret; - } - - // Optimization: We keep around the last field that was - // modified so that we can efficiently add to it multiple times in a - // row (important when parsing an unknown repeated field). - private int lastFieldNumber; - private UnknownField lastField; - - private UnknownField GetOrAddField(int number) - { - if (lastField != null && number == lastFieldNumber) - { - return lastField; - } - if (number == 0) - { - return null; - } - - UnknownField existing; - if (fields.TryGetValue(number, out existing)) - { - return existing; - } - lastField = new UnknownField(); - AddOrReplaceField(number, lastField); - lastFieldNumber = number; - return lastField; - } - - /// - /// Adds a field to the set. If a field with the same number already exists, it - /// is replaced. - /// - internal UnknownFieldSet AddOrReplaceField(int number, UnknownField field) - { - if (number == 0) - { - throw new ArgumentOutOfRangeException("number", "Zero is not a valid field number."); - } - fields[number] = field; - return this; - } - - /// - /// Parse a single field from and merge it - /// into this set. - /// - /// The coded input stream containing the field - /// false if the tag is an "end group" tag, true otherwise - private bool MergeFieldFrom(CodedInputStream input) - { - uint tag = input.LastTag; - int number = WireFormat.GetTagFieldNumber(tag); - switch (WireFormat.GetTagWireType(tag)) - { - case WireFormat.WireType.Varint: - { - ulong uint64 = input.ReadUInt64(); - GetOrAddField(number).AddVarint(uint64); - return true; - } - case WireFormat.WireType.Fixed32: - { - uint uint32 = input.ReadFixed32(); - GetOrAddField(number).AddFixed32(uint32); - return true; - } - case WireFormat.WireType.Fixed64: - { - ulong uint64 = input.ReadFixed64(); - GetOrAddField(number).AddFixed64(uint64); - return true; - } - case WireFormat.WireType.LengthDelimited: - { - ByteString bytes = input.ReadBytes(); - GetOrAddField(number).AddLengthDelimited(bytes); - return true; - } - case WireFormat.WireType.StartGroup: - { - uint endTag = WireFormat.MakeTag(number, WireFormat.WireType.EndGroup); - UnknownFieldSet set = new UnknownFieldSet(); - while (input.ReadTag() != endTag) - { - set.MergeFieldFrom(input); - } - GetOrAddField(number).AddGroup(set); - return true; - } - case WireFormat.WireType.EndGroup: - { - return false; - } - default: - throw InvalidProtocolBufferException.InvalidWireType(); - } - } - - /// - /// Create a new UnknownFieldSet if unknownFields is null. - /// Parse a single field from and merge it - /// into unknownFields. If is configured to discard unknown fields, - /// will be returned as-is and the field will be skipped. - /// - /// The UnknownFieldSet which need to be merged - /// The coded input stream containing the field - /// The merged UnknownFieldSet - public static UnknownFieldSet MergeFieldFrom(UnknownFieldSet unknownFields, - CodedInputStream input) - { - if (input.DiscardUnknownFields) - { - input.SkipLastField(); - return unknownFields; - } - if (unknownFields == null) - { - unknownFields = new UnknownFieldSet(); - } - if (!unknownFields.MergeFieldFrom(input)) - { - throw new InvalidProtocolBufferException("Merge an unknown field of end-group tag, indicating that the corresponding start-group was missing."); // match the old code-gen - } - return unknownFields; - } - - /// - /// Merges the fields from into this set. - /// If a field number exists in both sets, the values in - /// will be appended to the values in this set. - /// - private UnknownFieldSet MergeFrom(UnknownFieldSet other) - { - if (other != null) - { - foreach (KeyValuePair entry in other.fields) - { - MergeField(entry.Key, entry.Value); - } - } - return this; - } - - /// - /// Created a new UnknownFieldSet to if - /// needed and merges the fields from into the first set. - /// If a field number exists in both sets, the values in - /// will be appended to the values in this set. - /// - public static UnknownFieldSet MergeFrom(UnknownFieldSet unknownFields, - UnknownFieldSet other) - { - if (other == null) - { - return unknownFields; - } - if (unknownFields == null) - { - unknownFields = new UnknownFieldSet(); - } - unknownFields.MergeFrom(other); - return unknownFields; - } - - - /// - /// Adds a field to the unknown field set. If a field with the same - /// number already exists, the two are merged. - /// - private UnknownFieldSet MergeField(int number, UnknownField field) - { - if (number == 0) - { - throw new ArgumentOutOfRangeException("number", "Zero is not a valid field number."); - } - if (HasField(number)) - { - GetOrAddField(number).MergeFrom(field); - } - else - { - AddOrReplaceField(number, field); - } - return this; - } - - /// - /// Clone an unknown field set from . - /// - public static UnknownFieldSet Clone(UnknownFieldSet other) - { - if (other == null) - { - return null; - } - UnknownFieldSet unknownFields = new UnknownFieldSet(); - unknownFields.MergeFrom(other); - return unknownFields; - } - } -} - diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs deleted file mode 100644 index 09e0e29..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Any.cs +++ /dev/null @@ -1,315 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/any.proto - public static partial class AnyReflection { - - #region Descriptor - /// File descriptor for google/protobuf/any.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static AnyReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvEg9nb29nbGUucHJvdG9idWYi", - "JgoDQW55EhAKCHR5cGVfdXJsGAEgASgJEg0KBXZhbHVlGAIgASgMQm8KE2Nv", - "bS5nb29nbGUucHJvdG9idWZCCEFueVByb3RvUAFaJWdpdGh1Yi5jb20vZ29s", - "YW5nL3Byb3RvYnVmL3B0eXBlcy9hbnmiAgNHUEKqAh5Hb29nbGUuUHJvdG9i", - "dWYuV2VsbEtub3duVHlwZXNiBnByb3RvMw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Any), global::Google.Protobuf.WellKnownTypes.Any.Parser, new[]{ "TypeUrl", "Value" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// `Any` contains an arbitrary serialized protocol buffer message along with a - /// URL that describes the type of the serialized message. - /// - /// Protobuf library provides support to pack/unpack Any values in the form - /// of utility functions or additional generated methods of the Any type. - /// - /// Example 1: Pack and unpack a message in C++. - /// - /// Foo foo = ...; - /// Any any; - /// any.PackFrom(foo); - /// ... - /// if (any.UnpackTo(&foo)) { - /// ... - /// } - /// - /// Example 2: Pack and unpack a message in Java. - /// - /// Foo foo = ...; - /// Any any = Any.pack(foo); - /// ... - /// if (any.is(Foo.class)) { - /// foo = any.unpack(Foo.class); - /// } - /// - /// Example 3: Pack and unpack a message in Python. - /// - /// foo = Foo(...) - /// any = Any() - /// any.Pack(foo) - /// ... - /// if any.Is(Foo.DESCRIPTOR): - /// any.Unpack(foo) - /// ... - /// - /// Example 4: Pack and unpack a message in Go - /// - /// foo := &pb.Foo{...} - /// any, err := ptypes.MarshalAny(foo) - /// ... - /// foo := &pb.Foo{} - /// if err := ptypes.UnmarshalAny(any, foo); err != nil { - /// ... - /// } - /// - /// The pack methods provided by protobuf library will by default use - /// 'type.googleapis.com/full.type.name' as the type URL and the unpack - /// methods only use the fully qualified type name after the last '/' - /// in the type URL, for example "foo.bar.com/x/y.z" will yield type - /// name "y.z". - /// - /// JSON - /// ==== - /// The JSON representation of an `Any` value uses the regular - /// representation of the deserialized, embedded message, with an - /// additional field `@type` which contains the type URL. Example: - /// - /// package google.profile; - /// message Person { - /// string first_name = 1; - /// string last_name = 2; - /// } - /// - /// { - /// "@type": "type.googleapis.com/google.profile.Person", - /// "firstName": <string>, - /// "lastName": <string> - /// } - /// - /// If the embedded message type is well-known and has a custom JSON - /// representation, that representation will be embedded adding a field - /// `value` which holds the custom JSON in addition to the `@type` - /// field. Example (for message [google.protobuf.Duration][]): - /// - /// { - /// "@type": "type.googleapis.com/google.protobuf.Duration", - /// "value": "1.212s" - /// } - /// - public sealed partial class Any : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Any()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Any() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Any(Any other) : this() { - typeUrl_ = other.typeUrl_; - value_ = other.value_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Any Clone() { - return new Any(this); - } - - /// Field number for the "type_url" field. - public const int TypeUrlFieldNumber = 1; - private string typeUrl_ = ""; - /// - /// A URL/resource name that uniquely identifies the type of the serialized - /// protocol buffer message. This string must contain at least - /// one "/" character. The last segment of the URL's path must represent - /// the fully qualified name of the type (as in - /// `path/google.protobuf.Duration`). The name should be in a canonical form - /// (e.g., leading "." is not accepted). - /// - /// In practice, teams usually precompile into the binary all types that they - /// expect it to use in the context of Any. However, for URLs which use the - /// scheme `http`, `https`, or no scheme, one can optionally set up a type - /// server that maps type URLs to message definitions as follows: - /// - /// * If no scheme is provided, `https` is assumed. - /// * An HTTP GET on the URL must yield a [google.protobuf.Type][] - /// value in binary format, or produce an error. - /// * Applications are allowed to cache lookup results based on the - /// URL, or have them precompiled into a binary to avoid any - /// lookup. Therefore, binary compatibility needs to be preserved - /// on changes to types. (Use versioned type names to manage - /// breaking changes.) - /// - /// Note: this functionality is not currently available in the official - /// protobuf release, and it is not used for type URLs beginning with - /// type.googleapis.com. - /// - /// Schemes other than `http`, `https` (or the empty scheme) might be - /// used with implementation specific semantics. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TypeUrl { - get { return typeUrl_; } - set { - typeUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "value" field. - public const int ValueFieldNumber = 2; - private pb::ByteString value_ = pb::ByteString.Empty; - /// - /// Must be a valid serialized protocol buffer of the above specified type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pb::ByteString Value { - get { return value_; } - set { - value_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Any); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (TypeUrl.Length != 0) hash ^= TypeUrl.GetHashCode(); - if (Value.Length != 0) hash ^= Value.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - TypeUrl = input.ReadString(); - break; - } - case 18: { - Value = input.ReadBytes(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/AnyPartial.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/AnyPartial.cs deleted file mode 100644 index 49f2599..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/AnyPartial.cs +++ /dev/null @@ -1,147 +0,0 @@ -#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 Google.Protobuf.Reflection; - -namespace Google.Protobuf.WellKnownTypes -{ - public partial class Any - { - private const string DefaultPrefix = "type.googleapis.com"; - - // This could be moved to MessageDescriptor if we wanted to, but keeping it here means - // all the Any-specific code is in the same place. - private static string GetTypeUrl(MessageDescriptor descriptor, string prefix) => - prefix.EndsWith("/") ? prefix + descriptor.FullName : prefix + "/" + descriptor.FullName; - - /// - /// Retrieves the type name for a type URL, matching the - /// of the packed message type. - /// - /// - /// - /// This is always just the last part of the URL, after the final slash. No validation of - /// anything before the trailing slash is performed. If the type URL does not include a slash, - /// an empty string is returned rather than an exception being thrown; this won't match any types, - /// and the calling code is probably in a better position to give a meaningful error. - /// - /// - /// There is no handling of fragments or queries at the moment. - /// - /// - /// The URL to extract the type name from - /// The type name - public static string GetTypeName(string typeUrl) - { - ProtoPreconditions.CheckNotNull(typeUrl, nameof(typeUrl)); - int lastSlash = typeUrl.LastIndexOf('/'); - return lastSlash == -1 ? "" : typeUrl.Substring(lastSlash + 1); - } - - /// - /// Returns a bool indictating whether this Any message is of the target message type - /// - /// The descriptor of the message type - /// true if the type name matches the descriptor's full name or false otherwise - public bool Is(MessageDescriptor descriptor) - { - ProtoPreconditions.CheckNotNull(descriptor, nameof(descriptor)); - return GetTypeName(TypeUrl) == descriptor.FullName; - } - - /// - /// Unpacks the content of this Any message into the target message type, - /// which must match the type URL within this Any message. - /// - /// The type of message to unpack the content into. - /// The unpacked message. - /// The target message type doesn't match the type URL in this message - public T Unpack() where T : IMessage, new() - { - // Note: this doesn't perform as well is it might. We could take a MessageParser in an alternative overload, - // which would be expected to perform slightly better... although the difference is likely to be negligible. - T target = new T(); - if (GetTypeName(TypeUrl) != target.Descriptor.FullName) - { - throw new InvalidProtocolBufferException( - $"Full type name for {target.Descriptor.Name} is {target.Descriptor.FullName}; Any message's type url is {TypeUrl}"); - } - target.MergeFrom(Value); - return target; - } - - /// - /// Attempts to unpack the content of this Any message into the target message type, - /// if it matches the type URL within this Any message. - /// - /// The type of message to attempt to unpack the content into. - /// true if the message was successfully unpacked; false if the type name didn't match - public bool TryUnpack(out T result) where T : IMessage, new() - { - // Note: deliberately avoid writing anything to result until the end, in case it's being - // monitored by other threads. (That would be a bug in the calling code, but let's not make it worse.) - T target = new T(); - if (GetTypeName(TypeUrl) != target.Descriptor.FullName) - { - result = default(T); // Can't use null as there's no class constraint, but this always *will* be null in real usage. - return false; - } - target.MergeFrom(Value); - result = target; - return true; - } - - /// - /// Packs the specified message into an Any message using a type URL prefix of "type.googleapis.com". - /// - /// The message to pack. - /// An Any message with the content and type URL of . - public static Any Pack(IMessage message) => Pack(message, DefaultPrefix); - - /// - /// Packs the specified message into an Any message using the specified type URL prefix. - /// - /// The message to pack. - /// The prefix for the type URL. - /// An Any message with the content and type URL of . - public static Any Pack(IMessage message, string typeUrlPrefix) - { - ProtoPreconditions.CheckNotNull(message, nameof(message)); - ProtoPreconditions.CheckNotNull(typeUrlPrefix, nameof(typeUrlPrefix)); - return new Any - { - TypeUrl = GetTypeUrl(message.Descriptor, typeUrlPrefix), - Value = message.ToByteString() - }; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs deleted file mode 100644 index 06a9905..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Api.cs +++ /dev/null @@ -1,948 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/api.proto - public static partial class ApiReflection { - - #region Descriptor - /// File descriptor for google/protobuf/api.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static ApiReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chlnb29nbGUvcHJvdG9idWYvYXBpLnByb3RvEg9nb29nbGUucHJvdG9idWYa", - "JGdvb2dsZS9wcm90b2J1Zi9zb3VyY2VfY29udGV4dC5wcm90bxoaZ29vZ2xl", - "L3Byb3RvYnVmL3R5cGUucHJvdG8igQIKA0FwaRIMCgRuYW1lGAEgASgJEigK", - "B21ldGhvZHMYAiADKAsyFy5nb29nbGUucHJvdG9idWYuTWV0aG9kEigKB29w", - "dGlvbnMYAyADKAsyFy5nb29nbGUucHJvdG9idWYuT3B0aW9uEg8KB3ZlcnNp", - "b24YBCABKAkSNgoOc291cmNlX2NvbnRleHQYBSABKAsyHi5nb29nbGUucHJv", - "dG9idWYuU291cmNlQ29udGV4dBImCgZtaXhpbnMYBiADKAsyFi5nb29nbGUu", - "cHJvdG9idWYuTWl4aW4SJwoGc3ludGF4GAcgASgOMhcuZ29vZ2xlLnByb3Rv", - "YnVmLlN5bnRheCLVAQoGTWV0aG9kEgwKBG5hbWUYASABKAkSGAoQcmVxdWVz", - "dF90eXBlX3VybBgCIAEoCRIZChFyZXF1ZXN0X3N0cmVhbWluZxgDIAEoCBIZ", - "ChFyZXNwb25zZV90eXBlX3VybBgEIAEoCRIaChJyZXNwb25zZV9zdHJlYW1p", - "bmcYBSABKAgSKAoHb3B0aW9ucxgGIAMoCzIXLmdvb2dsZS5wcm90b2J1Zi5P", - "cHRpb24SJwoGc3ludGF4GAcgASgOMhcuZ29vZ2xlLnByb3RvYnVmLlN5bnRh", - "eCIjCgVNaXhpbhIMCgRuYW1lGAEgASgJEgwKBHJvb3QYAiABKAlCdQoTY29t", - "Lmdvb2dsZS5wcm90b2J1ZkIIQXBpUHJvdG9QAVorZ29vZ2xlLmdvbGFuZy5v", - "cmcvZ2VucHJvdG8vcHJvdG9idWYvYXBpO2FwaaICA0dQQqoCHkdvb2dsZS5Q", - "cm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Api), global::Google.Protobuf.WellKnownTypes.Api.Parser, new[]{ "Name", "Methods", "Options", "Version", "SourceContext", "Mixins", "Syntax" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Method), global::Google.Protobuf.WellKnownTypes.Method.Parser, new[]{ "Name", "RequestTypeUrl", "RequestStreaming", "ResponseTypeUrl", "ResponseStreaming", "Options", "Syntax" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Mixin), global::Google.Protobuf.WellKnownTypes.Mixin.Parser, new[]{ "Name", "Root" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// Api is a light-weight descriptor for an API Interface. - /// - /// Interfaces are also described as "protocol buffer services" in some contexts, - /// such as by the "service" keyword in a .proto file, but they are different - /// from API Services, which represent a concrete implementation of an interface - /// as opposed to simply a description of methods and bindings. They are also - /// sometimes simply referred to as "APIs" in other contexts, such as the name of - /// this message itself. See https://cloud.google.com/apis/design/glossary for - /// detailed terminology. - /// - public sealed partial class Api : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Api()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Api() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - mixins_ = other.mixins_.Clone(); - syntax_ = other.syntax_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Api Clone() { - return new Api(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// The fully qualified name of this interface, including package name - /// followed by the interface's simple name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "methods" field. - public const int MethodsFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_methods_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Method.Parser); - private readonly pbc::RepeatedField methods_ = new pbc::RepeatedField(); - /// - /// The methods of this interface, in unspecified order. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Methods { - get { return methods_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// Any metadata attached to the interface. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - /// Field number for the "version" field. - public const int VersionFieldNumber = 4; - private string version_ = ""; - /// - /// A version string for this interface. If specified, must have the form - /// `major-version.minor-version`, as in `1.10`. If the minor version is - /// omitted, it defaults to zero. If the entire version field is empty, the - /// major version is derived from the package name, as outlined below. If the - /// field is not empty, the version in the package name will be verified to be - /// consistent with what is provided here. - /// - /// The versioning schema uses [semantic - /// versioning](http://semver.org) where the major version number - /// indicates a breaking change and the minor version an additive, - /// non-breaking change. Both version numbers are signals to users - /// what to expect from different versions, and should be carefully - /// chosen based on the product plan. - /// - /// The major version is also reflected in the package name of the - /// interface, which must end in `v<major-version>`, as in - /// `google.feature.v1`. For major versions 0 and 1, the suffix can - /// be omitted. Zero major versions must only be used for - /// experimental, non-GA interfaces. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Version { - get { return version_; } - set { - version_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "source_context" field. - public const int SourceContextFieldNumber = 5; - private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_; - /// - /// Source context for the protocol buffer service represented by this - /// message. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext { - get { return sourceContext_; } - set { - sourceContext_ = value; - } - } - - /// Field number for the "mixins" field. - public const int MixinsFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_mixins_codec - = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.WellKnownTypes.Mixin.Parser); - private readonly pbc::RepeatedField mixins_ = new pbc::RepeatedField(); - /// - /// Included interfaces. See [Mixin][]. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Mixins { - get { return mixins_; } - } - - /// Field number for the "syntax" field. - public const int SyntaxFieldNumber = 7; - private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.Proto2; - /// - /// The source syntax of the service. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Syntax Syntax { - get { return syntax_; } - set { - syntax_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Api); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - if(!mixins_.Equals(other.mixins_)) return false; - if (Syntax != other.Syntax) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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(); - hash ^= mixins_.GetHashCode(); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) hash ^= Syntax.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - mixins_.WriteTo(output, _repeated_mixins_codec); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - output.WriteRawTag(56); - output.WriteEnum((int) Syntax); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - size += mixins_.CalculateSize(_repeated_mixins_codec); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - mixins_.Add(other.mixins_); - if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - Syntax = other.Syntax; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - case 50: { - mixins_.AddEntriesFrom(input, _repeated_mixins_codec); - break; - } - case 56: { - Syntax = (global::Google.Protobuf.WellKnownTypes.Syntax) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// Method represents a method of an API interface. - /// - public sealed partial class Method : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Method()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Method() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Method(Method other) : this() { - name_ = other.name_; - requestTypeUrl_ = other.requestTypeUrl_; - requestStreaming_ = other.requestStreaming_; - responseTypeUrl_ = other.responseTypeUrl_; - responseStreaming_ = other.responseStreaming_; - options_ = other.options_.Clone(); - syntax_ = other.syntax_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Method Clone() { - return new Method(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// The simple name of this method. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "request_type_url" field. - public const int RequestTypeUrlFieldNumber = 2; - private string requestTypeUrl_ = ""; - /// - /// A URL of the input message type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string RequestTypeUrl { - get { return requestTypeUrl_; } - set { - requestTypeUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "request_streaming" field. - public const int RequestStreamingFieldNumber = 3; - private bool requestStreaming_; - /// - /// If true, the request is streamed. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool RequestStreaming { - get { return requestStreaming_; } - set { - requestStreaming_ = value; - } - } - - /// Field number for the "response_type_url" field. - public const int ResponseTypeUrlFieldNumber = 4; - private string responseTypeUrl_ = ""; - /// - /// The URL of the output message type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string ResponseTypeUrl { - get { return responseTypeUrl_; } - set { - responseTypeUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "response_streaming" field. - public const int ResponseStreamingFieldNumber = 5; - private bool responseStreaming_; - /// - /// If true, the response is streamed. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool ResponseStreaming { - get { return responseStreaming_; } - set { - responseStreaming_ = value; - } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 6; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(50, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// Any metadata attached to the method. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - /// Field number for the "syntax" field. - public const int SyntaxFieldNumber = 7; - private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.Proto2; - /// - /// The source syntax of this method. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Syntax Syntax { - get { return syntax_; } - set { - syntax_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Method); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - if (Syntax != other.Syntax) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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(); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) hash ^= Syntax.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - output.WriteRawTag(56); - output.WriteEnum((int) Syntax); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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_); - if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - Syntax = other.Syntax; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - case 56: { - Syntax = (global::Google.Protobuf.WellKnownTypes.Syntax) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// Declares an API Interface to be included in this interface. The including - /// interface must redeclare all the methods from the included interface, but - /// documentation and options are inherited as follows: - /// - /// - If after comment and whitespace stripping, the documentation - /// string of the redeclared method is empty, it will be inherited - /// from the original method. - /// - /// - Each annotation belonging to the service config (http, - /// visibility) which is not set in the redeclared method will be - /// inherited. - /// - /// - If an http annotation is inherited, the path pattern will be - /// modified as follows. Any version prefix will be replaced by the - /// version of the including interface plus the [root][] path if - /// specified. - /// - /// Example of a simple mixin: - /// - /// package google.acl.v1; - /// service AccessControl { - /// // Get the underlying ACL object. - /// rpc GetAcl(GetAclRequest) returns (Acl) { - /// option (google.api.http).get = "/v1/{resource=**}:getAcl"; - /// } - /// } - /// - /// package google.storage.v2; - /// service Storage { - /// rpc GetAcl(GetAclRequest) returns (Acl); - /// - /// // Get a data record. - /// rpc GetData(GetDataRequest) returns (Data) { - /// option (google.api.http).get = "/v2/{resource=**}"; - /// } - /// } - /// - /// Example of a mixin configuration: - /// - /// apis: - /// - name: google.storage.v2.Storage - /// mixins: - /// - name: google.acl.v1.AccessControl - /// - /// The mixin construct implies that all methods in `AccessControl` are - /// also declared with same name and request/response types in - /// `Storage`. A documentation generator or annotation processor will - /// see the effective `Storage.GetAcl` method after inherting - /// documentation and annotations as follows: - /// - /// service Storage { - /// // Get the underlying ACL object. - /// rpc GetAcl(GetAclRequest) returns (Acl) { - /// option (google.api.http).get = "/v2/{resource=**}:getAcl"; - /// } - /// ... - /// } - /// - /// Note how the version in the path pattern changed from `v1` to `v2`. - /// - /// If the `root` field in the mixin is specified, it should be a - /// relative path under which inherited HTTP paths are placed. Example: - /// - /// apis: - /// - name: google.storage.v2.Storage - /// mixins: - /// - name: google.acl.v1.AccessControl - /// root: acls - /// - /// This implies the following inherited HTTP annotation: - /// - /// service Storage { - /// // Get the underlying ACL object. - /// rpc GetAcl(GetAclRequest) returns (Acl) { - /// option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; - /// } - /// ... - /// } - /// - public sealed partial class Mixin : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Mixin()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.ApiReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Mixin() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Mixin(Mixin other) : this() { - name_ = other.name_; - root_ = other.root_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Mixin Clone() { - return new Mixin(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// The fully qualified name of the interface which is included. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "root" field. - public const int RootFieldNumber = 2; - private string root_ = ""; - /// - /// If non-empty specifies a path under which inherited HTTP paths - /// are rooted. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Root { - get { return root_; } - set { - root_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Mixin); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Mixin other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (Name != other.Name) return false; - if (Root != other.Root) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Root.Length != 0) hash ^= Root.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Name.Length != 0) { - output.WriteRawTag(10); - output.WriteString(Name); - } - if (Root.Length != 0) { - output.WriteRawTag(18); - output.WriteString(Root); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Name.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Name); - } - if (Root.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(Root); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Mixin other) { - if (other == null) { - return; - } - if (other.Name.Length != 0) { - Name = other.Name; - } - if (other.Root.Length != 0) { - Root = other.Root; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 18: { - Root = input.ReadString(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs deleted file mode 100644 index 7a6f501..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Duration.cs +++ /dev/null @@ -1,277 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/duration.proto - public static partial class DurationReflection { - - #region Descriptor - /// File descriptor for google/protobuf/duration.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static DurationReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Ch5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8SD2dvb2dsZS5wcm90", - "b2J1ZiIqCghEdXJhdGlvbhIPCgdzZWNvbmRzGAEgASgDEg0KBW5hbm9zGAIg", - "ASgFQnwKE2NvbS5nb29nbGUucHJvdG9idWZCDUR1cmF0aW9uUHJvdG9QAVoq", - "Z2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHR5cGVzL2R1cmF0aW9u+AEB", - "ogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZwcm90", - "bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Duration), global::Google.Protobuf.WellKnownTypes.Duration.Parser, new[]{ "Seconds", "Nanos" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// A Duration represents a signed, fixed-length span of time represented - /// as a count of seconds and fractions of seconds at nanosecond - /// resolution. It is independent of any calendar and concepts like "day" - /// or "month". It is related to Timestamp in that the difference between - /// two Timestamp values is a Duration and it can be added or subtracted - /// from a Timestamp. Range is approximately +-10,000 years. - /// - /// # Examples - /// - /// Example 1: Compute Duration from two Timestamps in pseudo code. - /// - /// Timestamp start = ...; - /// Timestamp end = ...; - /// Duration duration = ...; - /// - /// duration.seconds = end.seconds - start.seconds; - /// duration.nanos = end.nanos - start.nanos; - /// - /// if (duration.seconds < 0 && duration.nanos > 0) { - /// duration.seconds += 1; - /// duration.nanos -= 1000000000; - /// } else if (durations.seconds > 0 && duration.nanos < 0) { - /// duration.seconds -= 1; - /// duration.nanos += 1000000000; - /// } - /// - /// Example 2: Compute Timestamp from Timestamp + Duration in pseudo code. - /// - /// Timestamp start = ...; - /// Duration duration = ...; - /// Timestamp end = ...; - /// - /// end.seconds = start.seconds + duration.seconds; - /// end.nanos = start.nanos + duration.nanos; - /// - /// if (end.nanos < 0) { - /// end.seconds -= 1; - /// end.nanos += 1000000000; - /// } else if (end.nanos >= 1000000000) { - /// end.seconds += 1; - /// end.nanos -= 1000000000; - /// } - /// - /// Example 3: Compute Duration from datetime.timedelta in Python. - /// - /// td = datetime.timedelta(days=3, minutes=10) - /// duration = Duration() - /// duration.FromTimedelta(td) - /// - /// # JSON Mapping - /// - /// In JSON format, the Duration type is encoded as a string rather than an - /// object, where the string ends in the suffix "s" (indicating seconds) and - /// is preceded by the number of seconds, with nanoseconds expressed as - /// fractional seconds. For example, 3 seconds with 0 nanoseconds should be - /// encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should - /// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 - /// microsecond should be expressed in JSON format as "3.000001s". - /// - public sealed partial class Duration : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Duration()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Duration() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Duration(Duration other) : this() { - seconds_ = other.seconds_; - nanos_ = other.nanos_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Duration Clone() { - return new Duration(this); - } - - /// Field number for the "seconds" field. - public const int SecondsFieldNumber = 1; - private long seconds_; - /// - /// Signed seconds of the span of time. Must be from -315,576,000,000 - /// to +315,576,000,000 inclusive. Note: these bounds are computed from: - /// 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Seconds { - get { return seconds_; } - set { - seconds_ = value; - } - } - - /// Field number for the "nanos" field. - public const int NanosFieldNumber = 2; - private int nanos_; - /// - /// Signed fractions of a second at nanosecond resolution of the span - /// of time. Durations less than one second are represented with a 0 - /// `seconds` field and a positive or negative `nanos` field. For durations - /// of one second or more, a non-zero value for the `nanos` field must be - /// of the same sign as the `seconds` field. Must be from -999,999,999 - /// to +999,999,999 inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Nanos { - get { return nanos_; } - set { - nanos_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Duration); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Seconds != 0L) hash ^= Seconds.GetHashCode(); - if (Nanos != 0) hash ^= Nanos.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Seconds != 0L) { - output.WriteRawTag(8); - output.WriteInt64(Seconds); - } - if (Nanos != 0) { - output.WriteRawTag(16); - output.WriteInt32(Nanos); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Seconds != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seconds); - } - if (Nanos != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Nanos); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Duration other) { - if (other == null) { - return; - } - if (other.Seconds != 0L) { - Seconds = other.Seconds; - } - if (other.Nanos != 0) { - Nanos = other.Nanos; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Seconds = input.ReadInt64(); - break; - } - case 16: { - Nanos = input.ReadInt32(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/DurationPartial.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/DurationPartial.cs deleted file mode 100644 index 9a468fc..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/DurationPartial.cs +++ /dev/null @@ -1,270 +0,0 @@ -#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.Globalization; -using System.Text; - -namespace Google.Protobuf.WellKnownTypes -{ - // Manually-written partial class for the Duration well-known type, - // providing a conversion to TimeSpan and convenience operators. - public partial class Duration : ICustomDiagnosticMessage - { - /// - /// The number of nanoseconds in a second. - /// - public const int NanosecondsPerSecond = 1000000000; - /// - /// The number of nanoseconds in a BCL tick (as used by and ). - /// - public const int NanosecondsPerTick = 100; - - /// - /// The maximum permitted number of seconds. - /// - public const long MaxSeconds = 315576000000L; - - /// - /// The minimum permitted number of seconds. - /// - public const long MinSeconds = -315576000000L; - - internal const int MaxNanoseconds = NanosecondsPerSecond - 1; - internal const int MinNanoseconds = -NanosecondsPerSecond + 1; - - internal static bool IsNormalized(long seconds, int nanoseconds) - { - // Simple boundaries - if (seconds < MinSeconds || seconds > MaxSeconds || - nanoseconds < MinNanoseconds || nanoseconds > MaxNanoseconds) - { - return false; - } - // We only have a problem is one is strictly negative and the other is - // strictly positive. - return Math.Sign(seconds) * Math.Sign(nanoseconds) != -1; - } - - /// - /// Converts this to a . - /// - /// If the duration is not a precise number of ticks, it is truncated towards 0. - /// The value of this duration, as a TimeSpan. - /// This value isn't a valid normalized duration, as - /// described in the documentation. - public TimeSpan ToTimeSpan() - { - checked - { - if (!IsNormalized(Seconds, Nanos)) - { - throw new InvalidOperationException("Duration was not a valid normalized duration"); - } - long ticks = Seconds * TimeSpan.TicksPerSecond + Nanos / NanosecondsPerTick; - return TimeSpan.FromTicks(ticks); - } - } - - /// - /// Converts the given to a . - /// - /// The TimeSpan to convert. - /// The value of the given TimeSpan, as a Duration. - public static Duration FromTimeSpan(TimeSpan timeSpan) - { - checked - { - long ticks = timeSpan.Ticks; - long seconds = ticks / TimeSpan.TicksPerSecond; - int nanos = (int) (ticks % TimeSpan.TicksPerSecond) * NanosecondsPerTick; - return new Duration { Seconds = seconds, Nanos = nanos }; - } - } - - /// - /// Returns the result of negating the duration. For example, the negation of 5 minutes is -5 minutes. - /// - /// The duration to negate. Must not be null. - /// The negated value of this duration. - public static Duration operator -(Duration value) - { - ProtoPreconditions.CheckNotNull(value, "value"); - checked - { - return Normalize(-value.Seconds, -value.Nanos); - } - } - - /// - /// Adds the two specified values together. - /// - /// The first value to add. Must not be null. - /// The second value to add. Must not be null. - /// - public static Duration operator +(Duration lhs, Duration rhs) - { - ProtoPreconditions.CheckNotNull(lhs, "lhs"); - ProtoPreconditions.CheckNotNull(rhs, "rhs"); - checked - { - return Normalize(lhs.Seconds + rhs.Seconds, lhs.Nanos + rhs.Nanos); - } - } - - /// - /// Subtracts one from another. - /// - /// The duration to subtract from. Must not be null. - /// The duration to subtract. Must not be null. - /// The difference between the two specified durations. - public static Duration operator -(Duration lhs, Duration rhs) - { - ProtoPreconditions.CheckNotNull(lhs, "lhs"); - ProtoPreconditions.CheckNotNull(rhs, "rhs"); - checked - { - return Normalize(lhs.Seconds - rhs.Seconds, lhs.Nanos - rhs.Nanos); - } - } - - /// - /// Creates a duration with the normalized values from the given number of seconds and - /// nanoseconds, conforming with the description in the proto file. - /// - internal static Duration Normalize(long seconds, int nanoseconds) - { - // Ensure that nanoseconds is in the range (-1,000,000,000, +1,000,000,000) - int extraSeconds = nanoseconds / NanosecondsPerSecond; - seconds += extraSeconds; - nanoseconds -= extraSeconds * NanosecondsPerSecond; - - // Now make sure that Sign(seconds) == Sign(nanoseconds) if Sign(seconds) != 0. - if (seconds < 0 && nanoseconds > 0) - { - seconds += 1; - nanoseconds -= NanosecondsPerSecond; - } - else if (seconds > 0 && nanoseconds < 0) - { - seconds -= 1; - nanoseconds += NanosecondsPerSecond; - } - return new Duration { Seconds = seconds, Nanos = nanoseconds }; - } - - /// - /// Converts a duration specified in seconds/nanoseconds to a string. - /// - /// - /// If the value is a normalized duration in the range described in duration.proto, - /// is ignored. Otherwise, if the parameter is true, - /// a JSON object with a warning is returned; if it is false, an is thrown. - /// - /// Seconds portion of the duration. - /// Nanoseconds portion of the duration. - /// Determines the handling of non-normalized values - /// The represented duration is invalid, and is false. - internal static string ToJson(long seconds, int nanoseconds, bool diagnosticOnly) - { - if (IsNormalized(seconds, nanoseconds)) - { - var builder = new StringBuilder(); - builder.Append('"'); - // The seconds part will normally provide the minus sign if we need it, but not if it's 0... - if (seconds == 0 && nanoseconds < 0) - { - builder.Append('-'); - } - - builder.Append(seconds.ToString("d", CultureInfo.InvariantCulture)); - AppendNanoseconds(builder, Math.Abs(nanoseconds)); - builder.Append("s\""); - return builder.ToString(); - } - if (diagnosticOnly) - { - // Note: the double braces here are escaping for braces in format strings. - return string.Format(CultureInfo.InvariantCulture, - "{{ \"@warning\": \"Invalid Duration\", \"seconds\": \"{0}\", \"nanos\": {1} }}", - seconds, - nanoseconds); - } - else - { - throw new InvalidOperationException("Non-normalized duration value"); - } - } - - /// - /// Returns a string representation of this for diagnostic purposes. - /// - /// - /// Normally the returned value will be a JSON string value (including leading and trailing quotes) but - /// when the value is non-normalized or out of range, a JSON object representation will be returned - /// instead, including a warning. This is to avoid exceptions being thrown when trying to - /// diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - /// values. - /// - /// A string representation of this value. - public string ToDiagnosticString() - { - return ToJson(Seconds, Nanos, true); - } - - /// - /// Appends a number of nanoseconds to a StringBuilder. Either 0 digits are added (in which - /// case no "." is appended), or 3 6 or 9 digits. This is internal for use in Timestamp as well - /// as Duration. - /// - internal static void AppendNanoseconds(StringBuilder builder, int nanos) - { - if (nanos != 0) - { - builder.Append('.'); - // Output to 3, 6 or 9 digits. - if (nanos % 1000000 == 0) - { - builder.Append((nanos / 1000000).ToString("d3", CultureInfo.InvariantCulture)); - } - else if (nanos % 1000 == 0) - { - builder.Append((nanos / 1000).ToString("d6", CultureInfo.InvariantCulture)); - } - else - { - builder.Append(nanos.ToString("d9", CultureInfo.InvariantCulture)); - } - } - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs deleted file mode 100644 index fa435cd..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Empty.cs +++ /dev/null @@ -1,158 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/empty.proto - public static partial class EmptyReflection { - - #region Descriptor - /// File descriptor for google/protobuf/empty.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static EmptyReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chtnb29nbGUvcHJvdG9idWYvZW1wdHkucHJvdG8SD2dvb2dsZS5wcm90b2J1", - "ZiIHCgVFbXB0eUJ2ChNjb20uZ29vZ2xlLnByb3RvYnVmQgpFbXB0eVByb3Rv", - "UAFaJ2dpdGh1Yi5jb20vZ29sYW5nL3Byb3RvYnVmL3B0eXBlcy9lbXB0efgB", - "AaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IGcHJv", - "dG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Empty), global::Google.Protobuf.WellKnownTypes.Empty.Parser, null, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// A generic empty message that you can re-use to avoid defining duplicated - /// empty messages in your APIs. A typical example is to use it as the request - /// or the response type of an API method. For instance: - /// - /// service Foo { - /// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); - /// } - /// - /// The JSON representation for `Empty` is empty JSON object `{}`. - /// - public sealed partial class Empty : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Empty()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.EmptyReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Empty() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Empty(Empty other) : this() { - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Empty Clone() { - return new Empty(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Empty); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Empty other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Empty other) { - if (other == null) { - return; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs deleted file mode 100644 index 0bbf313..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMask.cs +++ /dev/null @@ -1,371 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/field_mask.proto - public static partial class FieldMaskReflection { - - #region Descriptor - /// File descriptor for google/protobuf/field_mask.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static FieldMaskReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "CiBnb29nbGUvcHJvdG9idWYvZmllbGRfbWFzay5wcm90bxIPZ29vZ2xlLnBy", - "b3RvYnVmIhoKCUZpZWxkTWFzaxINCgVwYXRocxgBIAMoCUKMAQoTY29tLmdv", - "b2dsZS5wcm90b2J1ZkIORmllbGRNYXNrUHJvdG9QAVo5Z29vZ2xlLmdvbGFu", - "Zy5vcmcvZ2VucHJvdG8vcHJvdG9idWYvZmllbGRfbWFzaztmaWVsZF9tYXNr", - "+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5cGVzYgZw", - "cm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.FieldMask), global::Google.Protobuf.WellKnownTypes.FieldMask.Parser, new[]{ "Paths" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// `FieldMask` represents a set of symbolic field paths, for example: - /// - /// paths: "f.a" - /// paths: "f.b.d" - /// - /// Here `f` represents a field in some root message, `a` and `b` - /// fields in the message found in `f`, and `d` a field found in the - /// message in `f.b`. - /// - /// Field masks are used to specify a subset of fields that should be - /// returned by a get operation or modified by an update operation. - /// Field masks also have a custom JSON encoding (see below). - /// - /// # Field Masks in Projections - /// - /// When used in the context of a projection, a response message or - /// sub-message is filtered by the API to only contain those fields as - /// specified in the mask. For example, if the mask in the previous - /// example is applied to a response message as follows: - /// - /// f { - /// a : 22 - /// b { - /// d : 1 - /// x : 2 - /// } - /// y : 13 - /// } - /// z: 8 - /// - /// The result will not contain specific values for fields x,y and z - /// (their value will be set to the default, and omitted in proto text - /// output): - /// - /// f { - /// a : 22 - /// b { - /// d : 1 - /// } - /// } - /// - /// A repeated field is not allowed except at the last position of a - /// paths string. - /// - /// If a FieldMask object is not present in a get operation, the - /// operation applies to all fields (as if a FieldMask of all fields - /// had been specified). - /// - /// Note that a field mask does not necessarily apply to the - /// top-level response message. In case of a REST get operation, the - /// field mask applies directly to the response, but in case of a REST - /// list operation, the mask instead applies to each individual message - /// in the returned resource list. In case of a REST custom method, - /// other definitions may be used. Where the mask applies will be - /// clearly documented together with its declaration in the API. In - /// any case, the effect on the returned resource/resources is required - /// behavior for APIs. - /// - /// # Field Masks in Update Operations - /// - /// A field mask in update operations specifies which fields of the - /// targeted resource are going to be updated. The API is required - /// to only change the values of the fields as specified in the mask - /// and leave the others untouched. If a resource is passed in to - /// describe the updated values, the API ignores the values of all - /// fields not covered by the mask. - /// - /// If a repeated field is specified for an update operation, new values will - /// be appended to the existing repeated field in the target resource. Note that - /// a repeated field is only allowed in the last position of a `paths` string. - /// - /// If a sub-message is specified in the last position of the field mask for an - /// update operation, then new value will be merged into the existing sub-message - /// in the target resource. - /// - /// For example, given the target message: - /// - /// f { - /// b { - /// d: 1 - /// x: 2 - /// } - /// c: [1] - /// } - /// - /// And an update message: - /// - /// f { - /// b { - /// d: 10 - /// } - /// c: [2] - /// } - /// - /// then if the field mask is: - /// - /// paths: ["f.b", "f.c"] - /// - /// then the result will be: - /// - /// f { - /// b { - /// d: 10 - /// x: 2 - /// } - /// c: [1, 2] - /// } - /// - /// An implementation may provide options to override this default behavior for - /// repeated and message fields. - /// - /// In order to reset a field's value to the default, the field must - /// be in the mask and set to the default value in the provided resource. - /// Hence, in order to reset all fields of a resource, provide a default - /// instance of the resource and set all fields in the mask, or do - /// not provide a mask as described below. - /// - /// If a field mask is not present on update, the operation applies to - /// all fields (as if a field mask of all fields has been specified). - /// Note that in the presence of schema evolution, this may mean that - /// fields the client does not know and has therefore not filled into - /// the request will be reset to their default. If this is unwanted - /// behavior, a specific service may require a client to always specify - /// a field mask, producing an error if not. - /// - /// As with get operations, the location of the resource which - /// describes the updated values in the request message depends on the - /// operation kind. In any case, the effect of the field mask is - /// required to be honored by the API. - /// - /// ## Considerations for HTTP REST - /// - /// The HTTP kind of an update operation which uses a field mask must - /// be set to PATCH instead of PUT in order to satisfy HTTP semantics - /// (PUT must only be used for full updates). - /// - /// # JSON Encoding of Field Masks - /// - /// In JSON, a field mask is encoded as a single string where paths are - /// separated by a comma. Fields name in each path are converted - /// to/from lower-camel naming conventions. - /// - /// As an example, consider the following message declarations: - /// - /// message Profile { - /// User user = 1; - /// Photo photo = 2; - /// } - /// message User { - /// string display_name = 1; - /// string address = 2; - /// } - /// - /// In proto a field mask for `Profile` may look as such: - /// - /// mask { - /// paths: "user.display_name" - /// paths: "photo" - /// } - /// - /// In JSON, the same mask is represented as below: - /// - /// { - /// mask: "user.displayName,photo" - /// } - /// - /// # Field Masks and Oneof Fields - /// - /// Field masks treat fields in oneofs just as regular fields. Consider the - /// following message: - /// - /// message SampleMessage { - /// oneof test_oneof { - /// string name = 4; - /// SubMessage sub_message = 9; - /// } - /// } - /// - /// The field mask can be: - /// - /// mask { - /// paths: "name" - /// } - /// - /// Or: - /// - /// mask { - /// paths: "sub_message" - /// } - /// - /// Note that oneof type names ("test_oneof" in this case) cannot be used in - /// paths. - /// - /// ## Field Mask Verification - /// - /// The implementation of any API method which has a FieldMask type field in the - /// request should verify the included field paths, and return an - /// `INVALID_ARGUMENT` error if any path is duplicated or unmappable. - /// - public sealed partial class FieldMask : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new FieldMask()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldMask() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldMask(FieldMask other) : this() { - paths_ = other.paths_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public FieldMask Clone() { - return new FieldMask(this); - } - - /// Field number for the "paths" field. - public const int PathsFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_paths_codec - = pb::FieldCodec.ForString(10); - private readonly pbc::RepeatedField paths_ = new pbc::RepeatedField(); - /// - /// The set of field mask paths. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Paths { - get { return paths_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as FieldMask); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= paths_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - paths_.WriteTo(output, _repeated_paths_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += paths_.CalculateSize(_repeated_paths_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(FieldMask other) { - if (other == null) { - return; - } - paths_.Add(other.paths_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - paths_.AddEntriesFrom(input, _repeated_paths_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMaskPartial.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMaskPartial.cs deleted file mode 100644 index 91d2ee9..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/FieldMaskPartial.cs +++ /dev/null @@ -1,370 +0,0 @@ -#region Copyright notice and license -// Protocol Buffers - Google's data interchange format -// Copyright 2016 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.Collections.Generic; -using System.IO; -using System.Linq; -using Google.Protobuf.Reflection; - -namespace Google.Protobuf.WellKnownTypes -{ - // Manually-written partial class for the FieldMask well-known type. - public partial class FieldMask : ICustomDiagnosticMessage - { - private const char FIELD_PATH_SEPARATOR = ','; - private const char FIELD_SEPARATOR_REGEX = '.'; - - /// - /// Converts a field mask specified by paths to a string. - /// - /// - /// If the value is a normalized duration in the range described in field_mask.proto, - /// is ignored. Otherwise, if the parameter is true, - /// a JSON object with a warning is returned; if it is false, an is thrown. - /// - /// Paths in the field mask - /// Determines the handling of non-normalized values - /// The represented field mask is invalid, and is false. - internal static string ToJson(IList paths, bool diagnosticOnly) - { - var firstInvalid = paths.FirstOrDefault(p => !IsPathValid(p)); - if (firstInvalid == null) - { - var writer = new StringWriter(); -#if NET35 - var query = paths.Select(JsonFormatter.ToJsonName); - JsonFormatter.WriteString(writer, string.Join(",", query.ToArray())); -#else - JsonFormatter.WriteString(writer, string.Join(",", paths.Select(JsonFormatter.ToJsonName))); -#endif - return writer.ToString(); - } - else - { - if (diagnosticOnly) - { - var writer = new StringWriter(); - writer.Write("{ \"@warning\": \"Invalid FieldMask\", \"paths\": "); - JsonFormatter.Default.WriteList(writer, (IList)paths); - writer.Write(" }"); - return writer.ToString(); - } - else - { - throw new InvalidOperationException($"Invalid field mask to be converted to JSON: {firstInvalid}"); - } - } - } - - /// - /// Returns a string representation of this for diagnostic purposes. - /// - /// - /// Normally the returned value will be a JSON string value (including leading and trailing quotes) but - /// when the value is non-normalized or out of range, a JSON object representation will be returned - /// instead, including a warning. This is to avoid exceptions being thrown when trying to - /// diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - /// values. - /// - /// A string representation of this value. - public string ToDiagnosticString() - { - return ToJson(Paths, true); - } - - /// - /// Parses from a string to a FieldMask. - /// - public static FieldMask FromString(string value) - { - return FromStringEnumerable(new List(value.Split(FIELD_PATH_SEPARATOR))); - } - - /// - /// Parses from a string to a FieldMask and validates all field paths. - /// - /// The type to validate the field paths against. - public static FieldMask FromString(string value) where T : IMessage - { - return FromStringEnumerable(new List(value.Split(FIELD_PATH_SEPARATOR))); - } - - /// - /// Constructs a FieldMask for a list of field paths in a certain type. - /// - /// The type to validate the field paths against. - public static FieldMask FromStringEnumerable(IEnumerable paths) where T : IMessage - { - var mask = new FieldMask(); - foreach (var path in paths) - { - if (path.Length == 0) - { - // Ignore empty field paths. - continue; - } - - if (typeof(T) != typeof(Empty) - && !IsValid(path)) - { - throw new InvalidProtocolBufferException(path + " is not a valid path for " + typeof(T)); - } - - mask.Paths.Add(path); - } - - return mask; - } - - /// - /// Constructs a FieldMask from the passed field numbers. - /// - /// The type to validate the field paths against. - public static FieldMask FromFieldNumbers(params int[] fieldNumbers) where T : IMessage - { - return FromFieldNumbers((IEnumerable)fieldNumbers); - } - - /// - /// Constructs a FieldMask from the passed field numbers. - /// - /// The type to validate the field paths against. - public static FieldMask FromFieldNumbers(IEnumerable fieldNumbers) where T : IMessage - { - var descriptor = Activator.CreateInstance().Descriptor; - - var mask = new FieldMask(); - foreach (var fieldNumber in fieldNumbers) - { - var field = descriptor.FindFieldByNumber(fieldNumber); - if (field == null) - { - throw new ArgumentNullException($"{fieldNumber} is not a valid field number for {descriptor.Name}"); - } - - mask.Paths.Add(field.Name); - } - - return mask; - } - - /// - /// Checks whether the given path is valid for a field mask. - /// - /// true if the path is valid; false otherwise - private static bool IsPathValid(string input) - { - for (int i = 0; i < input.Length; i++) - { - char c = input[i]; - if (c >= 'A' && c <= 'Z') - { - return false; - } - if (c == '_' && i < input.Length - 1) - { - char next = input[i + 1]; - if (next < 'a' || next > 'z') - { - return false; - } - } - } - return true; - } - - /// - /// Checks whether paths in a given fields mask are valid. - /// - /// The type to validate the field paths against. - public static bool IsValid(FieldMask fieldMask) where T : IMessage - { - var descriptor = Activator.CreateInstance().Descriptor; - - return IsValid(descriptor, fieldMask); - } - - /// - /// Checks whether paths in a given fields mask are valid. - /// - public static bool IsValid(MessageDescriptor descriptor, FieldMask fieldMask) - { - foreach (var path in fieldMask.Paths) - { - if (!IsValid(descriptor, path)) - { - return false; - } - } - - return true; - } - - /// - /// Checks whether a given field path is valid. - /// - /// The type to validate the field paths against. - public static bool IsValid(string path) where T : IMessage - { - var descriptor = Activator.CreateInstance().Descriptor; - - return IsValid(descriptor, path); - } - - /// - /// Checks whether paths in a given fields mask are valid. - /// - public static bool IsValid(MessageDescriptor descriptor, string path) - { - var parts = path.Split(FIELD_SEPARATOR_REGEX); - if (parts.Length == 0) - { - return false; - } - - foreach (var name in parts) - { - var field = descriptor?.FindFieldByName(name); - if (field == null) - { - return false; - } - - if (!field.IsRepeated - && field.FieldType == FieldType.Message) - { - descriptor = field.MessageType; - } - else - { - descriptor = null; - } - } - - return true; - } - - /// - /// Converts this FieldMask to its canonical form. In the canonical form of a - /// FieldMask, all field paths are sorted alphabetically and redundant field - /// paths are removed. - /// - public FieldMask Normalize() - { - return new FieldMaskTree(this).ToFieldMask(); - } - - /// - /// Creates a union of two or more FieldMasks. - /// - public FieldMask Union(params FieldMask[] otherMasks) - { - var maskTree = new FieldMaskTree(this); - foreach (var mask in otherMasks) - { - maskTree.MergeFromFieldMask(mask); - } - - return maskTree.ToFieldMask(); - } - - /// - /// Calculates the intersection of two FieldMasks. - /// - public FieldMask Intersection(FieldMask additionalMask) - { - var tree = new FieldMaskTree(this); - var result = new FieldMaskTree(); - foreach (var path in additionalMask.Paths) - { - tree.IntersectFieldPath(path, result); - } - - return result.ToFieldMask(); - } - - /// - /// Merges fields specified by this FieldMask from one message to another with the - /// specified merge options. - /// - public void Merge(IMessage source, IMessage destination, MergeOptions options) - { - new FieldMaskTree(this).Merge(source, destination, options); - } - - /// - /// Merges fields specified by this FieldMask from one message to another. - /// - public void Merge(IMessage source, IMessage destination) - { - Merge(source, destination, new MergeOptions()); - } - - /// - /// Options to customize merging behavior. - /// - public sealed class MergeOptions - { - /// - /// Whether to replace message fields(i.e., discard existing content in - /// destination message fields) when merging. - /// Default behavior is to merge the source message field into the - /// destination message field. - /// - public bool ReplaceMessageFields { get; set; } = false; - - /// - /// Whether to replace repeated fields (i.e., discard existing content in - /// destination repeated fields) when merging. - /// Default behavior is to append elements from source repeated field to the - /// destination repeated field. - /// - public bool ReplaceRepeatedFields { get; set; } = false; - - /// - /// Whether to replace primitive (non-repeated and non-message) fields in - /// destination message fields with the source primitive fields (i.e., if the - /// field is set in the source, the value is copied to the - /// destination; if the field is unset in the source, the field is cleared - /// from the destination) when merging. - /// - /// Default behavior is to always set the value of the source primitive - /// field to the destination primitive field, and if the source field is - /// unset, the default value of the source field is copied to the - /// destination. - /// - public bool ReplacePrimitiveFields { get; set; } = false; - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs deleted file mode 100644 index d707619..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/SourceContext.cs +++ /dev/null @@ -1,184 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/source_context.proto - public static partial class SourceContextReflection { - - #region Descriptor - /// File descriptor for google/protobuf/source_context.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static SourceContextReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "CiRnb29nbGUvcHJvdG9idWYvc291cmNlX2NvbnRleHQucHJvdG8SD2dvb2ds", - "ZS5wcm90b2J1ZiIiCg1Tb3VyY2VDb250ZXh0EhEKCWZpbGVfbmFtZRgBIAEo", - "CUKVAQoTY29tLmdvb2dsZS5wcm90b2J1ZkISU291cmNlQ29udGV4dFByb3Rv", - "UAFaQWdvb2dsZS5nb2xhbmcub3JnL2dlbnByb3RvL3Byb3RvYnVmL3NvdXJj", - "ZV9jb250ZXh0O3NvdXJjZV9jb250ZXh0ogIDR1BCqgIeR29vZ2xlLlByb3Rv", - "YnVmLldlbGxLbm93blR5cGVzYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.SourceContext), global::Google.Protobuf.WellKnownTypes.SourceContext.Parser, new[]{ "FileName" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// `SourceContext` represents information about the source of a - /// protobuf element, like the file in which it is defined. - /// - public sealed partial class SourceContext : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new SourceContext()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceContext() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceContext(SourceContext other) : this() { - fileName_ = other.fileName_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public SourceContext Clone() { - return new SourceContext(this); - } - - /// Field number for the "file_name" field. - public const int FileNameFieldNumber = 1; - private string fileName_ = ""; - /// - /// The path-qualified name of the .proto file that contained the associated - /// protobuf element. For example: `"google/protobuf/source_context.proto"`. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string FileName { - get { return fileName_; } - set { - fileName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as SourceContext); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(SourceContext other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (FileName != other.FileName) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (FileName.Length != 0) hash ^= FileName.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (FileName.Length != 0) { - output.WriteRawTag(10); - output.WriteString(FileName); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (FileName.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(FileName); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(SourceContext other) { - if (other == null) { - return; - } - if (other.FileName.Length != 0) { - FileName = other.FileName; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - FileName = input.ReadString(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs deleted file mode 100644 index b1dbe23..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Struct.cs +++ /dev/null @@ -1,692 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/struct.proto - public static partial class StructReflection { - - #region Descriptor - /// File descriptor for google/protobuf/struct.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static StructReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chxnb29nbGUvcHJvdG9idWYvc3RydWN0LnByb3RvEg9nb29nbGUucHJvdG9i", - "dWYihAEKBlN0cnVjdBIzCgZmaWVsZHMYASADKAsyIy5nb29nbGUucHJvdG9i", - "dWYuU3RydWN0LkZpZWxkc0VudHJ5GkUKC0ZpZWxkc0VudHJ5EgsKA2tleRgB", - "IAEoCRIlCgV2YWx1ZRgCIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5WYWx1ZToC", - "OAEi6gEKBVZhbHVlEjAKCm51bGxfdmFsdWUYASABKA4yGi5nb29nbGUucHJv", - "dG9idWYuTnVsbFZhbHVlSAASFgoMbnVtYmVyX3ZhbHVlGAIgASgBSAASFgoM", - "c3RyaW5nX3ZhbHVlGAMgASgJSAASFAoKYm9vbF92YWx1ZRgEIAEoCEgAEi8K", - "DHN0cnVjdF92YWx1ZRgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RI", - "ABIwCgpsaXN0X3ZhbHVlGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLkxpc3RW", - "YWx1ZUgAQgYKBGtpbmQiMwoJTGlzdFZhbHVlEiYKBnZhbHVlcxgBIAMoCzIW", - "Lmdvb2dsZS5wcm90b2J1Zi5WYWx1ZSobCglOdWxsVmFsdWUSDgoKTlVMTF9W", - "QUxVRRAAQoEBChNjb20uZ29vZ2xlLnByb3RvYnVmQgtTdHJ1Y3RQcm90b1AB", - "WjFnaXRodWIuY29tL2dvbGFuZy9wcm90b2J1Zi9wdHlwZXMvc3RydWN0O3N0", - "cnVjdHBi+AEBogIDR1BCqgIeR29vZ2xlLlByb3RvYnVmLldlbGxLbm93blR5", - "cGVzYgZwcm90bzM=")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.WellKnownTypes.NullValue), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Struct), global::Google.Protobuf.WellKnownTypes.Struct.Parser, new[]{ "Fields" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { null, }), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Value), global::Google.Protobuf.WellKnownTypes.Value.Parser, new[]{ "NullValue", "NumberValue", "StringValue", "BoolValue", "StructValue", "ListValue" }, new[]{ "Kind" }, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.ListValue), global::Google.Protobuf.WellKnownTypes.ListValue.Parser, new[]{ "Values" }, null, null, null, null) - })); - } - #endregion - - } - #region Enums - /// - /// `NullValue` is a singleton enumeration to represent the null value for the - /// `Value` type union. - /// - /// The JSON representation for `NullValue` is JSON `null`. - /// - public enum NullValue { - /// - /// Null value. - /// - [pbr::OriginalName("NULL_VALUE")] NullValue = 0, - } - - #endregion - - #region Messages - /// - /// `Struct` represents a structured data value, consisting of fields - /// which map to dynamically typed values. In some languages, `Struct` - /// might be supported by a native representation. For example, in - /// scripting languages like JS a struct is represented as an - /// object. The details of that representation are described together - /// with the proto support for the language. - /// - /// The JSON representation for `Struct` is JSON object. - /// - public sealed partial class Struct : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Struct()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Struct() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Struct(Struct other) : this() { - fields_ = other.fields_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Struct Clone() { - return new Struct(this); - } - - /// Field number for the "fields" field. - public const int FieldsFieldNumber = 1; - private static readonly pbc::MapField.Codec _map_fields_codec - = new pbc::MapField.Codec(pb::FieldCodec.ForString(10, ""), pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Value.Parser), 10); - private readonly pbc::MapField fields_ = new pbc::MapField(); - /// - /// Unordered map of dynamically typed values. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::MapField Fields { - get { return fields_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Struct); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= Fields.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - fields_.WriteTo(output, _map_fields_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += fields_.CalculateSize(_map_fields_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Struct other) { - if (other == null) { - return; - } - fields_.Add(other.fields_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - fields_.AddEntriesFrom(input, _map_fields_codec); - break; - } - } - } - } - - } - - /// - /// `Value` represents a dynamically typed value which can be either - /// null, a number, a string, a boolean, a recursive struct value, or a - /// list of values. A producer of value is expected to set one of that - /// variants, absence of any variant indicates an error. - /// - /// The JSON representation for `Value` is JSON value. - /// - public sealed partial class Value : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Value()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Value() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - } - - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Value Clone() { - return new Value(this); - } - - /// Field number for the "null_value" field. - public const int NullValueFieldNumber = 1; - /// - /// Represents a null value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.NullValue NullValue { - get { return kindCase_ == KindOneofCase.NullValue ? (global::Google.Protobuf.WellKnownTypes.NullValue) kind_ : global::Google.Protobuf.WellKnownTypes.NullValue.NullValue; } - set { - kind_ = value; - kindCase_ = KindOneofCase.NullValue; - } - } - - /// Field number for the "number_value" field. - public const int NumberValueFieldNumber = 2; - /// - /// Represents a double value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public double NumberValue { - get { return kindCase_ == KindOneofCase.NumberValue ? (double) kind_ : 0D; } - set { - kind_ = value; - kindCase_ = KindOneofCase.NumberValue; - } - } - - /// Field number for the "string_value" field. - public const int StringValueFieldNumber = 3; - /// - /// Represents a string value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string StringValue { - get { return kindCase_ == KindOneofCase.StringValue ? (string) kind_ : ""; } - set { - kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - kindCase_ = KindOneofCase.StringValue; - } - } - - /// Field number for the "bool_value" field. - public const int BoolValueFieldNumber = 4; - /// - /// Represents a boolean value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool BoolValue { - get { return kindCase_ == KindOneofCase.BoolValue ? (bool) kind_ : false; } - set { - kind_ = value; - kindCase_ = KindOneofCase.BoolValue; - } - } - - /// Field number for the "struct_value" field. - public const int StructValueFieldNumber = 5; - /// - /// Represents a structured value. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Struct StructValue { - get { return kindCase_ == KindOneofCase.StructValue ? (global::Google.Protobuf.WellKnownTypes.Struct) kind_ : null; } - set { - kind_ = value; - kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.StructValue; - } - } - - /// Field number for the "list_value" field. - public const int ListValueFieldNumber = 6; - /// - /// Represents a repeated `Value`. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.ListValue ListValue { - get { return kindCase_ == KindOneofCase.ListValue ? (global::Google.Protobuf.WellKnownTypes.ListValue) kind_ : null; } - set { - kind_ = value; - kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.ListValue; - } - } - - private object kind_; - /// Enum of possible cases for the "kind" oneof. - public enum KindOneofCase { - None = 0, - NullValue = 1, - NumberValue = 2, - StringValue = 3, - BoolValue = 4, - StructValue = 5, - ListValue = 6, - } - private KindOneofCase kindCase_ = KindOneofCase.None; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public KindOneofCase KindCase { - get { return kindCase_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void ClearKind() { - kindCase_ = KindOneofCase.None; - kind_ = null; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Value); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Equals(Value other) { - if (ReferenceEquals(other, null)) { - return false; - } - if (ReferenceEquals(other, this)) { - return true; - } - if (NullValue != other.NullValue) return false; - if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(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; - if (KindCase != other.KindCase) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (kindCase_ == KindOneofCase.NullValue) hash ^= NullValue.GetHashCode(); - if (kindCase_ == KindOneofCase.NumberValue) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(NumberValue); - 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(); - hash ^= (int) kindCase_; - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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: - if (StructValue == null) { - StructValue = new global::Google.Protobuf.WellKnownTypes.Struct(); - } - StructValue.MergeFrom(other.StructValue); - break; - case KindOneofCase.ListValue: - if (ListValue == null) { - ListValue = new global::Google.Protobuf.WellKnownTypes.ListValue(); - } - ListValue.MergeFrom(other.ListValue); - break; - } - - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - } - } - } - - } - - /// - /// `ListValue` is a wrapper around a repeated field of values. - /// - /// The JSON representation for `ListValue` is JSON array. - /// - public sealed partial class ListValue : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new ListValue()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ListValue() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ListValue(ListValue other) : this() { - values_ = other.values_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public ListValue Clone() { - return new ListValue(this); - } - - /// Field number for the "values" field. - public const int ValuesFieldNumber = 1; - private static readonly pb::FieldCodec _repeated_values_codec - = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.WellKnownTypes.Value.Parser); - private readonly pbc::RepeatedField values_ = new pbc::RepeatedField(); - /// - /// Repeated field of dynamically typed values. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Values { - get { return values_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as ListValue); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - hash ^= values_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - values_.WriteTo(output, _repeated_values_codec); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - size += values_.CalculateSize(_repeated_values_codec); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(ListValue other) { - if (other == null) { - return; - } - values_.Add(other.values_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - values_.AddEntriesFrom(input, _repeated_values_codec); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimeExtensions.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimeExtensions.cs deleted file mode 100644 index 8b63d63..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimeExtensions.cs +++ /dev/null @@ -1,76 +0,0 @@ -#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; - -namespace Google.Protobuf.WellKnownTypes -{ - /// - /// Extension methods on BCL time-related types, converting to protobuf types. - /// - public static class TimeExtensions - { - /// - /// Converts the given to a . - /// - /// The date and time to convert to a timestamp. - /// The value has a other than Utc. - /// The converted timestamp. - public static Timestamp ToTimestamp(this DateTime dateTime) - { - return Timestamp.FromDateTime(dateTime); - } - - /// - /// Converts the given to a - /// - /// The offset is taken into consideration when converting the value (so the same instant in time - /// is represented) but is not a separate part of the resulting value. In other words, there is no - /// roundtrip operation to retrieve the original DateTimeOffset. - /// The date and time (with UTC offset) to convert to a timestamp. - /// The converted timestamp. - public static Timestamp ToTimestamp(this DateTimeOffset dateTimeOffset) - { - return Timestamp.FromDateTimeOffset(dateTimeOffset); - } - - /// - /// Converts the given to a . - /// - /// The time span to convert. - /// The converted duration. - public static Duration ToDuration(this TimeSpan timeSpan) - { - return Duration.FromTimeSpan(timeSpan); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs deleted file mode 100644 index 12f4812..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Timestamp.cs +++ /dev/null @@ -1,298 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/timestamp.proto - public static partial class TimestampReflection { - - #region Descriptor - /// File descriptor for google/protobuf/timestamp.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static TimestampReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Ch9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wLnByb3RvEg9nb29nbGUucHJv", - "dG9idWYiKwoJVGltZXN0YW1wEg8KB3NlY29uZHMYASABKAMSDQoFbmFub3MY", - "AiABKAVCfgoTY29tLmdvb2dsZS5wcm90b2J1ZkIOVGltZXN0YW1wUHJvdG9Q", - "AVorZ2l0aHViLmNvbS9nb2xhbmcvcHJvdG9idWYvcHR5cGVzL3RpbWVzdGFt", - "cPgBAaICA0dQQqoCHkdvb2dsZS5Qcm90b2J1Zi5XZWxsS25vd25UeXBlc2IG", - "cHJvdG8z")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { }, - new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Timestamp), global::Google.Protobuf.WellKnownTypes.Timestamp.Parser, new[]{ "Seconds", "Nanos" }, null, null, null, null) - })); - } - #endregion - - } - #region Messages - /// - /// A Timestamp represents a point in time independent of any time zone or local - /// calendar, encoded as a count of seconds and fractions of seconds at - /// nanosecond resolution. The count is relative to an epoch at UTC midnight on - /// January 1, 1970, in the proleptic Gregorian calendar which extends the - /// Gregorian calendar backwards to year one. - /// - /// All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap - /// second table is needed for interpretation, using a [24-hour linear - /// smear](https://developers.google.com/time/smear). - /// - /// The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By - /// restricting to that range, we ensure that we can convert to and from [RFC - /// 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings. - /// - /// # Examples - /// - /// Example 1: Compute Timestamp from POSIX `time()`. - /// - /// Timestamp timestamp; - /// timestamp.set_seconds(time(NULL)); - /// timestamp.set_nanos(0); - /// - /// Example 2: Compute Timestamp from POSIX `gettimeofday()`. - /// - /// struct timeval tv; - /// gettimeofday(&tv, NULL); - /// - /// Timestamp timestamp; - /// timestamp.set_seconds(tv.tv_sec); - /// timestamp.set_nanos(tv.tv_usec * 1000); - /// - /// Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`. - /// - /// FILETIME ft; - /// GetSystemTimeAsFileTime(&ft); - /// UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime; - /// - /// // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z - /// // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z. - /// Timestamp timestamp; - /// timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL)); - /// timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); - /// - /// Example 4: Compute Timestamp from Java `System.currentTimeMillis()`. - /// - /// long millis = System.currentTimeMillis(); - /// - /// Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000) - /// .setNanos((int) ((millis % 1000) * 1000000)).build(); - /// - /// Example 5: Compute Timestamp from current time in Python. - /// - /// timestamp = Timestamp() - /// timestamp.GetCurrentTime() - /// - /// # JSON Mapping - /// - /// In JSON format, the Timestamp type is encoded as a string in the - /// [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the - /// format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z" - /// where {year} is always expressed using four digits while {month}, {day}, - /// {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional - /// seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution), - /// are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone - /// is required. A proto3 JSON serializer should always use UTC (as indicated by - /// "Z") when printing the Timestamp type and a proto3 JSON parser should be - /// able to accept both UTC and other timezones (as indicated by an offset). - /// - /// For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past - /// 01:30 UTC on January 15, 2017. - /// - /// In JavaScript, one can convert a Date object to this format using the - /// standard - /// [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString) - /// method. In Python, a standard `datetime.datetime` object can be converted - /// to this format using - /// [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with - /// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use - /// the Joda Time's [`ISODateTimeFormat.dateTime()`]( - /// http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D - /// ) to obtain a formatter capable of generating timestamps in this format. - /// - public sealed partial class Timestamp : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Timestamp()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Timestamp() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Timestamp(Timestamp other) : this() { - seconds_ = other.seconds_; - nanos_ = other.nanos_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Timestamp Clone() { - return new Timestamp(this); - } - - /// Field number for the "seconds" field. - public const int SecondsFieldNumber = 1; - private long seconds_; - /// - /// Represents seconds of UTC time since Unix epoch - /// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to - /// 9999-12-31T23:59:59Z inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public long Seconds { - get { return seconds_; } - set { - seconds_ = value; - } - } - - /// Field number for the "nanos" field. - public const int NanosFieldNumber = 2; - private int nanos_; - /// - /// Non-negative fractions of a second at nanosecond resolution. Negative - /// second values with fractions must still have non-negative nanos values - /// that count forward in time. Must be from 0 to 999,999,999 - /// inclusive. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Nanos { - get { return nanos_; } - set { - nanos_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Timestamp); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Seconds != 0L) hash ^= Seconds.GetHashCode(); - if (Nanos != 0) hash ^= Nanos.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Seconds != 0L) { - output.WriteRawTag(8); - output.WriteInt64(Seconds); - } - if (Nanos != 0) { - output.WriteRawTag(16); - output.WriteInt32(Nanos); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Seconds != 0L) { - size += 1 + pb::CodedOutputStream.ComputeInt64Size(Seconds); - } - if (Nanos != 0) { - size += 1 + pb::CodedOutputStream.ComputeInt32Size(Nanos); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Timestamp other) { - if (other == null) { - return; - } - if (other.Seconds != 0L) { - Seconds = other.Seconds; - } - if (other.Nanos != 0) { - Nanos = other.Nanos; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 8: { - Seconds = input.ReadInt64(); - break; - } - case 16: { - Nanos = input.ReadInt32(); - break; - } - } - } - } - - } - - #endregion - -} - -#endregion Designer generated code diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimestampPartial.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimestampPartial.cs deleted file mode 100644 index 2f5172f..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/TimestampPartial.cs +++ /dev/null @@ -1,344 +0,0 @@ -#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.Globalization; -using System.Text; - -namespace Google.Protobuf.WellKnownTypes -{ - public partial class Timestamp : ICustomDiagnosticMessage, IComparable - { - private static readonly DateTime UnixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - // Constants determined programmatically, but then hard-coded so they can be constant expressions. - private const long BclSecondsAtUnixEpoch = 62135596800; - internal const long UnixSecondsAtBclMaxValue = 253402300799; - internal const long UnixSecondsAtBclMinValue = -BclSecondsAtUnixEpoch; - internal const int MaxNanos = Duration.NanosecondsPerSecond - 1; - - private static bool IsNormalized(long seconds, int nanoseconds) => - nanoseconds >= 0 && - nanoseconds <= MaxNanos && - seconds >= UnixSecondsAtBclMinValue && - seconds <= UnixSecondsAtBclMaxValue; - - /// - /// Returns the difference between one and another, as a . - /// - /// The timestamp to subtract from. Must not be null. - /// The timestamp to subtract. Must not be null. - /// The difference between the two specified timestamps. - public static Duration operator -(Timestamp lhs, Timestamp rhs) - { - ProtoPreconditions.CheckNotNull(lhs, "lhs"); - ProtoPreconditions.CheckNotNull(rhs, "rhs"); - checked - { - return Duration.Normalize(lhs.Seconds - rhs.Seconds, lhs.Nanos - rhs.Nanos); - } - } - - /// - /// Adds a to a , to obtain another Timestamp. - /// - /// The timestamp to add the duration to. Must not be null. - /// The duration to add. Must not be null. - /// The result of adding the duration to the timestamp. - public static Timestamp operator +(Timestamp lhs, Duration rhs) - { - ProtoPreconditions.CheckNotNull(lhs, "lhs"); - ProtoPreconditions.CheckNotNull(rhs, "rhs"); - checked - { - return Normalize(lhs.Seconds + rhs.Seconds, lhs.Nanos + rhs.Nanos); - } - } - - /// - /// Subtracts a from a , to obtain another Timestamp. - /// - /// The timestamp to subtract the duration from. Must not be null. - /// The duration to subtract. - /// The result of subtracting the duration from the timestamp. - public static Timestamp operator -(Timestamp lhs, Duration rhs) - { - ProtoPreconditions.CheckNotNull(lhs, "lhs"); - ProtoPreconditions.CheckNotNull(rhs, "rhs"); - checked - { - return Normalize(lhs.Seconds - rhs.Seconds, lhs.Nanos - rhs.Nanos); - } - } - - /// - /// Converts this timestamp into a . - /// - /// - /// The resulting DateTime will always have a Kind of Utc. - /// If the timestamp is not a precise number of ticks, it will be truncated towards the start - /// of time. For example, a timestamp with a value of 99 will result in a - /// value precisely on a second. - /// - /// This timestamp as a DateTime. - /// The timestamp contains invalid values; either it is - /// incorrectly normalized or is outside the valid range. - public DateTime ToDateTime() - { - if (!IsNormalized(Seconds, Nanos)) - { - throw new InvalidOperationException(@"Timestamp contains invalid values: Seconds={Seconds}; Nanos={Nanos}"); - } - return UnixEpoch.AddSeconds(Seconds).AddTicks(Nanos / Duration.NanosecondsPerTick); - } - - /// - /// Converts this timestamp into a . - /// - /// - /// The resulting DateTimeOffset will always have an Offset of zero. - /// If the timestamp is not a precise number of ticks, it will be truncated towards the start - /// of time. For example, a timestamp with a value of 99 will result in a - /// value precisely on a second. - /// - /// This timestamp as a DateTimeOffset. - /// The timestamp contains invalid values; either it is - /// incorrectly normalized or is outside the valid range. - public DateTimeOffset ToDateTimeOffset() - { - return new DateTimeOffset(ToDateTime(), TimeSpan.Zero); - } - - /// - /// Converts the specified to a . - /// - /// - /// The Kind of is not DateTimeKind.Utc. - /// The converted timestamp. - public static Timestamp FromDateTime(DateTime dateTime) - { - if (dateTime.Kind != DateTimeKind.Utc) - { - throw new ArgumentException("Conversion from DateTime to Timestamp requires the DateTime kind to be Utc", "dateTime"); - } - // Do the arithmetic using DateTime.Ticks, which is always non-negative, making things simpler. - long secondsSinceBclEpoch = dateTime.Ticks / TimeSpan.TicksPerSecond; - int nanoseconds = (int) (dateTime.Ticks % TimeSpan.TicksPerSecond) * Duration.NanosecondsPerTick; - return new Timestamp { Seconds = secondsSinceBclEpoch - BclSecondsAtUnixEpoch, Nanos = nanoseconds }; - } - - /// - /// Converts the given to a - /// - /// The offset is taken into consideration when converting the value (so the same instant in time - /// is represented) but is not a separate part of the resulting value. In other words, there is no - /// roundtrip operation to retrieve the original DateTimeOffset. - /// The date and time (with UTC offset) to convert to a timestamp. - /// The converted timestamp. - public static Timestamp FromDateTimeOffset(DateTimeOffset dateTimeOffset) - { - // We don't need to worry about this having negative ticks: DateTimeOffset is constrained to handle - // values whose *UTC* value is in the range of DateTime. - return FromDateTime(dateTimeOffset.UtcDateTime); - } - - internal static Timestamp Normalize(long seconds, int nanoseconds) - { - int extraSeconds = nanoseconds / Duration.NanosecondsPerSecond; - seconds += extraSeconds; - nanoseconds -= extraSeconds * Duration.NanosecondsPerSecond; - - if (nanoseconds < 0) - { - nanoseconds += Duration.NanosecondsPerSecond; - seconds--; - } - return new Timestamp { Seconds = seconds, Nanos = nanoseconds }; - } - - /// - /// Converts a timestamp specified in seconds/nanoseconds to a string. - /// - /// - /// If the value is a normalized duration in the range described in timestamp.proto, - /// is ignored. Otherwise, if the parameter is true, - /// a JSON object with a warning is returned; if it is false, an is thrown. - /// - /// Seconds portion of the duration. - /// Nanoseconds portion of the duration. - /// Determines the handling of non-normalized values - /// The represented duration is invalid, and is false. - internal static string ToJson(long seconds, int nanoseconds, bool diagnosticOnly) - { - if (IsNormalized(seconds, nanoseconds)) - { - // Use .NET's formatting for the value down to the second, including an opening double quote (as it's a string value) - DateTime dateTime = UnixEpoch.AddSeconds(seconds); - var builder = new StringBuilder(); - builder.Append('"'); - builder.Append(dateTime.ToString("yyyy'-'MM'-'dd'T'HH:mm:ss", CultureInfo.InvariantCulture)); - Duration.AppendNanoseconds(builder, nanoseconds); - builder.Append("Z\""); - return builder.ToString(); - } - if (diagnosticOnly) - { - return string.Format(CultureInfo.InvariantCulture, - "{{ \"@warning\": \"Invalid Timestamp\", \"seconds\": \"{0}\", \"nanos\": {1} }}", - seconds, - nanoseconds); - } - else - { - throw new InvalidOperationException("Non-normalized timestamp value"); - } - } - - /// - /// Given another timestamp, returns 0 if the timestamps are equivalent, -1 if this timestamp precedes the other, and 1 otherwise - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// Timestamp to compare - /// an integer indicating whether this timestamp precedes or follows the other - public int CompareTo(Timestamp other) - { - return other == null ? 1 - : Seconds < other.Seconds ? -1 - : Seconds > other.Seconds ? 1 - : Nanos < other.Nanos ? -1 - : Nanos > other.Nanos ? 1 - : 0; - } - - /// - /// Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if a precedes b - public static bool operator <(Timestamp a, Timestamp b) - { - return a.CompareTo(b) < 0; - } - - /// - /// Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if a follows b - public static bool operator >(Timestamp a, Timestamp b) - { - return a.CompareTo(b) > 0; - } - - /// - /// Compares two timestamps and returns whether the first is less than (chronologically precedes) the second - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if a precedes b - public static bool operator <=(Timestamp a, Timestamp b) - { - return a.CompareTo(b) <= 0; - } - - /// - /// Compares two timestamps and returns whether the first is greater than (chronologically follows) the second - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if a follows b - public static bool operator >=(Timestamp a, Timestamp b) - { - return a.CompareTo(b) >= 0; - } - - - /// - /// Returns whether two timestamps are equivalent - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if the two timestamps refer to the same nanosecond - public static bool operator ==(Timestamp a, Timestamp b) - { - return ReferenceEquals(a, b) || (ReferenceEquals(a, null) ? (ReferenceEquals(b, null) ? true : false) : a.Equals(b)); - } - - /// - /// Returns whether two timestamps differ - /// - /// - /// Make sure the timestamps are normalized. Comparing non-normalized timestamps is not specified and may give unexpected results. - /// - /// - /// - /// true if the two timestamps differ - public static bool operator !=(Timestamp a, Timestamp b) - { - return !(a == b); - } - - /// - /// Returns a string representation of this for diagnostic purposes. - /// - /// - /// Normally the returned value will be a JSON string value (including leading and trailing quotes) but - /// when the value is non-normalized or out of range, a JSON object representation will be returned - /// instead, including a warning. This is to avoid exceptions being thrown when trying to - /// diagnose problems - the regular JSON formatter will still throw an exception for non-normalized - /// values. - /// - /// A string representation of this value. - public string ToDiagnosticString() - { - return ToJson(Seconds, Nanos, true); - } - } -} diff --git a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs b/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs deleted file mode 100644 index bfd4b8e..0000000 --- a/lib/protobuf/csharp/src/Google.Protobuf/WellKnownTypes/Type.cs +++ /dev/null @@ -1,1506 +0,0 @@ -// -// 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 { - - /// Holder for reflection information generated from google/protobuf/type.proto - public static partial class TypeReflection { - - #region Descriptor - /// File descriptor for google/protobuf/type.proto - public static pbr::FileDescriptor Descriptor { - get { return descriptor; } - } - private static pbr::FileDescriptor descriptor; - - static TypeReflection() { - byte[] descriptorData = global::System.Convert.FromBase64String( - string.Concat( - "Chpnb29nbGUvcHJvdG9idWYvdHlwZS5wcm90bxIPZ29vZ2xlLnByb3RvYnVm", - "Ghlnb29nbGUvcHJvdG9idWYvYW55LnByb3RvGiRnb29nbGUvcHJvdG9idWYv", - "c291cmNlX2NvbnRleHQucHJvdG8i1wEKBFR5cGUSDAoEbmFtZRgBIAEoCRIm", - "CgZmaWVsZHMYAiADKAsyFi5nb29nbGUucHJvdG9idWYuRmllbGQSDgoGb25l", - "b2ZzGAMgAygJEigKB29wdGlvbnMYBCADKAsyFy5nb29nbGUucHJvdG9idWYu", - "T3B0aW9uEjYKDnNvdXJjZV9jb250ZXh0GAUgASgLMh4uZ29vZ2xlLnByb3Rv", - "YnVmLlNvdXJjZUNvbnRleHQSJwoGc3ludGF4GAYgASgOMhcuZ29vZ2xlLnBy", - "b3RvYnVmLlN5bnRheCLVBQoFRmllbGQSKQoEa2luZBgBIAEoDjIbLmdvb2ds", - "ZS5wcm90b2J1Zi5GaWVsZC5LaW5kEjcKC2NhcmRpbmFsaXR5GAIgASgOMiIu", - "Z29vZ2xlLnByb3RvYnVmLkZpZWxkLkNhcmRpbmFsaXR5Eg4KBm51bWJlchgD", - "IAEoBRIMCgRuYW1lGAQgASgJEhAKCHR5cGVfdXJsGAYgASgJEhMKC29uZW9m", - "X2luZGV4GAcgASgFEg4KBnBhY2tlZBgIIAEoCBIoCgdvcHRpb25zGAkgAygL", - "MhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhIRCglqc29uX25hbWUYCiABKAkS", - "FQoNZGVmYXVsdF92YWx1ZRgLIAEoCSLIAgoES2luZBIQCgxUWVBFX1VOS05P", - "V04QABIPCgtUWVBFX0RPVUJMRRABEg4KClRZUEVfRkxPQVQQAhIOCgpUWVBF", - "X0lOVDY0EAMSDwoLVFlQRV9VSU5UNjQQBBIOCgpUWVBFX0lOVDMyEAUSEAoM", - "VFlQRV9GSVhFRDY0EAYSEAoMVFlQRV9GSVhFRDMyEAcSDQoJVFlQRV9CT09M", - "EAgSDwoLVFlQRV9TVFJJTkcQCRIOCgpUWVBFX0dST1VQEAoSEAoMVFlQRV9N", - "RVNTQUdFEAsSDgoKVFlQRV9CWVRFUxAMEg8KC1RZUEVfVUlOVDMyEA0SDQoJ", - "VFlQRV9FTlVNEA4SEQoNVFlQRV9TRklYRUQzMhAPEhEKDVRZUEVfU0ZJWEVE", - "NjQQEBIPCgtUWVBFX1NJTlQzMhAREg8KC1RZUEVfU0lOVDY0EBIidAoLQ2Fy", - "ZGluYWxpdHkSFwoTQ0FSRElOQUxJVFlfVU5LTk9XThAAEhgKFENBUkRJTkFM", - "SVRZX09QVElPTkFMEAESGAoUQ0FSRElOQUxJVFlfUkVRVUlSRUQQAhIYChRD", - "QVJESU5BTElUWV9SRVBFQVRFRBADIs4BCgRFbnVtEgwKBG5hbWUYASABKAkS", - "LQoJZW51bXZhbHVlGAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLkVudW1WYWx1", - "ZRIoCgdvcHRpb25zGAMgAygLMhcuZ29vZ2xlLnByb3RvYnVmLk9wdGlvbhI2", - "Cg5zb3VyY2VfY29udGV4dBgEIAEoCzIeLmdvb2dsZS5wcm90b2J1Zi5Tb3Vy", - "Y2VDb250ZXh0EicKBnN5bnRheBgFIAEoDjIXLmdvb2dsZS5wcm90b2J1Zi5T", - "eW50YXgiUwoJRW51bVZhbHVlEgwKBG5hbWUYASABKAkSDgoGbnVtYmVyGAIg", - "ASgFEigKB29wdGlvbnMYAyADKAsyFy5nb29nbGUucHJvdG9idWYuT3B0aW9u", - "IjsKBk9wdGlvbhIMCgRuYW1lGAEgASgJEiMKBXZhbHVlGAIgASgLMhQuZ29v", - "Z2xlLnByb3RvYnVmLkFueSouCgZTeW50YXgSEQoNU1lOVEFYX1BST1RPMhAA", - "EhEKDVNZTlRBWF9QUk9UTzMQAUJ9ChNjb20uZ29vZ2xlLnByb3RvYnVmQglU", - "eXBlUHJvdG9QAVovZ29vZ2xlLmdvbGFuZy5vcmcvZ2VucHJvdG8vcHJvdG9i", - "dWYvcHR5cGU7cHR5cGX4AQGiAgNHUEKqAh5Hb29nbGUuUHJvdG9idWYuV2Vs", - "bEtub3duVHlwZXNiBnByb3RvMw==")); - descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, - new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.SourceContextReflection.Descriptor, }, - new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Google.Protobuf.WellKnownTypes.Syntax), }, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Type), global::Google.Protobuf.WellKnownTypes.Type.Parser, new[]{ "Name", "Fields", "Oneofs", "Options", "SourceContext", "Syntax" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Field), global::Google.Protobuf.WellKnownTypes.Field.Parser, new[]{ "Kind", "Cardinality", "Number", "Name", "TypeUrl", "OneofIndex", "Packed", "Options", "JsonName", "DefaultValue" }, null, new[]{ typeof(global::Google.Protobuf.WellKnownTypes.Field.Types.Kind), typeof(global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality) }, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Enum), global::Google.Protobuf.WellKnownTypes.Enum.Parser, new[]{ "Name", "Enumvalue", "Options", "SourceContext", "Syntax" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.EnumValue), global::Google.Protobuf.WellKnownTypes.EnumValue.Parser, new[]{ "Name", "Number", "Options" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Google.Protobuf.WellKnownTypes.Option), global::Google.Protobuf.WellKnownTypes.Option.Parser, new[]{ "Name", "Value" }, null, null, null, null) - })); - } - #endregion - - } - #region Enums - /// - /// The syntax in which a protocol buffer element is defined. - /// - public enum Syntax { - /// - /// Syntax `proto2`. - /// - [pbr::OriginalName("SYNTAX_PROTO2")] Proto2 = 0, - /// - /// Syntax `proto3`. - /// - [pbr::OriginalName("SYNTAX_PROTO3")] Proto3 = 1, - } - - #endregion - - #region Messages - /// - /// A protocol buffer message type. - /// - public sealed partial class Type : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Type()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor.MessageTypes[0]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Type() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - syntax_ = other.syntax_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Type Clone() { - return new Type(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// The fully qualified message name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "fields" field. - public const int FieldsFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_fields_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.Field.Parser); - private readonly pbc::RepeatedField fields_ = new pbc::RepeatedField(); - /// - /// The list of fields. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Fields { - get { return fields_; } - } - - /// Field number for the "oneofs" field. - public const int OneofsFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_oneofs_codec - = pb::FieldCodec.ForString(26); - private readonly pbc::RepeatedField oneofs_ = new pbc::RepeatedField(); - /// - /// The list of types appearing in `oneof` definitions in this type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Oneofs { - get { return oneofs_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 4; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(34, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// The protocol buffer options. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - /// Field number for the "source_context" field. - public const int SourceContextFieldNumber = 5; - private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_; - /// - /// The source context. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext { - get { return sourceContext_; } - set { - sourceContext_ = value; - } - } - - /// Field number for the "syntax" field. - public const int SyntaxFieldNumber = 6; - private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.Proto2; - /// - /// The source syntax. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Syntax Syntax { - get { return syntax_; } - set { - syntax_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Type); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - if (Syntax != other.Syntax) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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(); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) hash ^= Syntax.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - output.WriteRawTag(48); - output.WriteEnum((int) Syntax); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - Syntax = other.Syntax; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - case 48: { - Syntax = (global::Google.Protobuf.WellKnownTypes.Syntax) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// A single field of a message type. - /// - public sealed partial class Field : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Field()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor.MessageTypes[1]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Field() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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(); - jsonName_ = other.jsonName_; - defaultValue_ = other.defaultValue_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Field Clone() { - return new Field(this); - } - - /// Field number for the "kind" field. - public const int KindFieldNumber = 1; - private global::Google.Protobuf.WellKnownTypes.Field.Types.Kind kind_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown; - /// - /// The field type. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Field.Types.Kind Kind { - get { return kind_; } - set { - kind_ = value; - } - } - - /// Field number for the "cardinality" field. - public const int CardinalityFieldNumber = 2; - private global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality cardinality_ = global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality.Unknown; - /// - /// The field cardinality. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Field.Types.Cardinality Cardinality { - get { return cardinality_; } - set { - cardinality_ = value; - } - } - - /// Field number for the "number" field. - public const int NumberFieldNumber = 3; - private int number_; - /// - /// The field number. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Number { - get { return number_; } - set { - number_ = value; - } - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 4; - private string name_ = ""; - /// - /// The field name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "type_url" field. - public const int TypeUrlFieldNumber = 6; - private string typeUrl_ = ""; - /// - /// The field type URL, without the scheme, for message or enumeration - /// types. Example: `"type.googleapis.com/google.protobuf.Timestamp"`. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string TypeUrl { - get { return typeUrl_; } - set { - typeUrl_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "oneof_index" field. - public const int OneofIndexFieldNumber = 7; - private int oneofIndex_; - /// - /// The index of the field type in `Type.oneofs`, for message or enumeration - /// types. The first type has index 1; zero means the type is not in the list. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int OneofIndex { - get { return oneofIndex_; } - set { - oneofIndex_ = value; - } - } - - /// Field number for the "packed" field. - public const int PackedFieldNumber = 8; - private bool packed_; - /// - /// Whether to use alternative packed wire representation. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public bool Packed { - get { return packed_; } - set { - packed_ = value; - } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 9; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(74, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// The protocol buffer options. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - /// Field number for the "json_name" field. - public const int JsonNameFieldNumber = 10; - private string jsonName_ = ""; - /// - /// The field JSON name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string JsonName { - get { return jsonName_; } - set { - jsonName_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "default_value" field. - public const int DefaultValueFieldNumber = 11; - private string defaultValue_ = ""; - /// - /// The string value of the default value of this field. Proto2 syntax only. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string DefaultValue { - get { return defaultValue_; } - set { - defaultValue_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Field); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - if (JsonName != other.JsonName) return false; - if (DefaultValue != other.DefaultValue) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown) hash ^= Kind.GetHashCode(); - if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.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(); - if (JsonName.Length != 0) hash ^= JsonName.GetHashCode(); - if (DefaultValue.Length != 0) hash ^= DefaultValue.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void WriteTo(pb::CodedOutputStream output) { - if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown) { - output.WriteRawTag(8); - output.WriteEnum((int) Kind); - } - if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.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); - if (JsonName.Length != 0) { - output.WriteRawTag(82); - output.WriteString(JsonName); - } - if (DefaultValue.Length != 0) { - output.WriteRawTag(90); - output.WriteString(DefaultValue); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int CalculateSize() { - int size = 0; - if (Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind); - } - if (Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.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); - if (JsonName.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(JsonName); - } - if (DefaultValue.Length != 0) { - size += 1 + pb::CodedOutputStream.ComputeStringSize(DefaultValue); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(Field other) { - if (other == null) { - return; - } - if (other.Kind != global::Google.Protobuf.WellKnownTypes.Field.Types.Kind.TypeUnknown) { - Kind = other.Kind; - } - if (other.Cardinality != global::Google.Protobuf.WellKnownTypes.Field.Types.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_); - if (other.JsonName.Length != 0) { - JsonName = other.JsonName; - } - if (other.DefaultValue.Length != 0) { - DefaultValue = other.DefaultValue; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - case 82: { - JsonName = input.ReadString(); - break; - } - case 90: { - DefaultValue = input.ReadString(); - break; - } - } - } - } - - #region Nested types - /// Container for nested types declared in the Field message type. - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static partial class Types { - /// - /// Basic field types. - /// - public enum Kind { - /// - /// Field type unknown. - /// - [pbr::OriginalName("TYPE_UNKNOWN")] TypeUnknown = 0, - /// - /// Field type double. - /// - [pbr::OriginalName("TYPE_DOUBLE")] TypeDouble = 1, - /// - /// Field type float. - /// - [pbr::OriginalName("TYPE_FLOAT")] TypeFloat = 2, - /// - /// Field type int64. - /// - [pbr::OriginalName("TYPE_INT64")] TypeInt64 = 3, - /// - /// Field type uint64. - /// - [pbr::OriginalName("TYPE_UINT64")] TypeUint64 = 4, - /// - /// Field type int32. - /// - [pbr::OriginalName("TYPE_INT32")] TypeInt32 = 5, - /// - /// Field type fixed64. - /// - [pbr::OriginalName("TYPE_FIXED64")] TypeFixed64 = 6, - /// - /// Field type fixed32. - /// - [pbr::OriginalName("TYPE_FIXED32")] TypeFixed32 = 7, - /// - /// Field type bool. - /// - [pbr::OriginalName("TYPE_BOOL")] TypeBool = 8, - /// - /// Field type string. - /// - [pbr::OriginalName("TYPE_STRING")] TypeString = 9, - /// - /// Field type group. Proto2 syntax only, and deprecated. - /// - [pbr::OriginalName("TYPE_GROUP")] TypeGroup = 10, - /// - /// Field type message. - /// - [pbr::OriginalName("TYPE_MESSAGE")] TypeMessage = 11, - /// - /// Field type bytes. - /// - [pbr::OriginalName("TYPE_BYTES")] TypeBytes = 12, - /// - /// Field type uint32. - /// - [pbr::OriginalName("TYPE_UINT32")] TypeUint32 = 13, - /// - /// Field type enum. - /// - [pbr::OriginalName("TYPE_ENUM")] TypeEnum = 14, - /// - /// Field type sfixed32. - /// - [pbr::OriginalName("TYPE_SFIXED32")] TypeSfixed32 = 15, - /// - /// Field type sfixed64. - /// - [pbr::OriginalName("TYPE_SFIXED64")] TypeSfixed64 = 16, - /// - /// Field type sint32. - /// - [pbr::OriginalName("TYPE_SINT32")] TypeSint32 = 17, - /// - /// Field type sint64. - /// - [pbr::OriginalName("TYPE_SINT64")] TypeSint64 = 18, - } - - /// - /// Whether a field is optional, required, or repeated. - /// - public enum Cardinality { - /// - /// For fields with unknown cardinality. - /// - [pbr::OriginalName("CARDINALITY_UNKNOWN")] Unknown = 0, - /// - /// For optional fields. - /// - [pbr::OriginalName("CARDINALITY_OPTIONAL")] Optional = 1, - /// - /// For required fields. Proto2 syntax only. - /// - [pbr::OriginalName("CARDINALITY_REQUIRED")] Required = 2, - /// - /// For repeated fields. - /// - [pbr::OriginalName("CARDINALITY_REPEATED")] Repeated = 3, - } - - } - #endregion - - } - - /// - /// Enum type definition. - /// - public sealed partial class Enum : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Enum()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor.MessageTypes[2]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Enum() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Enum(Enum other) : this() { - name_ = other.name_; - enumvalue_ = other.enumvalue_.Clone(); - options_ = other.options_.Clone(); - sourceContext_ = other.sourceContext_ != null ? other.sourceContext_.Clone() : null; - syntax_ = other.syntax_; - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public Enum Clone() { - return new Enum(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// Enum type name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "enumvalue" field. - public const int EnumvalueFieldNumber = 2; - private static readonly pb::FieldCodec _repeated_enumvalue_codec - = pb::FieldCodec.ForMessage(18, global::Google.Protobuf.WellKnownTypes.EnumValue.Parser); - private readonly pbc::RepeatedField enumvalue_ = new pbc::RepeatedField(); - /// - /// Enum value definitions. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Enumvalue { - get { return enumvalue_; } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// Protocol buffer options. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - /// Field number for the "source_context" field. - public const int SourceContextFieldNumber = 4; - private global::Google.Protobuf.WellKnownTypes.SourceContext sourceContext_; - /// - /// The source context. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.SourceContext SourceContext { - get { return sourceContext_; } - set { - sourceContext_ = value; - } - } - - /// Field number for the "syntax" field. - public const int SyntaxFieldNumber = 5; - private global::Google.Protobuf.WellKnownTypes.Syntax syntax_ = global::Google.Protobuf.WellKnownTypes.Syntax.Proto2; - /// - /// The source syntax. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public global::Google.Protobuf.WellKnownTypes.Syntax Syntax { - get { return syntax_; } - set { - syntax_ = value; - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as Enum); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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; - if (Syntax != other.Syntax) return false; - return Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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(); - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) hash ^= Syntax.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - output.WriteRawTag(40); - output.WriteEnum((int) Syntax); - } - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Syntax); - } - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - } - if (other.Syntax != global::Google.Protobuf.WellKnownTypes.Syntax.Proto2) { - Syntax = other.Syntax; - } - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - 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; - } - case 40: { - Syntax = (global::Google.Protobuf.WellKnownTypes.Syntax) input.ReadEnum(); - break; - } - } - } - } - - } - - /// - /// Enum value definition. - /// - public sealed partial class EnumValue : pb::IMessage { - private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new EnumValue()); - private pb::UnknownFieldSet _unknownFields; - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pb::MessageParser Parser { get { return _parser; } } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public static pbr::MessageDescriptor Descriptor { - get { return global::Google.Protobuf.WellKnownTypes.TypeReflection.Descriptor.MessageTypes[3]; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - pbr::MessageDescriptor pb::IMessage.Descriptor { - get { return Descriptor; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValue() { - OnConstruction(); - } - - partial void OnConstruction(); - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValue(EnumValue other) : this() { - name_ = other.name_; - number_ = other.number_; - options_ = other.options_.Clone(); - _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public EnumValue Clone() { - return new EnumValue(this); - } - - /// Field number for the "name" field. - public const int NameFieldNumber = 1; - private string name_ = ""; - /// - /// Enum value name. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public string Name { - get { return name_; } - set { - name_ = pb::ProtoPreconditions.CheckNotNull(value, "value"); - } - } - - /// Field number for the "number" field. - public const int NumberFieldNumber = 2; - private int number_; - /// - /// Enum value number. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public int Number { - get { return number_; } - set { - number_ = value; - } - } - - /// Field number for the "options" field. - public const int OptionsFieldNumber = 3; - private static readonly pb::FieldCodec _repeated_options_codec - = pb::FieldCodec.ForMessage(26, global::Google.Protobuf.WellKnownTypes.Option.Parser); - private readonly pbc::RepeatedField options_ = new pbc::RepeatedField(); - /// - /// Protocol buffer options. - /// - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public pbc::RepeatedField Options { - get { return options_; } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override bool Equals(object other) { - return Equals(other as EnumValue); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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 Equals(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override int GetHashCode() { - int hash = 1; - if (Name.Length != 0) hash ^= Name.GetHashCode(); - if (Number != 0) hash ^= Number.GetHashCode(); - hash ^= options_.GetHashCode(); - if (_unknownFields != null) { - hash ^= _unknownFields.GetHashCode(); - } - return hash; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public override string ToString() { - return pb::JsonFormatter.ToDiagnosticString(this); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - if (_unknownFields != null) { - _unknownFields.WriteTo(output); - } - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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); - if (_unknownFields != null) { - size += _unknownFields.CalculateSize(); - } - return size; - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - 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_); - _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); - } - - [global::System.Diagnostics.DebuggerNonUserCodeAttribute] - public void MergeFrom(pb::CodedInputStream input) { - uint tag; - while ((tag = input.ReadTag()) != 0) { - switch(tag) { - default: - _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); - break; - case 10: { - Name = input.ReadString(); - break; - } - case 16: { - Number = input.ReadInt32(); - break; - } - case 26: { - options_.AddEntriesFrom(input, _repeated_options_codec); - break; - } - } - } - } - - } - - /// - /// A protocol buffer option, which can be attached to a message, field, - /// enumeration, etc. - /// - public sealed partial class Option : pb::IMessage