protoc 2.6.1.1 → 2.6.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/protoc/Makefile.in +10 -13
- data/ext/protoc/extconf.rb +0 -1
- data/ext/protoc/protobuf/CHANGES.txt +593 -0
- data/ext/protoc/protobuf/CONTRIBUTORS.txt +93 -0
- data/ext/protoc/protobuf/INSTALL.txt +237 -0
- data/ext/protoc/protobuf/LICENSE +33 -0
- data/ext/protoc/protobuf/Makefile.am +267 -0
- data/ext/protoc/protobuf/README.md +167 -0
- data/ext/protoc/protobuf/autogen.sh +41 -0
- data/ext/protoc/protobuf/benchmarks/ProtoBench.java +203 -0
- data/ext/protoc/protobuf/benchmarks/google_message1.dat +0 -0
- data/ext/protoc/protobuf/benchmarks/google_message2.dat +0 -0
- data/ext/protoc/protobuf/benchmarks/google_size.proto +136 -0
- data/ext/protoc/protobuf/benchmarks/google_speed.proto +136 -0
- data/ext/protoc/protobuf/benchmarks/readme.txt +50 -0
- data/ext/protoc/protobuf/configure.ac +159 -0
- data/ext/protoc/protobuf/editors/README.txt +5 -0
- data/ext/protoc/protobuf/editors/proto.vim +105 -0
- data/ext/protoc/protobuf/editors/protobuf-mode.el +220 -0
- data/ext/protoc/protobuf/examples/AddPerson.java +95 -0
- data/ext/protoc/protobuf/examples/ListPeople.java +50 -0
- data/ext/protoc/protobuf/examples/Makefile +58 -0
- data/ext/protoc/protobuf/examples/README.txt +29 -0
- data/ext/protoc/protobuf/examples/add_person.cc +95 -0
- data/ext/protoc/protobuf/examples/add_person.py +58 -0
- data/ext/protoc/protobuf/examples/addressbook.proto +30 -0
- data/ext/protoc/protobuf/examples/list_people.cc +68 -0
- data/ext/protoc/protobuf/examples/list_people.py +38 -0
- data/ext/protoc/protobuf/generate_descriptor_proto.sh +33 -0
- data/ext/protoc/protobuf/java/README.txt +96 -0
- data/ext/protoc/protobuf/java/pom.xml +217 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessage.java +466 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractMessageLite.java +355 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/AbstractParser.java +253 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingRpcChannel.java +51 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BlockingService.java +64 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/BoundedByteString.java +163 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ByteString.java +1022 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedInputStream.java +1311 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/CodedOutputStream.java +1297 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Descriptors.java +2238 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/DynamicMessage.java +622 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Extension.java +96 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistry.java +392 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ExtensionRegistryLite.java +185 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/FieldSet.java +907 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessage.java +2213 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/GeneratedMessageLite.java +949 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Internal.java +391 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/InvalidProtocolBufferException.java +122 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyField.java +154 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyFieldLite.java +176 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringArrayList.java +367 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LazyStringList.java +163 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/LiteralByteString.java +362 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Message.java +244 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLite.java +320 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageLiteOrBuilder.java +60 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageOrBuilder.java +143 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/MessageReflection.java +931 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Parser.java +261 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolMessageEnum.java +58 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ProtocolStringList.java +48 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RepeatedFieldBuilder.java +696 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RopeByteString.java +957 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcCallback.java +47 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcChannel.java +71 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcController.java +118 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/RpcUtil.java +134 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Service.java +117 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/ServiceException.java +52 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SingleFieldBuilder.java +241 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/SmallSortedMap.java +618 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/TextFormat.java +1984 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UninitializedMessageException.java +99 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnknownFieldSet.java +995 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/UnmodifiableLazyStringList.java +205 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/Utf8.java +349 -0
- data/ext/protoc/protobuf/java/src/main/java/com/google/protobuf/WireFormat.java +163 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/AbstractMessageTest.java +527 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/BoundedByteStringTest.java +68 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ByteStringTest.java +759 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CheckUtf8Test.java +141 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedInputStreamTest.java +769 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/CodedOutputStreamTest.java +401 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DeprecatedFieldTest.java +80 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DescriptorsTest.java +735 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/DynamicMessageTest.java +326 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ForceFieldBuildersPreRun.java +48 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/GeneratedMessageTest.java +1515 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8Test.java +180 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/IsValidUtf8TestUtil.java +421 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldLiteTest.java +134 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyFieldTest.java +121 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyMessageLiteTest.java +319 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringArrayListTest.java +174 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LazyStringEndToEndTest.java +143 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteEqualsAndHashTest.java +85 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteTest.java +148 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/LiteralByteStringTest.java +396 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/MessageTest.java +353 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/NestedBuildersTest.java +185 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ParserTest.java +381 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RepeatedFieldBuilderTest.java +190 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringSubstringTest.java +97 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/RopeByteStringTest.java +115 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/ServiceTest.java +320 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SingleFieldBuilderTest.java +155 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/SmallSortedMapTest.java +420 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestBadIdentifiers.java +96 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TestUtil.java +4124 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/TextFormatTest.java +994 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java +653 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/UnmodifiableLazyStringListTest.java +227 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/WireFormatTest.java +606 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lazy_fields_lite.proto +61 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/lite_equals_and_hash.proto +55 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/multiple_files_test.proto +77 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_builders_test.proto +53 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension.proto +46 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/nested_extension_lite.proto +48 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension.proto +49 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/non_nested_extension_lite.proto +50 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test.proto +38 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test2.proto +42 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/outer_class_name_test3.proto +43 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_bad_identifiers.proto +157 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8.proto +50 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_check_utf8_size.proto +51 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_custom_options.proto +43 -0
- data/ext/protoc/protobuf/java/src/test/java/com/google/protobuf/test_extra_interfaces.proto +60 -0
- data/ext/protoc/protobuf/m4/ac_system_extensions.m4 +37 -0
- data/ext/protoc/protobuf/m4/acx_check_suncc.m4 +75 -0
- data/ext/protoc/protobuf/m4/acx_pthread.m4 +397 -0
- data/ext/protoc/protobuf/m4/stl_hash.m4 +72 -0
- data/ext/protoc/protobuf/more_tests/Makefile +41 -0
- data/ext/protoc/protobuf/post_process_dist.sh +60 -0
- data/ext/protoc/protobuf/protobuf-lite.pc.in +13 -0
- data/ext/protoc/protobuf/protobuf.pc.in +14 -0
- data/ext/protoc/protobuf/python/README.txt +105 -0
- data/ext/protoc/protobuf/python/ez_setup.py +284 -0
- data/ext/protoc/protobuf/python/google/__init__.py +1 -0
- data/ext/protoc/protobuf/python/google/protobuf/__init__.py +0 -0
- data/ext/protoc/protobuf/python/google/protobuf/descriptor.py +849 -0
- data/ext/protoc/protobuf/python/google/protobuf/descriptor_database.py +137 -0
- data/ext/protoc/protobuf/python/google/protobuf/descriptor_pool.py +643 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/__init__.py +0 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.cc +139 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation.py +89 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/api_implementation_default_test.py +63 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/containers.py +269 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/cpp_message.py +663 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/decoder.py +831 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_database_test.py +63 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test.py +564 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test1.proto +94 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_pool_test2.proto +70 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_python_test.py +54 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/descriptor_test.py +669 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/encoder.py +788 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/enum_type_wrapper.py +89 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test1.proto +57 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/factory_test2.proto +92 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/generator_test.py +343 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_python_test.py +54 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/message_factory_test.py +131 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/message_listener.py +78 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/message_python_test.py +54 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/message_test.py +681 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/missing_enum_values.proto +50 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions.proto +58 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/more_extensions_dynamic.proto +49 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/more_messages.proto +51 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/python_message.py +1251 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/reflection_test.py +2934 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/service_reflection_test.py +136 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/symbol_database_test.py +120 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/test_bad_identifiers.proto +52 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/test_util.py +662 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/text_encoding_test.py +68 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/text_format_test.py +743 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/type_checkers.py +328 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/unknown_fields_test.py +231 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format.py +268 -0
- data/ext/protoc/protobuf/python/google/protobuf/internal/wire_format_test.py +253 -0
- data/ext/protoc/protobuf/python/google/protobuf/message.py +284 -0
- data/ext/protoc/protobuf/python/google/protobuf/message_factory.py +155 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/README +6 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/__init__.py +0 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/cpp_message.py +61 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.cc +357 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor.h +96 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/descriptor_cpp2_test.py +58 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.cc +338 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/extension_dict.h +123 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/message.cc +2561 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/message.h +305 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/message_factory_cpp2_test.py +56 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/proto2_api_test.proto +38 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/python.proto +66 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/python_protobuf.h +57 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/reflection_cpp2_generated_test.py +94 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.cc +763 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_composite_container.h +172 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.cc +825 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/repeated_scalar_container.h +112 -0
- data/ext/protoc/protobuf/python/google/protobuf/pyext/scoped_pyobject_ptr.h +95 -0
- data/ext/protoc/protobuf/python/google/protobuf/reflection.py +205 -0
- data/ext/protoc/protobuf/python/google/protobuf/service.py +226 -0
- data/ext/protoc/protobuf/python/google/protobuf/service_reflection.py +284 -0
- data/ext/protoc/protobuf/python/google/protobuf/symbol_database.py +185 -0
- data/ext/protoc/protobuf/python/google/protobuf/text_encoding.py +110 -0
- data/ext/protoc/protobuf/python/google/protobuf/text_format.py +873 -0
- data/ext/protoc/protobuf/python/mox.py +1401 -0
- data/ext/protoc/protobuf/python/setup.py +201 -0
- data/ext/protoc/protobuf/python/stubout.py +140 -0
- data/ext/protoc/protobuf/src/Makefile.am +418 -0
- data/ext/protoc/protobuf/src/google/protobuf/SEBS +240 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.cc +84 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/code_generator.h +145 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.cc +1603 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface.h +378 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/command_line_interface_unittest.cc +1654 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_bootstrap_unittest.cc +158 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc +288 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.h +103 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc +431 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.h +122 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc +210 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.h +86 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc +166 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_field.h +185 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc +665 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_file.h +99 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc +125 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.h +72 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc +494 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.h +206 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc +2645 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message.h +175 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc +375 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.h +121 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_options.h +58 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_plugin_unittest.cc +123 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc +451 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.h +123 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc +334 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_service.h +118 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc +642 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.h +127 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_test_bad_identifiers.proto +132 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.cc +2074 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/cpp/cpp_unittest.h +51 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.cc +480 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/importer.h +317 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/importer_unittest.cc +617 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.cc +195 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_context.h +95 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc +233 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment.h +69 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_doc_comment_unittest.cc +67 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.cc +333 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum.h +99 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc +778 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_enum_field.h +158 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.cc +207 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_extension.h +109 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.cc +213 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_field.h +162 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.cc +534 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_file.h +115 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.cc +158 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator.h +72 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc +77 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_generator_factory.h +101 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.cc +737 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_helpers.h +322 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.cc +826 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_lazy_message_field.h +121 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.cc +1666 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message.h +140 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.cc +1343 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_message_field.h +173 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc +266 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_name_resolver.h +124 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_plugin_unittest.cc +124 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc +877 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_primitive_field.h +160 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.cc +473 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_service.h +135 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc +201 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.h +90 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.cc +1056 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/java/java_string_field.h +160 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/main.cc +61 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.cc +240 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/mock_code_generator.h +117 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/package_info.h +64 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.cc +1750 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/parser.h +522 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/parser_unittest.cc +2612 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.cc +163 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.h +72 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.cc +1148 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.pb.h +897 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/plugin.proto +147 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.cc +1262 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_generator.h +166 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/python/python_plugin_unittest.cc +118 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.cc +463 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/subprocess.h +108 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/test_plugin.cc +51 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_output_unittest.sh +91 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.cc +218 -0
- data/ext/protoc/protobuf/src/google/protobuf/compiler/zip_writer.h +93 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor.cc +5420 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor.h +1691 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.cc +9135 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor.pb.h +6761 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor.proto +687 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.cc +543 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor_database.h +369 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor_database_unittest.cc +748 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor_pb2_test.py +54 -0
- data/ext/protoc/protobuf/src/google/protobuf/descriptor_unittest.cc +5501 -0
- data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.cc +764 -0
- data/ext/protoc/protobuf/src/google/protobuf/dynamic_message.h +148 -0
- data/ext/protoc/protobuf/src/google/protobuf/dynamic_message_unittest.cc +230 -0
- data/ext/protoc/protobuf/src/google/protobuf/extension_set.cc +1663 -0
- data/ext/protoc/protobuf/src/google/protobuf/extension_set.h +1234 -0
- data/ext/protoc/protobuf/src/google/protobuf/extension_set_heavy.cc +734 -0
- data/ext/protoc/protobuf/src/google/protobuf/extension_set_unittest.cc +1095 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_enum_reflection.h +91 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.cc +1683 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection.h +504 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_message_reflection_unittest.cc +795 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.cc +65 -0
- data/ext/protoc/protobuf/src/google/protobuf/generated_message_util.h +113 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.cc +914 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream.h +1220 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_inl.h +69 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/coded_stream_unittest.cc +1378 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.cc +326 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream.h +209 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/gzip_stream_unittest.sh +44 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/package_info.h +54 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/printer.cc +198 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/printer.h +136 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/printer_unittest.cc +285 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/strtod.cc +113 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/strtod.h +50 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.cc +1127 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer.h +402 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/tokenizer_unittest.cc +999 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.cc +57 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream.h +248 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc +473 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h +358 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc +405 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h +354 -0
- data/ext/protoc/protobuf/src/google/protobuf/io/zero_copy_stream_unittest.cc +965 -0
- data/ext/protoc/protobuf/src/google/protobuf/lite_unittest.cc +350 -0
- data/ext/protoc/protobuf/src/google/protobuf/message.cc +358 -0
- data/ext/protoc/protobuf/src/google/protobuf/message.h +866 -0
- data/ext/protoc/protobuf/src/google/protobuf/message_lite.cc +335 -0
- data/ext/protoc/protobuf/src/google/protobuf/message_lite.h +247 -0
- data/ext/protoc/protobuf/src/google/protobuf/message_unittest.cc +427 -0
- data/ext/protoc/protobuf/src/google/protobuf/package_info.h +64 -0
- data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.cc +269 -0
- data/ext/protoc/protobuf/src/google/protobuf/reflection_ops.h +81 -0
- data/ext/protoc/protobuf/src/google/protobuf/reflection_ops_unittest.cc +475 -0
- data/ext/protoc/protobuf/src/google/protobuf/repeated_field.cc +87 -0
- data/ext/protoc/protobuf/src/google/protobuf/repeated_field.h +1603 -0
- data/ext/protoc/protobuf/src/google/protobuf/repeated_field_reflection_unittest.cc +195 -0
- data/ext/protoc/protobuf/src/google/protobuf/repeated_field_unittest.cc +1442 -0
- data/ext/protoc/protobuf/src/google/protobuf/service.cc +46 -0
- data/ext/protoc/protobuf/src/google/protobuf/service.h +291 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops.h +227 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm64_gcc.h +325 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_gcc.h +151 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_arm_qnx.h +146 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_atomicword_compat.h +122 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h +137 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_macosx.h +225 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_mips_gcc.h +313 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_pnacl.h +73 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_solaris.h +188 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_tsan.h +219 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc +137 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.h +293 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc +112 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_msvc.h +150 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/common.cc +395 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/common.h +1226 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/common_unittest.cc +357 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/hash.h +232 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/map_util.h +771 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/once.cc +99 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/once.h +166 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/once_unittest.cc +253 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/platform_macros.h +103 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/shared_ptr.h +470 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/stl_util.h +121 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.cc +175 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf.h +76 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/stringprintf_unittest.cc +152 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid.cc +536 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/structurally_valid_unittest.cc +40 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.cc +1279 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil.h +562 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/strutil_unittest.cc +73 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.cc +134 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/substitute.h +170 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util.h +138 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/template_util_unittest.cc +130 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits.h +336 -0
- data/ext/protoc/protobuf/src/google/protobuf/stubs/type_traits_unittest.cc +628 -0
- data/ext/protoc/protobuf/src/google/protobuf/test_util.cc +3345 -0
- data/ext/protoc/protobuf/src/google/protobuf/test_util.h +215 -0
- data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.cc +1585 -0
- data/ext/protoc/protobuf/src/google/protobuf/test_util_lite.h +101 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/bad_utf8_string +1 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message +0 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_message_oneof_implemented +0 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/golden_packed_fields_message +0 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data.txt +134 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_oneof_implemented.txt +129 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy.txt +134 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_data_pointy_oneof.txt +129 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data.txt +134 -0
- data/ext/protoc/protobuf/src/google/protobuf/testdata/text_format_unittest_extensions_data_pointy.txt +134 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/file.cc +194 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/file.h +97 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.cc +255 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/googletest.h +102 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/zcgunzip.cc +73 -0
- data/ext/protoc/protobuf/src/google/protobuf/testing/zcgzip.cc +79 -0
- data/ext/protoc/protobuf/src/google/protobuf/text_format.cc +1746 -0
- data/ext/protoc/protobuf/src/google/protobuf/text_format.h +473 -0
- data/ext/protoc/protobuf/src/google/protobuf/text_format_unittest.cc +1479 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest.proto +861 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_custom_options.proto +393 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_embed_optimize_for.proto +50 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_empty.proto +37 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_enormous_descriptor.proto +1046 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_import.proto +64 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_import_lite.proto +51 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public.proto +40 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_import_public_lite.proto +42 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_lite.proto +384 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_lite_imports_nonlite.proto +43 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_mset.proto +83 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_no_generic_services.proto +53 -0
- data/ext/protoc/protobuf/src/google/protobuf/unittest_optimize_for.proto +66 -0
- data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.cc +265 -0
- data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set.h +318 -0
- data/ext/protoc/protobuf/src/google/protobuf/unknown_field_set_unittest.cc +599 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format.cc +1101 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format.h +336 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.cc +471 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite.h +661 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format_lite_inl.h +860 -0
- data/ext/protoc/protobuf/src/google/protobuf/wire_format_unittest.cc +1120 -0
- data/ext/protoc/protobuf/src/solaris/libstdc++.la +51 -0
- data/ext/protoc/protobuf/vsprojects/config.h +29 -0
- data/ext/protoc/protobuf/vsprojects/convert2008to2005.sh +20 -0
- data/ext/protoc/protobuf/vsprojects/extract_includes.bat +50 -0
- data/ext/protoc/protobuf/vsprojects/libprotobuf-lite.vcproj +302 -0
- data/ext/protoc/protobuf/vsprojects/libprotobuf.vcproj +470 -0
- data/ext/protoc/protobuf/vsprojects/libprotoc.vcproj +466 -0
- data/ext/protoc/protobuf/vsprojects/lite-test.vcproj +305 -0
- data/ext/protoc/protobuf/vsprojects/protobuf.sln +92 -0
- data/ext/protoc/protobuf/vsprojects/protoc.vcproj +192 -0
- data/ext/protoc/protobuf/vsprojects/readme.txt +114 -0
- data/ext/protoc/protobuf/vsprojects/test_plugin.vcproj +209 -0
- data/ext/protoc/protobuf/vsprojects/tests.vcproj +681 -0
- data/lib/protoc/version.rb +1 -1
- metadata +480 -3
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// https://developers.google.com/protocol-buffers/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: kenton@google.com (Kenton Varda)
|
|
32
|
+
// Based on original Protocol Buffers design by
|
|
33
|
+
// Sanjay Ghemawat, Jeff Dean, and others.
|
|
34
|
+
|
|
35
|
+
#ifndef GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__
|
|
36
|
+
#define GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__
|
|
37
|
+
|
|
38
|
+
#include <string>
|
|
39
|
+
#include <map>
|
|
40
|
+
#include <google/protobuf/compiler/java/java_field.h>
|
|
41
|
+
|
|
42
|
+
namespace google {
|
|
43
|
+
namespace protobuf {
|
|
44
|
+
namespace compiler {
|
|
45
|
+
namespace java {
|
|
46
|
+
class Context; // context.h
|
|
47
|
+
class ClassNameResolver; // name_resolver.h
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
namespace io {
|
|
51
|
+
class Printer; // printer.h
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
namespace protobuf {
|
|
56
|
+
namespace compiler {
|
|
57
|
+
namespace java {
|
|
58
|
+
|
|
59
|
+
class MessageGenerator {
|
|
60
|
+
public:
|
|
61
|
+
explicit MessageGenerator(const Descriptor* descriptor);
|
|
62
|
+
virtual ~MessageGenerator();
|
|
63
|
+
|
|
64
|
+
// All static variables have to be declared at the top-level of the file
|
|
65
|
+
// so that we can control initialization order, which is important for
|
|
66
|
+
// DescriptorProto bootstrapping to work.
|
|
67
|
+
virtual void GenerateStaticVariables(io::Printer* printer) = 0;
|
|
68
|
+
|
|
69
|
+
// Output code which initializes the static variables generated by
|
|
70
|
+
// GenerateStaticVariables().
|
|
71
|
+
virtual void GenerateStaticVariableInitializers(io::Printer* printer) = 0;
|
|
72
|
+
|
|
73
|
+
// Generate the class itself.
|
|
74
|
+
virtual void Generate(io::Printer* printer) = 0;
|
|
75
|
+
|
|
76
|
+
// Generates the base interface that both the class and its builder implement
|
|
77
|
+
virtual void GenerateInterface(io::Printer* printer) = 0;
|
|
78
|
+
|
|
79
|
+
// Generate code to register all contained extensions with an
|
|
80
|
+
// ExtensionRegistry.
|
|
81
|
+
virtual void GenerateExtensionRegistrationCode(io::Printer* printer) = 0;
|
|
82
|
+
|
|
83
|
+
protected:
|
|
84
|
+
const Descriptor* descriptor_;
|
|
85
|
+
|
|
86
|
+
private:
|
|
87
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageGenerator);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
class ImmutableMessageGenerator : public MessageGenerator {
|
|
91
|
+
public:
|
|
92
|
+
explicit ImmutableMessageGenerator(const Descriptor* descriptor,
|
|
93
|
+
Context* context);
|
|
94
|
+
virtual ~ImmutableMessageGenerator();
|
|
95
|
+
|
|
96
|
+
virtual void Generate(io::Printer* printer);
|
|
97
|
+
virtual void GenerateInterface(io::Printer* printer);
|
|
98
|
+
virtual void GenerateExtensionRegistrationCode(io::Printer* printer);
|
|
99
|
+
virtual void GenerateStaticVariables(io::Printer* printer);
|
|
100
|
+
virtual void GenerateStaticVariableInitializers(io::Printer* printer);
|
|
101
|
+
|
|
102
|
+
private:
|
|
103
|
+
enum UseMemoization {
|
|
104
|
+
MEMOIZE,
|
|
105
|
+
DONT_MEMOIZE
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
void GenerateFieldAccessorTable(io::Printer* printer);
|
|
109
|
+
void GenerateFieldAccessorTableInitializer(io::Printer* printer);
|
|
110
|
+
|
|
111
|
+
void GenerateMessageSerializationMethods(io::Printer* printer);
|
|
112
|
+
void GenerateParseFromMethods(io::Printer* printer);
|
|
113
|
+
void GenerateSerializeOneField(io::Printer* printer,
|
|
114
|
+
const FieldDescriptor* field);
|
|
115
|
+
void GenerateSerializeOneExtensionRange(
|
|
116
|
+
io::Printer* printer, const Descriptor::ExtensionRange* range);
|
|
117
|
+
|
|
118
|
+
void GenerateBuilder(io::Printer* printer);
|
|
119
|
+
void GenerateCommonBuilderMethods(io::Printer* printer);
|
|
120
|
+
void GenerateDescriptorMethods(io::Printer* printer);
|
|
121
|
+
void GenerateBuilderParsingMethods(io::Printer* printer);
|
|
122
|
+
void GenerateIsInitialized(io::Printer* printer,
|
|
123
|
+
UseMemoization useMemoization);
|
|
124
|
+
void GenerateEqualsAndHashCode(io::Printer* printer);
|
|
125
|
+
void GenerateParser(io::Printer* printer);
|
|
126
|
+
void GenerateParsingConstructor(io::Printer* printer);
|
|
127
|
+
|
|
128
|
+
Context* context_;
|
|
129
|
+
ClassNameResolver* name_resolver_;
|
|
130
|
+
FieldGeneratorMap<ImmutableFieldGenerator> field_generators_;
|
|
131
|
+
|
|
132
|
+
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(ImmutableMessageGenerator);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
} // namespace java
|
|
136
|
+
} // namespace compiler
|
|
137
|
+
} // namespace protobuf
|
|
138
|
+
|
|
139
|
+
} // namespace google
|
|
140
|
+
#endif // GOOGLE_PROTOBUF_COMPILER_JAVA_MESSAGE_H__
|
|
@@ -0,0 +1,1343 @@
|
|
|
1
|
+
// Protocol Buffers - Google's data interchange format
|
|
2
|
+
// Copyright 2008 Google Inc. All rights reserved.
|
|
3
|
+
// https://developers.google.com/protocol-buffers/
|
|
4
|
+
//
|
|
5
|
+
// Redistribution and use in source and binary forms, with or without
|
|
6
|
+
// modification, are permitted provided that the following conditions are
|
|
7
|
+
// met:
|
|
8
|
+
//
|
|
9
|
+
// * Redistributions of source code must retain the above copyright
|
|
10
|
+
// notice, this list of conditions and the following disclaimer.
|
|
11
|
+
// * Redistributions in binary form must reproduce the above
|
|
12
|
+
// copyright notice, this list of conditions and the following disclaimer
|
|
13
|
+
// in the documentation and/or other materials provided with the
|
|
14
|
+
// distribution.
|
|
15
|
+
// * Neither the name of Google Inc. nor the names of its
|
|
16
|
+
// contributors may be used to endorse or promote products derived from
|
|
17
|
+
// this software without specific prior written permission.
|
|
18
|
+
//
|
|
19
|
+
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
20
|
+
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
21
|
+
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
22
|
+
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
23
|
+
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
24
|
+
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
25
|
+
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
26
|
+
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
27
|
+
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
28
|
+
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
29
|
+
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
30
|
+
|
|
31
|
+
// Author: kenton@google.com (Kenton Varda)
|
|
32
|
+
// Based on original Protocol Buffers design by
|
|
33
|
+
// Sanjay Ghemawat, Jeff Dean, and others.
|
|
34
|
+
|
|
35
|
+
#include <map>
|
|
36
|
+
#include <string>
|
|
37
|
+
|
|
38
|
+
#include <google/protobuf/compiler/java/java_context.h>
|
|
39
|
+
#include <google/protobuf/compiler/java/java_message_field.h>
|
|
40
|
+
#include <google/protobuf/compiler/java/java_doc_comment.h>
|
|
41
|
+
#include <google/protobuf/compiler/java/java_helpers.h>
|
|
42
|
+
#include <google/protobuf/compiler/java/java_name_resolver.h>
|
|
43
|
+
#include <google/protobuf/io/printer.h>
|
|
44
|
+
#include <google/protobuf/wire_format.h>
|
|
45
|
+
#include <google/protobuf/stubs/strutil.h>
|
|
46
|
+
|
|
47
|
+
namespace google {
|
|
48
|
+
namespace protobuf {
|
|
49
|
+
namespace compiler {
|
|
50
|
+
namespace java {
|
|
51
|
+
|
|
52
|
+
namespace {
|
|
53
|
+
|
|
54
|
+
void SetMessageVariables(const FieldDescriptor* descriptor,
|
|
55
|
+
int messageBitIndex,
|
|
56
|
+
int builderBitIndex,
|
|
57
|
+
const FieldGeneratorInfo* info,
|
|
58
|
+
ClassNameResolver* name_resolver,
|
|
59
|
+
map<string, string>* variables) {
|
|
60
|
+
SetCommonFieldVariables(descriptor, info, variables);
|
|
61
|
+
|
|
62
|
+
(*variables)["type"] =
|
|
63
|
+
name_resolver->GetImmutableClassName(descriptor->message_type());
|
|
64
|
+
(*variables)["mutable_type"] =
|
|
65
|
+
name_resolver->GetMutableClassName(descriptor->message_type());
|
|
66
|
+
(*variables)["group_or_message"] =
|
|
67
|
+
(GetType(descriptor) == FieldDescriptor::TYPE_GROUP) ?
|
|
68
|
+
"Group" : "Message";
|
|
69
|
+
// TODO(birdo): Add @deprecated javadoc when generating javadoc is supported
|
|
70
|
+
// by the proto compiler
|
|
71
|
+
(*variables)["deprecation"] = descriptor->options().deprecated()
|
|
72
|
+
? "@java.lang.Deprecated " : "";
|
|
73
|
+
(*variables)["on_changed"] =
|
|
74
|
+
HasDescriptorMethods(descriptor->containing_type()) ? "onChanged();" : "";
|
|
75
|
+
|
|
76
|
+
if (SupportFieldPresence(descriptor->file())) {
|
|
77
|
+
// For singular messages and builders, one bit is used for the hasField bit.
|
|
78
|
+
(*variables)["get_has_field_bit_message"] = GenerateGetBit(messageBitIndex);
|
|
79
|
+
(*variables)["get_has_field_bit_builder"] = GenerateGetBit(builderBitIndex);
|
|
80
|
+
|
|
81
|
+
// Note that these have a trailing ";".
|
|
82
|
+
(*variables)["set_has_field_bit_message"] =
|
|
83
|
+
GenerateSetBit(messageBitIndex) + ";";
|
|
84
|
+
(*variables)["set_has_field_bit_builder"] =
|
|
85
|
+
GenerateSetBit(builderBitIndex) + ";";
|
|
86
|
+
(*variables)["clear_has_field_bit_builder"] =
|
|
87
|
+
GenerateClearBit(builderBitIndex) + ";";
|
|
88
|
+
|
|
89
|
+
(*variables)["is_field_present_message"] = GenerateGetBit(messageBitIndex);
|
|
90
|
+
} else {
|
|
91
|
+
(*variables)["set_has_field_bit_message"] = "";
|
|
92
|
+
(*variables)["set_has_field_bit_builder"] = "";
|
|
93
|
+
(*variables)["clear_has_field_bit_builder"] = "";
|
|
94
|
+
|
|
95
|
+
(*variables)["is_field_present_message"] =
|
|
96
|
+
(*variables)["name"] + "_ != null";
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// For repated builders, one bit is used for whether the array is immutable.
|
|
100
|
+
(*variables)["get_mutable_bit_builder"] = GenerateGetBit(builderBitIndex);
|
|
101
|
+
(*variables)["set_mutable_bit_builder"] = GenerateSetBit(builderBitIndex);
|
|
102
|
+
(*variables)["clear_mutable_bit_builder"] = GenerateClearBit(builderBitIndex);
|
|
103
|
+
|
|
104
|
+
// For repeated fields, one bit is used for whether the array is immutable
|
|
105
|
+
// in the parsing constructor.
|
|
106
|
+
(*variables)["get_mutable_bit_parser"] =
|
|
107
|
+
GenerateGetBitMutableLocal(builderBitIndex);
|
|
108
|
+
(*variables)["set_mutable_bit_parser"] =
|
|
109
|
+
GenerateSetBitMutableLocal(builderBitIndex);
|
|
110
|
+
|
|
111
|
+
(*variables)["get_has_field_bit_from_local"] =
|
|
112
|
+
GenerateGetBitFromLocal(builderBitIndex);
|
|
113
|
+
(*variables)["set_has_field_bit_to_local"] =
|
|
114
|
+
GenerateSetBitToLocal(messageBitIndex);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
} // namespace
|
|
118
|
+
|
|
119
|
+
// ===================================================================
|
|
120
|
+
|
|
121
|
+
ImmutableMessageFieldGenerator::
|
|
122
|
+
ImmutableMessageFieldGenerator(const FieldDescriptor* descriptor,
|
|
123
|
+
int messageBitIndex,
|
|
124
|
+
int builderBitIndex,
|
|
125
|
+
Context* context)
|
|
126
|
+
: descriptor_(descriptor), messageBitIndex_(messageBitIndex),
|
|
127
|
+
builderBitIndex_(builderBitIndex), context_(context),
|
|
128
|
+
name_resolver_(context->GetNameResolver()) {
|
|
129
|
+
SetMessageVariables(descriptor, messageBitIndex, builderBitIndex,
|
|
130
|
+
context->GetFieldGeneratorInfo(descriptor),
|
|
131
|
+
name_resolver_, &variables_);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
ImmutableMessageFieldGenerator::~ImmutableMessageFieldGenerator() {}
|
|
135
|
+
|
|
136
|
+
int ImmutableMessageFieldGenerator::GetNumBitsForMessage() const {
|
|
137
|
+
return 1;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
int ImmutableMessageFieldGenerator::GetNumBitsForBuilder() const {
|
|
141
|
+
return 1;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
void ImmutableMessageFieldGenerator::
|
|
145
|
+
GenerateInterfaceMembers(io::Printer* printer) const {
|
|
146
|
+
// TODO(jonp): In the future, consider having a method specific to the
|
|
147
|
+
// interface so that builders can choose dynamically to either return a
|
|
148
|
+
// message or a nested builder, so that asking for the interface doesn't
|
|
149
|
+
// cause a message to ever be built.
|
|
150
|
+
if (SupportFieldPresence(descriptor_->file()) ||
|
|
151
|
+
descriptor_->containing_oneof() == NULL) {
|
|
152
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
153
|
+
printer->Print(variables_,
|
|
154
|
+
"$deprecation$boolean has$capitalized_name$();\n");
|
|
155
|
+
}
|
|
156
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
157
|
+
printer->Print(variables_,
|
|
158
|
+
"$deprecation$$type$ get$capitalized_name$();\n");
|
|
159
|
+
|
|
160
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
161
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
162
|
+
printer->Print(variables_,
|
|
163
|
+
"$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder();\n");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
void ImmutableMessageFieldGenerator::
|
|
168
|
+
GenerateMembers(io::Printer* printer) const {
|
|
169
|
+
printer->Print(variables_,
|
|
170
|
+
"private $type$ $name$_;\n");
|
|
171
|
+
PrintExtraFieldInfo(variables_, printer);
|
|
172
|
+
|
|
173
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
174
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
175
|
+
printer->Print(variables_,
|
|
176
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
177
|
+
" return $get_has_field_bit_message$;\n"
|
|
178
|
+
"}\n");
|
|
179
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
180
|
+
printer->Print(variables_,
|
|
181
|
+
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
|
182
|
+
" return $name$_;\n"
|
|
183
|
+
"}\n");
|
|
184
|
+
|
|
185
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
186
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
187
|
+
printer->Print(variables_,
|
|
188
|
+
"$deprecation$public $type$OrBuilder "
|
|
189
|
+
"get$capitalized_name$OrBuilder() {\n"
|
|
190
|
+
" return $name$_;\n"
|
|
191
|
+
"}\n");
|
|
192
|
+
}
|
|
193
|
+
} else {
|
|
194
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
195
|
+
printer->Print(variables_,
|
|
196
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
197
|
+
" return $name$_ != null;\n"
|
|
198
|
+
"}\n");
|
|
199
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
200
|
+
printer->Print(variables_,
|
|
201
|
+
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
|
202
|
+
" return $name$_ == null ? $type$.getDefaultInstance() : $name$_;\n"
|
|
203
|
+
"}\n");
|
|
204
|
+
|
|
205
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
206
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
207
|
+
printer->Print(variables_,
|
|
208
|
+
"$deprecation$public $type$OrBuilder "
|
|
209
|
+
"get$capitalized_name$OrBuilder() {\n"
|
|
210
|
+
" return get$capitalized_name$();\n"
|
|
211
|
+
"}\n");
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
void ImmutableMessageFieldGenerator::PrintNestedBuilderCondition(
|
|
217
|
+
io::Printer* printer,
|
|
218
|
+
const char* regular_case,
|
|
219
|
+
const char* nested_builder_case) const {
|
|
220
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
221
|
+
printer->Print(variables_, "if ($name$Builder_ == null) {\n");
|
|
222
|
+
printer->Indent();
|
|
223
|
+
printer->Print(variables_, regular_case);
|
|
224
|
+
printer->Outdent();
|
|
225
|
+
printer->Print("} else {\n");
|
|
226
|
+
printer->Indent();
|
|
227
|
+
printer->Print(variables_, nested_builder_case);
|
|
228
|
+
printer->Outdent();
|
|
229
|
+
printer->Print("}\n");
|
|
230
|
+
} else {
|
|
231
|
+
printer->Print(variables_, regular_case);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
void ImmutableMessageFieldGenerator::PrintNestedBuilderFunction(
|
|
236
|
+
io::Printer* printer,
|
|
237
|
+
const char* method_prototype,
|
|
238
|
+
const char* regular_case,
|
|
239
|
+
const char* nested_builder_case,
|
|
240
|
+
const char* trailing_code) const {
|
|
241
|
+
printer->Print(variables_, method_prototype);
|
|
242
|
+
printer->Print(" {\n");
|
|
243
|
+
printer->Indent();
|
|
244
|
+
PrintNestedBuilderCondition(printer, regular_case, nested_builder_case);
|
|
245
|
+
if (trailing_code != NULL) {
|
|
246
|
+
printer->Print(variables_, trailing_code);
|
|
247
|
+
}
|
|
248
|
+
printer->Outdent();
|
|
249
|
+
printer->Print("}\n");
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
void ImmutableMessageFieldGenerator::
|
|
253
|
+
GenerateBuilderMembers(io::Printer* printer) const {
|
|
254
|
+
// When using nested-builders, the code initially works just like the
|
|
255
|
+
// non-nested builder case. It only creates a nested builder lazily on
|
|
256
|
+
// demand and then forever delegates to it after creation.
|
|
257
|
+
|
|
258
|
+
bool support_field_presence = SupportFieldPresence(descriptor_->file());
|
|
259
|
+
|
|
260
|
+
if (support_field_presence) {
|
|
261
|
+
printer->Print(variables_,
|
|
262
|
+
// Used when the builder is null.
|
|
263
|
+
"private $type$ $name$_ = $type$.getDefaultInstance();\n");
|
|
264
|
+
} else {
|
|
265
|
+
printer->Print(variables_,
|
|
266
|
+
"private $type$ $name$_ = null;\n");
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
270
|
+
printer->Print(variables_,
|
|
271
|
+
// If this builder is non-null, it is used and the other fields are
|
|
272
|
+
// ignored.
|
|
273
|
+
"private com.google.protobuf.SingleFieldBuilder<\n"
|
|
274
|
+
" $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;"
|
|
275
|
+
"\n");
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// The comments above the methods below are based on a hypothetical
|
|
279
|
+
// field of type "Field" called "Field".
|
|
280
|
+
|
|
281
|
+
// boolean hasField()
|
|
282
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
283
|
+
if (support_field_presence) {
|
|
284
|
+
printer->Print(variables_,
|
|
285
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
286
|
+
" return $get_has_field_bit_builder$;\n"
|
|
287
|
+
"}\n");
|
|
288
|
+
} else {
|
|
289
|
+
printer->Print(variables_,
|
|
290
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
291
|
+
" return $name$Builder_ != null || $name$_ != null;\n"
|
|
292
|
+
"}\n");
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
// Field getField()
|
|
296
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
297
|
+
PrintNestedBuilderFunction(printer,
|
|
298
|
+
"$deprecation$public $type$ get$capitalized_name$()",
|
|
299
|
+
|
|
300
|
+
support_field_presence
|
|
301
|
+
? "return $name$_;\n"
|
|
302
|
+
: "return $name$_ == null ? $type$.getDefaultInstance() : $name$_;\n",
|
|
303
|
+
|
|
304
|
+
"return $name$Builder_.getMessage();\n",
|
|
305
|
+
|
|
306
|
+
NULL);
|
|
307
|
+
|
|
308
|
+
// Field.Builder setField(Field value)
|
|
309
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
310
|
+
PrintNestedBuilderFunction(printer,
|
|
311
|
+
"$deprecation$public Builder set$capitalized_name$($type$ value)",
|
|
312
|
+
|
|
313
|
+
"if (value == null) {\n"
|
|
314
|
+
" throw new NullPointerException();\n"
|
|
315
|
+
"}\n"
|
|
316
|
+
"$name$_ = value;\n"
|
|
317
|
+
"$on_changed$\n",
|
|
318
|
+
|
|
319
|
+
"$name$Builder_.setMessage(value);\n",
|
|
320
|
+
|
|
321
|
+
"$set_has_field_bit_builder$\n"
|
|
322
|
+
"return this;\n");
|
|
323
|
+
|
|
324
|
+
// Field.Builder setField(Field.Builder builderForValue)
|
|
325
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
326
|
+
PrintNestedBuilderFunction(printer,
|
|
327
|
+
"$deprecation$public Builder set$capitalized_name$(\n"
|
|
328
|
+
" $type$.Builder builderForValue)",
|
|
329
|
+
|
|
330
|
+
"$name$_ = builderForValue.build();\n"
|
|
331
|
+
"$on_changed$\n",
|
|
332
|
+
|
|
333
|
+
"$name$Builder_.setMessage(builderForValue.build());\n",
|
|
334
|
+
|
|
335
|
+
"$set_has_field_bit_builder$\n"
|
|
336
|
+
"return this;\n");
|
|
337
|
+
|
|
338
|
+
// Field.Builder mergeField(Field value)
|
|
339
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
340
|
+
PrintNestedBuilderFunction(printer,
|
|
341
|
+
"$deprecation$public Builder merge$capitalized_name$($type$ value)",
|
|
342
|
+
|
|
343
|
+
support_field_presence
|
|
344
|
+
? "if ($get_has_field_bit_builder$ &&\n"
|
|
345
|
+
" $name$_ != $type$.getDefaultInstance()) {\n"
|
|
346
|
+
" $name$_ =\n"
|
|
347
|
+
" $type$.newBuilder($name$_).mergeFrom(value).buildPartial();\n"
|
|
348
|
+
"} else {\n"
|
|
349
|
+
" $name$_ = value;\n"
|
|
350
|
+
"}\n"
|
|
351
|
+
"$on_changed$\n"
|
|
352
|
+
: "if ($name$_ != null) {\n"
|
|
353
|
+
" $name$_ =\n"
|
|
354
|
+
" $type$.newBuilder($name$_).mergeFrom(value).buildPartial();\n"
|
|
355
|
+
"} else {\n"
|
|
356
|
+
" $name$_ = value;\n"
|
|
357
|
+
"}\n"
|
|
358
|
+
"$on_changed$\n",
|
|
359
|
+
|
|
360
|
+
"$name$Builder_.mergeFrom(value);\n",
|
|
361
|
+
|
|
362
|
+
"$set_has_field_bit_builder$\n"
|
|
363
|
+
"return this;\n");
|
|
364
|
+
|
|
365
|
+
// Field.Builder clearField()
|
|
366
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
367
|
+
PrintNestedBuilderFunction(printer,
|
|
368
|
+
"$deprecation$public Builder clear$capitalized_name$()",
|
|
369
|
+
|
|
370
|
+
support_field_presence
|
|
371
|
+
? "$name$_ = $type$.getDefaultInstance();\n"
|
|
372
|
+
"$on_changed$\n"
|
|
373
|
+
: "$name$_ = null;\n"
|
|
374
|
+
"$on_changed$\n",
|
|
375
|
+
|
|
376
|
+
support_field_presence
|
|
377
|
+
? "$name$Builder_.clear();\n"
|
|
378
|
+
: "$name$_ = null;\n"
|
|
379
|
+
"$name$Builder_ = null;\n",
|
|
380
|
+
|
|
381
|
+
"$clear_has_field_bit_builder$\n"
|
|
382
|
+
"return this;\n");
|
|
383
|
+
|
|
384
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
385
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
386
|
+
printer->Print(variables_,
|
|
387
|
+
"$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n"
|
|
388
|
+
" $set_has_field_bit_builder$\n"
|
|
389
|
+
" $on_changed$\n"
|
|
390
|
+
" return get$capitalized_name$FieldBuilder().getBuilder();\n"
|
|
391
|
+
"}\n");
|
|
392
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
393
|
+
printer->Print(variables_,
|
|
394
|
+
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
|
|
395
|
+
" if ($name$Builder_ != null) {\n"
|
|
396
|
+
" return $name$Builder_.getMessageOrBuilder();\n"
|
|
397
|
+
" } else {\n");
|
|
398
|
+
if (support_field_presence) {
|
|
399
|
+
printer->Print(variables_,
|
|
400
|
+
" return $name$_;\n");
|
|
401
|
+
} else {
|
|
402
|
+
printer->Print(variables_,
|
|
403
|
+
" return $name$_ == null ?\n"
|
|
404
|
+
" $type$.getDefaultInstance() : $name$_;\n");
|
|
405
|
+
}
|
|
406
|
+
printer->Print(variables_,
|
|
407
|
+
" }\n"
|
|
408
|
+
"}\n");
|
|
409
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
410
|
+
printer->Print(variables_,
|
|
411
|
+
"private com.google.protobuf.SingleFieldBuilder<\n"
|
|
412
|
+
" $type$, $type$.Builder, $type$OrBuilder> \n"
|
|
413
|
+
" get$capitalized_name$FieldBuilder() {\n"
|
|
414
|
+
" if ($name$Builder_ == null) {\n"
|
|
415
|
+
" $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n"
|
|
416
|
+
" $type$, $type$.Builder, $type$OrBuilder>(\n"
|
|
417
|
+
" get$capitalized_name$(),\n"
|
|
418
|
+
" getParentForChildren(),\n"
|
|
419
|
+
" isClean());\n"
|
|
420
|
+
" $name$_ = null;\n"
|
|
421
|
+
" }\n"
|
|
422
|
+
" return $name$Builder_;\n"
|
|
423
|
+
"}\n");
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
void ImmutableMessageFieldGenerator::
|
|
428
|
+
GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
|
|
429
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
430
|
+
printer->Print(variables_,
|
|
431
|
+
"get$capitalized_name$FieldBuilder();\n");
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
void ImmutableMessageFieldGenerator::
|
|
437
|
+
GenerateInitializationCode(io::Printer* printer) const {
|
|
438
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
439
|
+
printer->Print(variables_, "$name$_ = $type$.getDefaultInstance();\n");
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|
|
443
|
+
void ImmutableMessageFieldGenerator::
|
|
444
|
+
GenerateBuilderClearCode(io::Printer* printer) const {
|
|
445
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
446
|
+
PrintNestedBuilderCondition(printer,
|
|
447
|
+
"$name$_ = $type$.getDefaultInstance();\n",
|
|
448
|
+
|
|
449
|
+
"$name$Builder_.clear();\n");
|
|
450
|
+
printer->Print(variables_, "$clear_has_field_bit_builder$\n");
|
|
451
|
+
} else {
|
|
452
|
+
PrintNestedBuilderCondition(printer,
|
|
453
|
+
"$name$_ = null;\n",
|
|
454
|
+
|
|
455
|
+
"$name$_ = null;\n"
|
|
456
|
+
"$name$Builder_ = null;\n");
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
void ImmutableMessageFieldGenerator::
|
|
461
|
+
GenerateMergingCode(io::Printer* printer) const {
|
|
462
|
+
printer->Print(variables_,
|
|
463
|
+
"if (other.has$capitalized_name$()) {\n"
|
|
464
|
+
" merge$capitalized_name$(other.get$capitalized_name$());\n"
|
|
465
|
+
"}\n");
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
void ImmutableMessageFieldGenerator::
|
|
469
|
+
GenerateBuildingCode(io::Printer* printer) const {
|
|
470
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
471
|
+
printer->Print(variables_,
|
|
472
|
+
"if ($get_has_field_bit_from_local$) {\n"
|
|
473
|
+
" $set_has_field_bit_to_local$;\n"
|
|
474
|
+
"}\n");
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
PrintNestedBuilderCondition(printer,
|
|
478
|
+
"result.$name$_ = $name$_;\n",
|
|
479
|
+
|
|
480
|
+
"result.$name$_ = $name$Builder_.build();\n");
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
void ImmutableMessageFieldGenerator::
|
|
484
|
+
GenerateParsingCode(io::Printer* printer) const {
|
|
485
|
+
printer->Print(variables_,
|
|
486
|
+
"$type$.Builder subBuilder = null;\n"
|
|
487
|
+
"if ($is_field_present_message$) {\n"
|
|
488
|
+
" subBuilder = $name$_.toBuilder();\n"
|
|
489
|
+
"}\n");
|
|
490
|
+
|
|
491
|
+
if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) {
|
|
492
|
+
printer->Print(variables_,
|
|
493
|
+
"$name$_ = input.readGroup($number$, $type$.PARSER,\n"
|
|
494
|
+
" extensionRegistry);\n");
|
|
495
|
+
} else {
|
|
496
|
+
printer->Print(variables_,
|
|
497
|
+
"$name$_ = input.readMessage($type$.PARSER, extensionRegistry);\n");
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
printer->Print(variables_,
|
|
501
|
+
"if (subBuilder != null) {\n"
|
|
502
|
+
" subBuilder.mergeFrom($name$_);\n"
|
|
503
|
+
" $name$_ = subBuilder.buildPartial();\n"
|
|
504
|
+
"}\n"
|
|
505
|
+
"$set_has_field_bit_message$\n");
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
void ImmutableMessageFieldGenerator::
|
|
509
|
+
GenerateParsingDoneCode(io::Printer* printer) const {
|
|
510
|
+
// noop for messages.
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
void ImmutableMessageFieldGenerator::
|
|
514
|
+
GenerateSerializationCode(io::Printer* printer) const {
|
|
515
|
+
printer->Print(variables_,
|
|
516
|
+
"if ($is_field_present_message$) {\n"
|
|
517
|
+
" output.write$group_or_message$($number$, $name$_);\n"
|
|
518
|
+
"}\n");
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
void ImmutableMessageFieldGenerator::
|
|
522
|
+
GenerateSerializedSizeCode(io::Printer* printer) const {
|
|
523
|
+
printer->Print(variables_,
|
|
524
|
+
"if ($is_field_present_message$) {\n"
|
|
525
|
+
" size += com.google.protobuf.CodedOutputStream\n"
|
|
526
|
+
" .compute$group_or_message$Size($number$, $name$_);\n"
|
|
527
|
+
"}\n");
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
void ImmutableMessageFieldGenerator::
|
|
531
|
+
GenerateEqualsCode(io::Printer* printer) const {
|
|
532
|
+
printer->Print(variables_,
|
|
533
|
+
"result = result && get$capitalized_name$()\n"
|
|
534
|
+
" .equals(other.get$capitalized_name$());\n");
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
void ImmutableMessageFieldGenerator::
|
|
538
|
+
GenerateHashCode(io::Printer* printer) const {
|
|
539
|
+
printer->Print(variables_,
|
|
540
|
+
"hash = (37 * hash) + $constant_name$;\n"
|
|
541
|
+
"hash = (53 * hash) + get$capitalized_name$().hashCode();\n");
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
string ImmutableMessageFieldGenerator::GetBoxedType() const {
|
|
545
|
+
return name_resolver_->GetImmutableClassName(descriptor_->message_type());
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
// ===================================================================
|
|
549
|
+
|
|
550
|
+
ImmutableMessageOneofFieldGenerator::
|
|
551
|
+
ImmutableMessageOneofFieldGenerator(const FieldDescriptor* descriptor,
|
|
552
|
+
int messageBitIndex,
|
|
553
|
+
int builderBitIndex,
|
|
554
|
+
Context* context)
|
|
555
|
+
: ImmutableMessageFieldGenerator(
|
|
556
|
+
descriptor, messageBitIndex, builderBitIndex, context) {
|
|
557
|
+
const OneofGeneratorInfo* info =
|
|
558
|
+
context->GetOneofGeneratorInfo(descriptor->containing_oneof());
|
|
559
|
+
SetCommonOneofVariables(descriptor, info, &variables_);
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
ImmutableMessageOneofFieldGenerator::
|
|
563
|
+
~ImmutableMessageOneofFieldGenerator() {}
|
|
564
|
+
|
|
565
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
566
|
+
GenerateMembers(io::Printer* printer) const {
|
|
567
|
+
PrintExtraFieldInfo(variables_, printer);
|
|
568
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
569
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
570
|
+
printer->Print(variables_,
|
|
571
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
572
|
+
" return $has_oneof_case_message$;\n"
|
|
573
|
+
"}\n");
|
|
574
|
+
}
|
|
575
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
576
|
+
printer->Print(variables_,
|
|
577
|
+
"$deprecation$public $type$ get$capitalized_name$() {\n"
|
|
578
|
+
" if ($has_oneof_case_message$) {\n"
|
|
579
|
+
" return ($type$) $oneof_name$_;\n"
|
|
580
|
+
" }\n"
|
|
581
|
+
" return $type$.getDefaultInstance();\n"
|
|
582
|
+
"}\n");
|
|
583
|
+
|
|
584
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
585
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
586
|
+
printer->Print(variables_,
|
|
587
|
+
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
|
|
588
|
+
" if ($has_oneof_case_message$) {\n"
|
|
589
|
+
" return ($type$) $oneof_name$_;\n"
|
|
590
|
+
" }\n"
|
|
591
|
+
" return $type$.getDefaultInstance();\n"
|
|
592
|
+
"}\n");
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
597
|
+
GenerateBuilderMembers(io::Printer* printer) const {
|
|
598
|
+
// When using nested-builders, the code initially works just like the
|
|
599
|
+
// non-nested builder case. It only creates a nested builder lazily on
|
|
600
|
+
// demand and then forever delegates to it after creation.
|
|
601
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
602
|
+
printer->Print(variables_,
|
|
603
|
+
// If this builder is non-null, it is used and the other fields are
|
|
604
|
+
// ignored.
|
|
605
|
+
"private com.google.protobuf.SingleFieldBuilder<\n"
|
|
606
|
+
" $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;"
|
|
607
|
+
"\n");
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
// The comments above the methods below are based on a hypothetical
|
|
611
|
+
// field of type "Field" called "Field".
|
|
612
|
+
|
|
613
|
+
if (SupportFieldPresence(descriptor_->file())) {
|
|
614
|
+
// boolean hasField()
|
|
615
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
616
|
+
printer->Print(variables_,
|
|
617
|
+
"$deprecation$public boolean has$capitalized_name$() {\n"
|
|
618
|
+
" return $has_oneof_case_message$;\n"
|
|
619
|
+
"}\n");
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
// Field getField()
|
|
623
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
624
|
+
PrintNestedBuilderFunction(printer,
|
|
625
|
+
"$deprecation$public $type$ get$capitalized_name$()",
|
|
626
|
+
|
|
627
|
+
"if ($has_oneof_case_message$) {\n"
|
|
628
|
+
" return ($type$) $oneof_name$_;\n"
|
|
629
|
+
"}\n"
|
|
630
|
+
"return $type$.getDefaultInstance();\n",
|
|
631
|
+
|
|
632
|
+
"if ($has_oneof_case_message$) {\n"
|
|
633
|
+
" return $name$Builder_.getMessage();\n"
|
|
634
|
+
"}\n"
|
|
635
|
+
"return $type$.getDefaultInstance();\n",
|
|
636
|
+
|
|
637
|
+
NULL);
|
|
638
|
+
|
|
639
|
+
// Field.Builder setField(Field value)
|
|
640
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
641
|
+
PrintNestedBuilderFunction(printer,
|
|
642
|
+
"$deprecation$public Builder set$capitalized_name$($type$ value)",
|
|
643
|
+
|
|
644
|
+
"if (value == null) {\n"
|
|
645
|
+
" throw new NullPointerException();\n"
|
|
646
|
+
"}\n"
|
|
647
|
+
"$oneof_name$_ = value;\n"
|
|
648
|
+
"$on_changed$\n",
|
|
649
|
+
|
|
650
|
+
"$name$Builder_.setMessage(value);\n",
|
|
651
|
+
|
|
652
|
+
"$set_oneof_case_message$;\n"
|
|
653
|
+
"return this;\n");
|
|
654
|
+
|
|
655
|
+
// Field.Builder setField(Field.Builder builderForValue)
|
|
656
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
657
|
+
PrintNestedBuilderFunction(printer,
|
|
658
|
+
"$deprecation$public Builder set$capitalized_name$(\n"
|
|
659
|
+
" $type$.Builder builderForValue)",
|
|
660
|
+
|
|
661
|
+
"$oneof_name$_ = builderForValue.build();\n"
|
|
662
|
+
"$on_changed$\n",
|
|
663
|
+
|
|
664
|
+
"$name$Builder_.setMessage(builderForValue.build());\n",
|
|
665
|
+
|
|
666
|
+
"$set_oneof_case_message$;\n"
|
|
667
|
+
"return this;\n");
|
|
668
|
+
|
|
669
|
+
// Field.Builder mergeField(Field value)
|
|
670
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
671
|
+
PrintNestedBuilderFunction(printer,
|
|
672
|
+
"$deprecation$public Builder merge$capitalized_name$($type$ value)",
|
|
673
|
+
|
|
674
|
+
"if ($has_oneof_case_message$ &&\n"
|
|
675
|
+
" $oneof_name$_ != $type$.getDefaultInstance()) {\n"
|
|
676
|
+
" $oneof_name$_ = $type$.newBuilder(($type$) $oneof_name$_)\n"
|
|
677
|
+
" .mergeFrom(value).buildPartial();\n"
|
|
678
|
+
"} else {\n"
|
|
679
|
+
" $oneof_name$_ = value;\n"
|
|
680
|
+
"}\n"
|
|
681
|
+
"$on_changed$\n",
|
|
682
|
+
|
|
683
|
+
"if ($has_oneof_case_message$) {\n"
|
|
684
|
+
" $name$Builder_.mergeFrom(value);\n"
|
|
685
|
+
"}\n"
|
|
686
|
+
"$name$Builder_.setMessage(value);\n",
|
|
687
|
+
|
|
688
|
+
"$set_oneof_case_message$;\n"
|
|
689
|
+
"return this;\n");
|
|
690
|
+
|
|
691
|
+
// Field.Builder clearField()
|
|
692
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
693
|
+
PrintNestedBuilderFunction(printer,
|
|
694
|
+
"$deprecation$public Builder clear$capitalized_name$()",
|
|
695
|
+
|
|
696
|
+
"if ($has_oneof_case_message$) {\n"
|
|
697
|
+
" $clear_oneof_case_message$;\n"
|
|
698
|
+
" $oneof_name$_ = null;\n"
|
|
699
|
+
" $on_changed$\n"
|
|
700
|
+
"}\n",
|
|
701
|
+
|
|
702
|
+
"if ($has_oneof_case_message$) {\n"
|
|
703
|
+
" $clear_oneof_case_message$;\n"
|
|
704
|
+
" $oneof_name$_ = null;\n"
|
|
705
|
+
"}\n"
|
|
706
|
+
"$name$Builder_.clear();\n",
|
|
707
|
+
|
|
708
|
+
"return this;\n");
|
|
709
|
+
|
|
710
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
711
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
712
|
+
printer->Print(variables_,
|
|
713
|
+
"$deprecation$public $type$.Builder get$capitalized_name$Builder() {\n"
|
|
714
|
+
" return get$capitalized_name$FieldBuilder().getBuilder();\n"
|
|
715
|
+
"}\n");
|
|
716
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
717
|
+
printer->Print(variables_,
|
|
718
|
+
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder() {\n"
|
|
719
|
+
" if (($has_oneof_case_message$) && ($name$Builder_ != null)) {\n"
|
|
720
|
+
" return $name$Builder_.getMessageOrBuilder();\n"
|
|
721
|
+
" } else {\n"
|
|
722
|
+
" if ($has_oneof_case_message$) {\n"
|
|
723
|
+
" return ($type$) $oneof_name$_;\n"
|
|
724
|
+
" }\n"
|
|
725
|
+
" return $type$.getDefaultInstance();\n"
|
|
726
|
+
" }\n"
|
|
727
|
+
"}\n");
|
|
728
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
729
|
+
printer->Print(variables_,
|
|
730
|
+
"private com.google.protobuf.SingleFieldBuilder<\n"
|
|
731
|
+
" $type$, $type$.Builder, $type$OrBuilder> \n"
|
|
732
|
+
" get$capitalized_name$FieldBuilder() {\n"
|
|
733
|
+
" if ($name$Builder_ == null) {\n"
|
|
734
|
+
" if (!($has_oneof_case_message$)) {\n"
|
|
735
|
+
" $oneof_name$_ = $type$.getDefaultInstance();\n"
|
|
736
|
+
" }\n"
|
|
737
|
+
" $name$Builder_ = new com.google.protobuf.SingleFieldBuilder<\n"
|
|
738
|
+
" $type$, $type$.Builder, $type$OrBuilder>(\n"
|
|
739
|
+
" ($type$) $oneof_name$_,\n"
|
|
740
|
+
" getParentForChildren(),\n"
|
|
741
|
+
" isClean());\n"
|
|
742
|
+
" $oneof_name$_ = null;\n"
|
|
743
|
+
" }\n"
|
|
744
|
+
" $set_oneof_case_message$;\n"
|
|
745
|
+
" return $name$Builder_;\n"
|
|
746
|
+
"}\n");
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
|
|
750
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
751
|
+
GenerateBuildingCode(io::Printer* printer) const {
|
|
752
|
+
|
|
753
|
+
printer->Print(variables_,
|
|
754
|
+
"if ($has_oneof_case_message$) {\n");
|
|
755
|
+
printer->Indent();
|
|
756
|
+
|
|
757
|
+
PrintNestedBuilderCondition(printer,
|
|
758
|
+
"result.$oneof_name$_ = $oneof_name$_;\n",
|
|
759
|
+
|
|
760
|
+
"result.$oneof_name$_ = $name$Builder_.build();\n");
|
|
761
|
+
|
|
762
|
+
printer->Outdent();
|
|
763
|
+
printer->Print("}\n");
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
767
|
+
GenerateMergingCode(io::Printer* printer) const {
|
|
768
|
+
printer->Print(variables_,
|
|
769
|
+
"merge$capitalized_name$(other.get$capitalized_name$());\n");
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
773
|
+
GenerateParsingCode(io::Printer* printer) const {
|
|
774
|
+
printer->Print(variables_,
|
|
775
|
+
"$type$.Builder subBuilder = null;\n"
|
|
776
|
+
"if ($has_oneof_case_message$) {\n"
|
|
777
|
+
" subBuilder = (($type$) $oneof_name$_).toBuilder();\n"
|
|
778
|
+
"}\n");
|
|
779
|
+
|
|
780
|
+
if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) {
|
|
781
|
+
printer->Print(variables_,
|
|
782
|
+
"$oneof_name$_ = input.readGroup($number$, $type$.PARSER,\n"
|
|
783
|
+
" extensionRegistry);\n");
|
|
784
|
+
} else {
|
|
785
|
+
printer->Print(variables_,
|
|
786
|
+
"$oneof_name$_ = input.readMessage($type$.PARSER, extensionRegistry);\n");
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
printer->Print(variables_,
|
|
790
|
+
"if (subBuilder != null) {\n"
|
|
791
|
+
" subBuilder.mergeFrom(($type$) $oneof_name$_);\n"
|
|
792
|
+
" $oneof_name$_ = subBuilder.buildPartial();\n"
|
|
793
|
+
"}\n");
|
|
794
|
+
printer->Print(variables_,
|
|
795
|
+
"$set_oneof_case_message$;\n");
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
799
|
+
GenerateSerializationCode(io::Printer* printer) const {
|
|
800
|
+
printer->Print(variables_,
|
|
801
|
+
"if ($has_oneof_case_message$) {\n"
|
|
802
|
+
" output.write$group_or_message$($number$, ($type$) $oneof_name$_);\n"
|
|
803
|
+
"}\n");
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
void ImmutableMessageOneofFieldGenerator::
|
|
807
|
+
GenerateSerializedSizeCode(io::Printer* printer) const {
|
|
808
|
+
printer->Print(variables_,
|
|
809
|
+
"if ($has_oneof_case_message$) {\n"
|
|
810
|
+
" size += com.google.protobuf.CodedOutputStream\n"
|
|
811
|
+
" .compute$group_or_message$Size($number$, ($type$) $oneof_name$_);\n"
|
|
812
|
+
"}\n");
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
// ===================================================================
|
|
816
|
+
|
|
817
|
+
RepeatedImmutableMessageFieldGenerator::
|
|
818
|
+
RepeatedImmutableMessageFieldGenerator(const FieldDescriptor* descriptor,
|
|
819
|
+
int messageBitIndex,
|
|
820
|
+
int builderBitIndex,
|
|
821
|
+
Context* context)
|
|
822
|
+
: descriptor_(descriptor), messageBitIndex_(messageBitIndex),
|
|
823
|
+
builderBitIndex_(builderBitIndex), context_(context),
|
|
824
|
+
name_resolver_(context->GetNameResolver()) {
|
|
825
|
+
SetMessageVariables(descriptor, messageBitIndex, builderBitIndex,
|
|
826
|
+
context->GetFieldGeneratorInfo(descriptor),
|
|
827
|
+
name_resolver_, &variables_);
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
RepeatedImmutableMessageFieldGenerator::
|
|
831
|
+
~RepeatedImmutableMessageFieldGenerator() {}
|
|
832
|
+
|
|
833
|
+
int RepeatedImmutableMessageFieldGenerator::GetNumBitsForMessage() const {
|
|
834
|
+
return 0;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
int RepeatedImmutableMessageFieldGenerator::GetNumBitsForBuilder() const {
|
|
838
|
+
return 1;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
842
|
+
GenerateInterfaceMembers(io::Printer* printer) const {
|
|
843
|
+
// TODO(jonp): In the future, consider having methods specific to the
|
|
844
|
+
// interface so that builders can choose dynamically to either return a
|
|
845
|
+
// message or a nested builder, so that asking for the interface doesn't
|
|
846
|
+
// cause a message to ever be built.
|
|
847
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
848
|
+
printer->Print(variables_,
|
|
849
|
+
"$deprecation$java.util.List<$type$> \n"
|
|
850
|
+
" get$capitalized_name$List();\n");
|
|
851
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
852
|
+
printer->Print(variables_,
|
|
853
|
+
"$deprecation$$type$ get$capitalized_name$(int index);\n");
|
|
854
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
855
|
+
printer->Print(variables_,
|
|
856
|
+
"$deprecation$int get$capitalized_name$Count();\n");
|
|
857
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
858
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
859
|
+
printer->Print(variables_,
|
|
860
|
+
"$deprecation$java.util.List<? extends $type$OrBuilder> \n"
|
|
861
|
+
" get$capitalized_name$OrBuilderList();\n");
|
|
862
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
863
|
+
printer->Print(variables_,
|
|
864
|
+
"$deprecation$$type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
|
865
|
+
" int index);\n");
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
|
|
869
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
870
|
+
GenerateMembers(io::Printer* printer) const {
|
|
871
|
+
printer->Print(variables_,
|
|
872
|
+
"private java.util.List<$type$> $name$_;\n");
|
|
873
|
+
PrintExtraFieldInfo(variables_, printer);
|
|
874
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
875
|
+
printer->Print(variables_,
|
|
876
|
+
"$deprecation$public java.util.List<$type$> get$capitalized_name$List() {\n"
|
|
877
|
+
" return $name$_;\n" // note: unmodifiable list
|
|
878
|
+
"}\n");
|
|
879
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
880
|
+
printer->Print(variables_,
|
|
881
|
+
"$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
|
|
882
|
+
" get$capitalized_name$OrBuilderList() {\n"
|
|
883
|
+
" return $name$_;\n"
|
|
884
|
+
"}\n");
|
|
885
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
886
|
+
printer->Print(variables_,
|
|
887
|
+
"$deprecation$public int get$capitalized_name$Count() {\n"
|
|
888
|
+
" return $name$_.size();\n"
|
|
889
|
+
"}\n");
|
|
890
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
891
|
+
printer->Print(variables_,
|
|
892
|
+
"$deprecation$public $type$ get$capitalized_name$(int index) {\n"
|
|
893
|
+
" return $name$_.get(index);\n"
|
|
894
|
+
"}\n");
|
|
895
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
896
|
+
printer->Print(variables_,
|
|
897
|
+
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
|
898
|
+
" int index) {\n"
|
|
899
|
+
" return $name$_.get(index);\n"
|
|
900
|
+
"}\n");
|
|
901
|
+
|
|
902
|
+
}
|
|
903
|
+
|
|
904
|
+
void RepeatedImmutableMessageFieldGenerator::PrintNestedBuilderCondition(
|
|
905
|
+
io::Printer* printer,
|
|
906
|
+
const char* regular_case,
|
|
907
|
+
const char* nested_builder_case) const {
|
|
908
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
909
|
+
printer->Print(variables_, "if ($name$Builder_ == null) {\n");
|
|
910
|
+
printer->Indent();
|
|
911
|
+
printer->Print(variables_, regular_case);
|
|
912
|
+
printer->Outdent();
|
|
913
|
+
printer->Print("} else {\n");
|
|
914
|
+
printer->Indent();
|
|
915
|
+
printer->Print(variables_, nested_builder_case);
|
|
916
|
+
printer->Outdent();
|
|
917
|
+
printer->Print("}\n");
|
|
918
|
+
} else {
|
|
919
|
+
printer->Print(variables_, regular_case);
|
|
920
|
+
}
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
void RepeatedImmutableMessageFieldGenerator::PrintNestedBuilderFunction(
|
|
924
|
+
io::Printer* printer,
|
|
925
|
+
const char* method_prototype,
|
|
926
|
+
const char* regular_case,
|
|
927
|
+
const char* nested_builder_case,
|
|
928
|
+
const char* trailing_code) const {
|
|
929
|
+
printer->Print(variables_, method_prototype);
|
|
930
|
+
printer->Print(" {\n");
|
|
931
|
+
printer->Indent();
|
|
932
|
+
PrintNestedBuilderCondition(printer, regular_case, nested_builder_case);
|
|
933
|
+
if (trailing_code != NULL) {
|
|
934
|
+
printer->Print(variables_, trailing_code);
|
|
935
|
+
}
|
|
936
|
+
printer->Outdent();
|
|
937
|
+
printer->Print("}\n");
|
|
938
|
+
}
|
|
939
|
+
|
|
940
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
941
|
+
GenerateBuilderMembers(io::Printer* printer) const {
|
|
942
|
+
// When using nested-builders, the code initially works just like the
|
|
943
|
+
// non-nested builder case. It only creates a nested builder lazily on
|
|
944
|
+
// demand and then forever delegates to it after creation.
|
|
945
|
+
|
|
946
|
+
printer->Print(variables_,
|
|
947
|
+
// Used when the builder is null.
|
|
948
|
+
// One field is the list and the other field keeps track of whether the
|
|
949
|
+
// list is immutable. If it's immutable, the invariant is that it must
|
|
950
|
+
// either an instance of Collections.emptyList() or it's an ArrayList
|
|
951
|
+
// wrapped in a Collections.unmodifiableList() wrapper and nobody else has
|
|
952
|
+
// a refererence to the underlying ArrayList. This invariant allows us to
|
|
953
|
+
// share instances of lists between protocol buffers avoiding expensive
|
|
954
|
+
// memory allocations. Note, immutable is a strong guarantee here -- not
|
|
955
|
+
// just that the list cannot be modified via the reference but that the
|
|
956
|
+
// list can never be modified.
|
|
957
|
+
"private java.util.List<$type$> $name$_ =\n"
|
|
958
|
+
" java.util.Collections.emptyList();\n"
|
|
959
|
+
|
|
960
|
+
"private void ensure$capitalized_name$IsMutable() {\n"
|
|
961
|
+
" if (!$get_mutable_bit_builder$) {\n"
|
|
962
|
+
" $name$_ = new java.util.ArrayList<$type$>($name$_);\n"
|
|
963
|
+
" $set_mutable_bit_builder$;\n"
|
|
964
|
+
" }\n"
|
|
965
|
+
"}\n"
|
|
966
|
+
"\n");
|
|
967
|
+
|
|
968
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
969
|
+
printer->Print(variables_,
|
|
970
|
+
// If this builder is non-null, it is used and the other fields are
|
|
971
|
+
// ignored.
|
|
972
|
+
"private com.google.protobuf.RepeatedFieldBuilder<\n"
|
|
973
|
+
" $type$, $type$.Builder, $type$OrBuilder> $name$Builder_;\n"
|
|
974
|
+
"\n");
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
// The comments above the methods below are based on a hypothetical
|
|
978
|
+
// repeated field of type "Field" called "RepeatedField".
|
|
979
|
+
|
|
980
|
+
// List<Field> getRepeatedFieldList()
|
|
981
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
982
|
+
PrintNestedBuilderFunction(printer,
|
|
983
|
+
"$deprecation$public java.util.List<$type$> get$capitalized_name$List()",
|
|
984
|
+
|
|
985
|
+
"return java.util.Collections.unmodifiableList($name$_);\n",
|
|
986
|
+
"return $name$Builder_.getMessageList();\n",
|
|
987
|
+
|
|
988
|
+
NULL);
|
|
989
|
+
|
|
990
|
+
// int getRepeatedFieldCount()
|
|
991
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
992
|
+
PrintNestedBuilderFunction(printer,
|
|
993
|
+
"$deprecation$public int get$capitalized_name$Count()",
|
|
994
|
+
|
|
995
|
+
"return $name$_.size();\n",
|
|
996
|
+
"return $name$Builder_.getCount();\n",
|
|
997
|
+
|
|
998
|
+
NULL);
|
|
999
|
+
|
|
1000
|
+
// Field getRepeatedField(int index)
|
|
1001
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1002
|
+
PrintNestedBuilderFunction(printer,
|
|
1003
|
+
"$deprecation$public $type$ get$capitalized_name$(int index)",
|
|
1004
|
+
|
|
1005
|
+
"return $name$_.get(index);\n",
|
|
1006
|
+
|
|
1007
|
+
"return $name$Builder_.getMessage(index);\n",
|
|
1008
|
+
|
|
1009
|
+
NULL);
|
|
1010
|
+
|
|
1011
|
+
// Builder setRepeatedField(int index, Field value)
|
|
1012
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1013
|
+
PrintNestedBuilderFunction(printer,
|
|
1014
|
+
"$deprecation$public Builder set$capitalized_name$(\n"
|
|
1015
|
+
" int index, $type$ value)",
|
|
1016
|
+
"if (value == null) {\n"
|
|
1017
|
+
" throw new NullPointerException();\n"
|
|
1018
|
+
"}\n"
|
|
1019
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1020
|
+
"$name$_.set(index, value);\n"
|
|
1021
|
+
"$on_changed$\n",
|
|
1022
|
+
"$name$Builder_.setMessage(index, value);\n",
|
|
1023
|
+
"return this;\n");
|
|
1024
|
+
|
|
1025
|
+
// Builder setRepeatedField(int index, Field.Builder builderForValue)
|
|
1026
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1027
|
+
PrintNestedBuilderFunction(printer,
|
|
1028
|
+
"$deprecation$public Builder set$capitalized_name$(\n"
|
|
1029
|
+
" int index, $type$.Builder builderForValue)",
|
|
1030
|
+
|
|
1031
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1032
|
+
"$name$_.set(index, builderForValue.build());\n"
|
|
1033
|
+
"$on_changed$\n",
|
|
1034
|
+
|
|
1035
|
+
"$name$Builder_.setMessage(index, builderForValue.build());\n",
|
|
1036
|
+
|
|
1037
|
+
"return this;\n");
|
|
1038
|
+
|
|
1039
|
+
// Builder addRepeatedField(Field value)
|
|
1040
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1041
|
+
PrintNestedBuilderFunction(printer,
|
|
1042
|
+
"$deprecation$public Builder add$capitalized_name$($type$ value)",
|
|
1043
|
+
|
|
1044
|
+
"if (value == null) {\n"
|
|
1045
|
+
" throw new NullPointerException();\n"
|
|
1046
|
+
"}\n"
|
|
1047
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1048
|
+
"$name$_.add(value);\n"
|
|
1049
|
+
|
|
1050
|
+
"$on_changed$\n",
|
|
1051
|
+
|
|
1052
|
+
"$name$Builder_.addMessage(value);\n",
|
|
1053
|
+
|
|
1054
|
+
"return this;\n");
|
|
1055
|
+
|
|
1056
|
+
// Builder addRepeatedField(int index, Field value)
|
|
1057
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1058
|
+
PrintNestedBuilderFunction(printer,
|
|
1059
|
+
"$deprecation$public Builder add$capitalized_name$(\n"
|
|
1060
|
+
" int index, $type$ value)",
|
|
1061
|
+
|
|
1062
|
+
"if (value == null) {\n"
|
|
1063
|
+
" throw new NullPointerException();\n"
|
|
1064
|
+
"}\n"
|
|
1065
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1066
|
+
"$name$_.add(index, value);\n"
|
|
1067
|
+
"$on_changed$\n",
|
|
1068
|
+
|
|
1069
|
+
"$name$Builder_.addMessage(index, value);\n",
|
|
1070
|
+
|
|
1071
|
+
"return this;\n");
|
|
1072
|
+
|
|
1073
|
+
// Builder addRepeatedField(Field.Builder builderForValue)
|
|
1074
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1075
|
+
PrintNestedBuilderFunction(printer,
|
|
1076
|
+
"$deprecation$public Builder add$capitalized_name$(\n"
|
|
1077
|
+
" $type$.Builder builderForValue)",
|
|
1078
|
+
|
|
1079
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1080
|
+
"$name$_.add(builderForValue.build());\n"
|
|
1081
|
+
"$on_changed$\n",
|
|
1082
|
+
|
|
1083
|
+
"$name$Builder_.addMessage(builderForValue.build());\n",
|
|
1084
|
+
|
|
1085
|
+
"return this;\n");
|
|
1086
|
+
|
|
1087
|
+
// Builder addRepeatedField(int index, Field.Builder builderForValue)
|
|
1088
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1089
|
+
PrintNestedBuilderFunction(printer,
|
|
1090
|
+
"$deprecation$public Builder add$capitalized_name$(\n"
|
|
1091
|
+
" int index, $type$.Builder builderForValue)",
|
|
1092
|
+
|
|
1093
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1094
|
+
"$name$_.add(index, builderForValue.build());\n"
|
|
1095
|
+
"$on_changed$\n",
|
|
1096
|
+
|
|
1097
|
+
"$name$Builder_.addMessage(index, builderForValue.build());\n",
|
|
1098
|
+
|
|
1099
|
+
"return this;\n");
|
|
1100
|
+
|
|
1101
|
+
// Builder addAllRepeatedField(Iterable<Field> values)
|
|
1102
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1103
|
+
PrintNestedBuilderFunction(printer,
|
|
1104
|
+
"$deprecation$public Builder addAll$capitalized_name$(\n"
|
|
1105
|
+
" java.lang.Iterable<? extends $type$> values)",
|
|
1106
|
+
|
|
1107
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1108
|
+
"com.google.protobuf.AbstractMessageLite.Builder.addAll(\n"
|
|
1109
|
+
" values, $name$_);\n"
|
|
1110
|
+
"$on_changed$\n",
|
|
1111
|
+
|
|
1112
|
+
"$name$Builder_.addAllMessages(values);\n",
|
|
1113
|
+
|
|
1114
|
+
"return this;\n");
|
|
1115
|
+
|
|
1116
|
+
// Builder clearAllRepeatedField()
|
|
1117
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1118
|
+
PrintNestedBuilderFunction(printer,
|
|
1119
|
+
"$deprecation$public Builder clear$capitalized_name$()",
|
|
1120
|
+
|
|
1121
|
+
"$name$_ = java.util.Collections.emptyList();\n"
|
|
1122
|
+
"$clear_mutable_bit_builder$;\n"
|
|
1123
|
+
"$on_changed$\n",
|
|
1124
|
+
|
|
1125
|
+
"$name$Builder_.clear();\n",
|
|
1126
|
+
|
|
1127
|
+
"return this;\n");
|
|
1128
|
+
|
|
1129
|
+
// Builder removeRepeatedField(int index)
|
|
1130
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1131
|
+
PrintNestedBuilderFunction(printer,
|
|
1132
|
+
"$deprecation$public Builder remove$capitalized_name$(int index)",
|
|
1133
|
+
|
|
1134
|
+
"ensure$capitalized_name$IsMutable();\n"
|
|
1135
|
+
"$name$_.remove(index);\n"
|
|
1136
|
+
"$on_changed$\n",
|
|
1137
|
+
|
|
1138
|
+
"$name$Builder_.remove(index);\n",
|
|
1139
|
+
|
|
1140
|
+
"return this;\n");
|
|
1141
|
+
|
|
1142
|
+
if (HasNestedBuilders(descriptor_->containing_type())) {
|
|
1143
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1144
|
+
printer->Print(variables_,
|
|
1145
|
+
"$deprecation$public $type$.Builder get$capitalized_name$Builder(\n"
|
|
1146
|
+
" int index) {\n"
|
|
1147
|
+
" return get$capitalized_name$FieldBuilder().getBuilder(index);\n"
|
|
1148
|
+
"}\n");
|
|
1149
|
+
|
|
1150
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1151
|
+
printer->Print(variables_,
|
|
1152
|
+
"$deprecation$public $type$OrBuilder get$capitalized_name$OrBuilder(\n"
|
|
1153
|
+
" int index) {\n"
|
|
1154
|
+
" if ($name$Builder_ == null) {\n"
|
|
1155
|
+
" return $name$_.get(index);"
|
|
1156
|
+
" } else {\n"
|
|
1157
|
+
" return $name$Builder_.getMessageOrBuilder(index);\n"
|
|
1158
|
+
" }\n"
|
|
1159
|
+
"}\n");
|
|
1160
|
+
|
|
1161
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1162
|
+
printer->Print(variables_,
|
|
1163
|
+
"$deprecation$public java.util.List<? extends $type$OrBuilder> \n"
|
|
1164
|
+
" get$capitalized_name$OrBuilderList() {\n"
|
|
1165
|
+
" if ($name$Builder_ != null) {\n"
|
|
1166
|
+
" return $name$Builder_.getMessageOrBuilderList();\n"
|
|
1167
|
+
" } else {\n"
|
|
1168
|
+
" return java.util.Collections.unmodifiableList($name$_);\n"
|
|
1169
|
+
" }\n"
|
|
1170
|
+
"}\n");
|
|
1171
|
+
|
|
1172
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1173
|
+
printer->Print(variables_,
|
|
1174
|
+
"$deprecation$public $type$.Builder add$capitalized_name$Builder() {\n"
|
|
1175
|
+
" return get$capitalized_name$FieldBuilder().addBuilder(\n"
|
|
1176
|
+
" $type$.getDefaultInstance());\n"
|
|
1177
|
+
"}\n");
|
|
1178
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1179
|
+
printer->Print(variables_,
|
|
1180
|
+
"$deprecation$public $type$.Builder add$capitalized_name$Builder(\n"
|
|
1181
|
+
" int index) {\n"
|
|
1182
|
+
" return get$capitalized_name$FieldBuilder().addBuilder(\n"
|
|
1183
|
+
" index, $type$.getDefaultInstance());\n"
|
|
1184
|
+
"}\n");
|
|
1185
|
+
WriteFieldDocComment(printer, descriptor_);
|
|
1186
|
+
printer->Print(variables_,
|
|
1187
|
+
"$deprecation$public java.util.List<$type$.Builder> \n"
|
|
1188
|
+
" get$capitalized_name$BuilderList() {\n"
|
|
1189
|
+
" return get$capitalized_name$FieldBuilder().getBuilderList();\n"
|
|
1190
|
+
"}\n"
|
|
1191
|
+
"private com.google.protobuf.RepeatedFieldBuilder<\n"
|
|
1192
|
+
" $type$, $type$.Builder, $type$OrBuilder> \n"
|
|
1193
|
+
" get$capitalized_name$FieldBuilder() {\n"
|
|
1194
|
+
" if ($name$Builder_ == null) {\n"
|
|
1195
|
+
" $name$Builder_ = new com.google.protobuf.RepeatedFieldBuilder<\n"
|
|
1196
|
+
" $type$, $type$.Builder, $type$OrBuilder>(\n"
|
|
1197
|
+
" $name$_,\n"
|
|
1198
|
+
" $get_mutable_bit_builder$,\n"
|
|
1199
|
+
" getParentForChildren(),\n"
|
|
1200
|
+
" isClean());\n"
|
|
1201
|
+
" $name$_ = null;\n"
|
|
1202
|
+
" }\n"
|
|
1203
|
+
" return $name$Builder_;\n"
|
|
1204
|
+
"}\n");
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1207
|
+
|
|
1208
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1209
|
+
GenerateFieldBuilderInitializationCode(io::Printer* printer) const {
|
|
1210
|
+
printer->Print(variables_,
|
|
1211
|
+
"get$capitalized_name$FieldBuilder();\n");
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1215
|
+
GenerateInitializationCode(io::Printer* printer) const {
|
|
1216
|
+
printer->Print(variables_, "$name$_ = java.util.Collections.emptyList();\n");
|
|
1217
|
+
}
|
|
1218
|
+
|
|
1219
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1220
|
+
GenerateBuilderClearCode(io::Printer* printer) const {
|
|
1221
|
+
PrintNestedBuilderCondition(printer,
|
|
1222
|
+
"$name$_ = java.util.Collections.emptyList();\n"
|
|
1223
|
+
"$clear_mutable_bit_builder$;\n",
|
|
1224
|
+
|
|
1225
|
+
"$name$Builder_.clear();\n");
|
|
1226
|
+
}
|
|
1227
|
+
|
|
1228
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1229
|
+
GenerateMergingCode(io::Printer* printer) const {
|
|
1230
|
+
// The code below does two optimizations (non-nested builder case):
|
|
1231
|
+
// 1. If the other list is empty, there's nothing to do. This ensures we
|
|
1232
|
+
// don't allocate a new array if we already have an immutable one.
|
|
1233
|
+
// 2. If the other list is non-empty and our current list is empty, we can
|
|
1234
|
+
// reuse the other list which is guaranteed to be immutable.
|
|
1235
|
+
PrintNestedBuilderCondition(printer,
|
|
1236
|
+
"if (!other.$name$_.isEmpty()) {\n"
|
|
1237
|
+
" if ($name$_.isEmpty()) {\n"
|
|
1238
|
+
" $name$_ = other.$name$_;\n"
|
|
1239
|
+
" $clear_mutable_bit_builder$;\n"
|
|
1240
|
+
" } else {\n"
|
|
1241
|
+
" ensure$capitalized_name$IsMutable();\n"
|
|
1242
|
+
" $name$_.addAll(other.$name$_);\n"
|
|
1243
|
+
" }\n"
|
|
1244
|
+
" $on_changed$\n"
|
|
1245
|
+
"}\n",
|
|
1246
|
+
|
|
1247
|
+
"if (!other.$name$_.isEmpty()) {\n"
|
|
1248
|
+
" if ($name$Builder_.isEmpty()) {\n"
|
|
1249
|
+
" $name$Builder_.dispose();\n"
|
|
1250
|
+
" $name$Builder_ = null;\n"
|
|
1251
|
+
" $name$_ = other.$name$_;\n"
|
|
1252
|
+
" $clear_mutable_bit_builder$;\n"
|
|
1253
|
+
" $name$Builder_ = \n"
|
|
1254
|
+
" com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?\n"
|
|
1255
|
+
" get$capitalized_name$FieldBuilder() : null;\n"
|
|
1256
|
+
" } else {\n"
|
|
1257
|
+
" $name$Builder_.addAllMessages(other.$name$_);\n"
|
|
1258
|
+
" }\n"
|
|
1259
|
+
"}\n");
|
|
1260
|
+
}
|
|
1261
|
+
|
|
1262
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1263
|
+
GenerateBuildingCode(io::Printer* printer) const {
|
|
1264
|
+
// The code below (non-nested builder case) ensures that the result has an
|
|
1265
|
+
// immutable list. If our list is immutable, we can just reuse it. If not,
|
|
1266
|
+
// we make it immutable.
|
|
1267
|
+
PrintNestedBuilderCondition(printer,
|
|
1268
|
+
"if ($get_mutable_bit_builder$) {\n"
|
|
1269
|
+
" $name$_ = java.util.Collections.unmodifiableList($name$_);\n"
|
|
1270
|
+
" $clear_mutable_bit_builder$;\n"
|
|
1271
|
+
"}\n"
|
|
1272
|
+
"result.$name$_ = $name$_;\n",
|
|
1273
|
+
|
|
1274
|
+
"result.$name$_ = $name$Builder_.build();\n");
|
|
1275
|
+
}
|
|
1276
|
+
|
|
1277
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1278
|
+
GenerateParsingCode(io::Printer* printer) const {
|
|
1279
|
+
printer->Print(variables_,
|
|
1280
|
+
"if (!$get_mutable_bit_parser$) {\n"
|
|
1281
|
+
" $name$_ = new java.util.ArrayList<$type$>();\n"
|
|
1282
|
+
" $set_mutable_bit_parser$;\n"
|
|
1283
|
+
"}\n");
|
|
1284
|
+
|
|
1285
|
+
if (GetType(descriptor_) == FieldDescriptor::TYPE_GROUP) {
|
|
1286
|
+
printer->Print(variables_,
|
|
1287
|
+
"$name$_.add(input.readGroup($number$, $type$.PARSER,\n"
|
|
1288
|
+
" extensionRegistry));\n");
|
|
1289
|
+
} else {
|
|
1290
|
+
printer->Print(variables_,
|
|
1291
|
+
"$name$_.add(input.readMessage($type$.PARSER, extensionRegistry));\n");
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1296
|
+
GenerateParsingDoneCode(io::Printer* printer) const {
|
|
1297
|
+
printer->Print(variables_,
|
|
1298
|
+
"if ($get_mutable_bit_parser$) {\n"
|
|
1299
|
+
" $name$_ = java.util.Collections.unmodifiableList($name$_);\n"
|
|
1300
|
+
"}\n");
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1304
|
+
GenerateSerializationCode(io::Printer* printer) const {
|
|
1305
|
+
printer->Print(variables_,
|
|
1306
|
+
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
|
1307
|
+
" output.write$group_or_message$($number$, $name$_.get(i));\n"
|
|
1308
|
+
"}\n");
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1312
|
+
GenerateSerializedSizeCode(io::Printer* printer) const {
|
|
1313
|
+
printer->Print(variables_,
|
|
1314
|
+
"for (int i = 0; i < $name$_.size(); i++) {\n"
|
|
1315
|
+
" size += com.google.protobuf.CodedOutputStream\n"
|
|
1316
|
+
" .compute$group_or_message$Size($number$, $name$_.get(i));\n"
|
|
1317
|
+
"}\n");
|
|
1318
|
+
}
|
|
1319
|
+
|
|
1320
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1321
|
+
GenerateEqualsCode(io::Printer* printer) const {
|
|
1322
|
+
printer->Print(variables_,
|
|
1323
|
+
"result = result && get$capitalized_name$List()\n"
|
|
1324
|
+
" .equals(other.get$capitalized_name$List());\n");
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
void RepeatedImmutableMessageFieldGenerator::
|
|
1328
|
+
GenerateHashCode(io::Printer* printer) const {
|
|
1329
|
+
printer->Print(variables_,
|
|
1330
|
+
"if (get$capitalized_name$Count() > 0) {\n"
|
|
1331
|
+
" hash = (37 * hash) + $constant_name$;\n"
|
|
1332
|
+
" hash = (53 * hash) + get$capitalized_name$List().hashCode();\n"
|
|
1333
|
+
"}\n");
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
string RepeatedImmutableMessageFieldGenerator::GetBoxedType() const {
|
|
1337
|
+
return name_resolver_->GetImmutableClassName(descriptor_->message_type());
|
|
1338
|
+
}
|
|
1339
|
+
|
|
1340
|
+
} // namespace java
|
|
1341
|
+
} // namespace compiler
|
|
1342
|
+
} // namespace protobuf
|
|
1343
|
+
} // namespace google
|